@sprig-technologies/sprig-bundled 1.1.7 → 1.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-MkVSshrN.cjs","sources":["../../node_modules/@mux/upchunk/dist/upchunk.mjs","../../node_modules/@rrweb/record/dist/record.js","../../src/constants/sprigEvents.ts","../../node_modules/uuid/dist/esm-browser/rng.js","../../node_modules/uuid/dist/esm-browser/stringify.js","../../node_modules/uuid/dist/esm-browser/native.js","../../node_modules/uuid/dist/esm-browser/v4.js","../../src/helpers/BreadcrumbsLogger.ts","../../src/helpers/conflicting_widgets/intercom.ts","../../src/helpers/conflicting_widgets/index.ts","../../node_modules/strict-event-emitter/lib/index.mjs","../../src/helpers/eventEmitter.ts","../../src/helpers/general.ts","../../src/helpers/Deferred.ts","../../src/modules/moduleRegistry.ts","../../src/helpers/network.ts","../../src/controller/shared.ts","../../src/constants/css.ts","../../src/controller/iframe.ts","../../src/controller/constants.ts","../../src/controller/urlMatcher.ts","../../src/helpers/typeguards.ts","../../src/helpers/document.ts","../../src/controller/feedback.ts","../../src/controller/LaunchDarklyIntegration.ts","../../src/controller/OptimizelyIntegration.ts","../../src/controller/Queue.ts","../../src/helpers/metrics/performanceMetric.ts","../../src/helpers/metrics/metricsReporter.ts","../../src/helpers/metrics/domMetrics.ts","../../src/helpers/metrics/eventQueueLatencyMetric.ts","../../src/helpers/metrics/mutationMetrics.ts","../../src/helpers/metrics/index.ts","../../src/controller/controller.ts","../../sprig-browser/core.ts","../../node_modules/@rrweb/types/dist/types.js","../../node_modules/idb/build/index.js","../../src/modules/replay/iframeManager.ts","../../src/modules/replay/network.ts","../../src/modules/replay/semaphore.ts","../../src/modules/replay/getXPath.ts","../../src/modules/replay/utils.ts","../../src/modules/replay/userEventObserver.ts","../../src/modules/replay/replayStorageHelpers.ts","../../src/modules/replay/ReplayStorage.ts","../../src/modules/replay/alwaysOnController.ts","../../src/helpers/metrics/timedActionMetric.ts","../../src/modules/replay/replayController.ts","../../sprig-browser/replay.ts","../index.ts"],"sourcesContent":["var xe=Object.create;var q=Object.defineProperty;var Ue=Object.getOwnPropertyDescriptor;var Fe=Object.getOwnPropertyNames;var Ne=Object.getPrototypeOf,De=Object.prototype.hasOwnProperty;var R=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports);var Me=(t,e,n,r)=>{if(e&&typeof e==\"object\"||typeof e==\"function\")for(let i of Fe(e))!De.call(t,i)&&i!==n&&q(t,i,{get:()=>e[i],enumerable:!(r=Ue(e,i))||r.enumerable});return t};var Xe=(t,e,n)=>(n=t!=null?xe(Ne(t)):{},Me(e||!t||!t.__esModule?q(n,\"default\",{value:t,enumerable:!0}):n,t));var Ce=R((Rt,ye)=>{var T;typeof window!=\"undefined\"?T=window:typeof global!=\"undefined\"?T=global:typeof self!=\"undefined\"?T=self:T={};ye.exports=T});var Se=R((Tt,Ee)=>{Ee.exports=ut;var ot=Object.prototype.toString;function ut(t){if(!t)return!1;var e=ot.call(t);return e===\"[object Function]\"||typeof t==\"function\"&&e!==\"[object RegExp]\"||typeof window!=\"undefined\"&&(t===window.setTimeout||t===window.alert||t===window.confirm||t===window.prompt)}});var ve=R((zt,ke)=>{var M=function(t){return t.replace(/^\\s+|\\s+$/g,\"\")},lt=function(t){return Object.prototype.toString.call(t)===\"[object Array]\"};ke.exports=function(t){if(!t)return{};for(var e={},n=M(t).split(`\n`),r=0;r<n.length;r++){var i=n[r],a=i.indexOf(\":\"),o=M(i.slice(0,a)).toLowerCase(),s=M(i.slice(a+1));typeof e[o]==\"undefined\"?e[o]=s:lt(e[o])?e[o].push(s):e[o]=[e[o],s]}return e}});var Re=R((Pt,we)=>{we.exports=ht;var ct=Object.prototype.hasOwnProperty;function ht(){for(var t={},e=0;e<arguments.length;e++){var n=arguments[e];for(var r in n)ct.call(n,r)&&(t[r]=n[r])}return t}});var _e=R((_t,X)=>{\"use strict\";var Te=Ce(),pt=Se(),dt=ve(),ft=Re();X.exports=C;X.exports.default=C;C.XMLHttpRequest=Te.XMLHttpRequest||yt;C.XDomainRequest=\"withCredentials\"in new C.XMLHttpRequest?C.XMLHttpRequest:Te.XDomainRequest;mt([\"get\",\"put\",\"post\",\"patch\",\"head\",\"delete\"],function(t){C[t===\"delete\"?\"del\":t]=function(e,n,r){return n=ze(e,n,r),n.method=t.toUpperCase(),Pe(n)}});function mt(t,e){for(var n=0;n<t.length;n++)e(t[n])}function gt(t){for(var e in t)if(t.hasOwnProperty(e))return!1;return!0}function ze(t,e,n){var r=t;return pt(e)?(n=e,typeof t==\"string\"&&(r={uri:t})):r=ft(e,{uri:t}),r.callback=n,r}function C(t,e,n){return e=ze(t,e,n),Pe(e)}function Pe(t){if(typeof t.callback==\"undefined\")throw new Error(\"callback argument missing\");var e=!1,n=function(S,P,Be){e||(e=!0,t.callback(S,P,Be))};function r(){s.readyState===4&&setTimeout(o,0)}function i(){var u=void 0;if(s.response?u=s.response:u=s.responseText||bt(s),$)try{u=JSON.parse(u)}catch{}return u}function a(u){return clearTimeout(L),u instanceof Error||(u=new Error(\"\"+(u||\"Unknown XMLHttpRequest Error\"))),u.statusCode=0,n(u,V)}function o(){if(!h){var u;clearTimeout(L),t.useXDR&&s.status===void 0?u=200:u=s.status===1223?204:s.status;var S=V,P=null;return u!==0?(S={body:i(),statusCode:u,method:d,headers:{},url:p,rawRequest:s},s.getAllResponseHeaders&&(S.headers=dt(s.getAllResponseHeaders()))):P=new Error(\"Internal XMLHttpRequest Error\"),n(P,S,S.body)}}var s=t.xhr||null;s||(t.cors||t.useXDR?s=new C.XDomainRequest:s=new C.XMLHttpRequest);var c,h,p=s.url=t.uri||t.url,d=s.method=t.method||\"GET\",y=t.body||t.data,f=s.headers=t.headers||{},I=!!t.sync,$=!1,L,V={body:void 0,headers:{},statusCode:0,method:d,url:p,rawRequest:s};if(\"json\"in t&&t.json!==!1&&($=!0,f.accept||f.Accept||(f.Accept=\"application/json\"),d!==\"GET\"&&d!==\"HEAD\"&&(f[\"content-type\"]||f[\"Content-Type\"]||(f[\"Content-Type\"]=\"application/json\"),y=JSON.stringify(t.json===!0?y:t.json))),s.onreadystatechange=r,s.onload=o,s.onerror=a,s.onprogress=function(){},s.onabort=function(){h=!0},s.ontimeout=a,s.open(d,p,!I,t.username,t.password),I||(s.withCredentials=!!t.withCredentials),!I&&t.timeout>0&&(L=setTimeout(function(){if(!h){h=!0,s.abort(\"timeout\");var u=new Error(\"XMLHttpRequest timeout\");u.code=\"ETIMEDOUT\",a(u)}},t.timeout)),s.setRequestHeader)for(c in f)f.hasOwnProperty(c)&&s.setRequestHeader(c,f[c]);else if(t.headers&&!gt(t.headers))throw new Error(\"Headers cannot be set on an XDomainRequest object\");return\"responseType\"in t&&(s.responseType=t.responseType),\"beforeSend\"in t&&typeof t.beforeSend==\"function\"&&t.beforeSend(s),s.send(y||null),s}function bt(t){try{if(t.responseType===\"document\")return t.responseXML;var e=t.responseXML&&t.responseXML.documentElement.nodeName===\"parsererror\";if(t.responseType===\"\"&&!e)return t.responseXML}catch{}return null}function yt(){}});function D(t,e,...n){if(!t)throw new TypeError(ie(e,n))}function ie(t,e){let n=0;return t.replace(/%[os]/gu,()=>se(e[n++]))}function se(t){return typeof t!=\"object\"||t===null?String(t):Object.prototype.toString.call(t)}var G;function He(t){try{let e=t instanceof Error?t:new Error(se(t));if(G){G(e);return}if(typeof dispatchEvent==\"function\"&&typeof ErrorEvent==\"function\")dispatchEvent(new ErrorEvent(\"error\",{error:e,message:e.message}));else if(typeof process!=\"undefined\"&&typeof process.emit==\"function\"){process.emit(\"uncaughtException\",e);return}console.error(e)}catch{}}var m=typeof window!=\"undefined\"?window:typeof self!=\"undefined\"?self:typeof global!=\"undefined\"?global:typeof globalThis!=\"undefined\"?globalThis:void 0,Y;var g=class{constructor(e,n){this.code=e,this.message=n}warn(...e){var n;try{if(Y){Y({...this,args:e});return}let r=((n=new Error().stack)!==null&&n!==void 0?n:\"\").replace(/^(?:.+?\\n){2}/gu,`\n`);console.warn(this.message,...e,r)}catch{}}},je=new g(\"W01\",\"Unable to initialize event under dispatching.\"),We=new g(\"W02\",\"Assigning any falsy value to 'cancelBubble' property has no effect.\"),$e=new g(\"W03\",\"Assigning any truthy value to 'returnValue' property has no effect.\"),Ve=new g(\"W04\",\"Unable to preventDefault on non-cancelable events.\"),qe=new g(\"W05\",\"Unable to preventDefault inside passive event listener invocation.\"),Ge=new g(\"W06\",\"An event listener wasn't added because it has been added already: %o, %o\"),B=new g(\"W07\",\"The %o option value was abandoned because the event listener wasn't added as duplicated.\"),K=new g(\"W08\",\"The 'callback' argument must be a function or an object that has 'handleEvent' method: %o\"),vt=new g(\"W09\",\"Event attribute handler must be a function: %o\"),b=class{static get NONE(){return Z}static get CAPTURING_PHASE(){return J}static get AT_TARGET(){return Q}static get BUBBLING_PHASE(){return ee}constructor(e,n){Object.defineProperty(this,\"isTrusted\",{value:!1,enumerable:!0});let r=n!=null?n:{};N.set(this,{type:String(e),bubbles:Boolean(r.bubbles),cancelable:Boolean(r.cancelable),composed:Boolean(r.composed),target:null,currentTarget:null,stopPropagationFlag:!1,stopImmediatePropagationFlag:!1,canceledFlag:!1,inPassiveListenerFlag:!1,dispatchFlag:!1,timeStamp:Date.now()})}get type(){return l(this).type}get target(){return l(this).target}get srcElement(){return l(this).target}get currentTarget(){return l(this).currentTarget}composedPath(){let e=l(this).currentTarget;return e?[e]:[]}get NONE(){return Z}get CAPTURING_PHASE(){return J}get AT_TARGET(){return Q}get BUBBLING_PHASE(){return ee}get eventPhase(){return l(this).dispatchFlag?2:0}stopPropagation(){l(this).stopPropagationFlag=!0}get cancelBubble(){return l(this).stopPropagationFlag}set cancelBubble(e){e?l(this).stopPropagationFlag=!0:We.warn()}stopImmediatePropagation(){let e=l(this);e.stopPropagationFlag=e.stopImmediatePropagationFlag=!0}get bubbles(){return l(this).bubbles}get cancelable(){return l(this).cancelable}get returnValue(){return!l(this).canceledFlag}set returnValue(e){e?$e.warn():te(l(this))}preventDefault(){te(l(this))}get defaultPrevented(){return l(this).canceledFlag}get composed(){return l(this).composed}get isTrusted(){return!1}get timeStamp(){return l(this).timeStamp}initEvent(e,n=!1,r=!1){let i=l(this);if(i.dispatchFlag){je.warn();return}N.set(this,{...i,type:String(e),bubbles:Boolean(n),cancelable:Boolean(r),target:null,currentTarget:null,stopPropagationFlag:!1,stopImmediatePropagationFlag:!1,canceledFlag:!1})}},Z=0,J=1,Q=2,ee=3,N=new WeakMap;function l(t,e=\"this\"){let n=N.get(t);return D(n!=null,\"'%s' must be an object that Event constructor created, but got another one: %o\",e,t),n}function te(t){if(t.inPassiveListenerFlag){qe.warn();return}if(!t.cancelable){Ve.warn();return}t.canceledFlag=!0}Object.defineProperty(b,\"NONE\",{enumerable:!0});Object.defineProperty(b,\"CAPTURING_PHASE\",{enumerable:!0});Object.defineProperty(b,\"AT_TARGET\",{enumerable:!0});Object.defineProperty(b,\"BUBBLING_PHASE\",{enumerable:!0});var x=Object.getOwnPropertyNames(b.prototype);for(let t=0;t<x.length;++t)x[t]!==\"constructor\"&&Object.defineProperty(b.prototype,x[t],{enumerable:!0});typeof m!=\"undefined\"&&typeof m.Event!=\"undefined\"&&Object.setPrototypeOf(b.prototype,m.Event.prototype);function Ye(t){return m.DOMException?new m.DOMException(t,\"InvalidStateError\"):(v==null&&(v=class ae extends Error{constructor(n){super(n),Error.captureStackTrace&&Error.captureStackTrace(this,ae)}get code(){return 11}get name(){return\"InvalidStateError\"}},Object.defineProperties(v.prototype,{code:{enumerable:!0},name:{enumerable:!0}}),re(v),re(v.prototype)),new v(t))}var v,ne={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};function re(t){let e=Object.keys(ne);for(let n=0;n<e.length;++n){let r=e[n],i=ne[r];Object.defineProperty(t,r,{get(){return i},configurable:!0,enumerable:!0})}}var w=class extends b{static wrap(e){return new(ue(e))(e)}constructor(e){super(e.type,{bubbles:e.bubbles,cancelable:e.cancelable,composed:e.composed}),e.cancelBubble&&super.stopPropagation(),e.defaultPrevented&&super.preventDefault(),oe.set(this,{original:e});let n=Object.keys(e);for(let r=0;r<n.length;++r){let i=n[r];i in this||Object.defineProperty(this,i,le(e,i))}}stopPropagation(){super.stopPropagation();let{original:e}=E(this);\"stopPropagation\"in e&&e.stopPropagation()}get cancelBubble(){return super.cancelBubble}set cancelBubble(e){super.cancelBubble=e;let{original:n}=E(this);\"cancelBubble\"in n&&(n.cancelBubble=e)}stopImmediatePropagation(){super.stopImmediatePropagation();let{original:e}=E(this);\"stopImmediatePropagation\"in e&&e.stopImmediatePropagation()}get returnValue(){return super.returnValue}set returnValue(e){super.returnValue=e;let{original:n}=E(this);\"returnValue\"in n&&(n.returnValue=e)}preventDefault(){super.preventDefault();let{original:e}=E(this);\"preventDefault\"in e&&e.preventDefault()}get timeStamp(){let{original:e}=E(this);return\"timeStamp\"in e?e.timeStamp:super.timeStamp}},oe=new WeakMap;function E(t){let e=oe.get(t);return D(e!=null,\"'this' is expected an Event object, but got\",t),e}var _=new WeakMap;_.set(Object.prototype,w);typeof m!=\"undefined\"&&typeof m.Event!=\"undefined\"&&_.set(m.Event.prototype,w);function ue(t){let e=Object.getPrototypeOf(t);if(e==null)return w;let n=_.get(e);return n==null&&(n=Ke(ue(e),e),_.set(e,n)),n}function Ke(t,e){class n extends t{}let r=Object.keys(e);for(let i=0;i<r.length;++i)Object.defineProperty(n.prototype,r[i],le(e,r[i]));return n}function le(t,e){let n=Object.getOwnPropertyDescriptor(t,e);return{get(){let r=E(this).original,i=r[e];return typeof i==\"function\"?i.bind(r):i},set(r){let i=E(this).original;i[e]=r},configurable:n.configurable,enumerable:n.enumerable}}function Ze(t,e,n,r,i,a){return{callback:t,flags:(e?1:0)|(n?2:0)|(r?4:0),signal:i,signalListener:a}}function Je(t){t.flags|=8}function ce(t){return(t.flags&1)===1}function he(t){return(t.flags&2)===2}function pe(t){return(t.flags&4)===4}function Qe(t){return(t.flags&8)===8}function et({callback:t},e,n){try{typeof t==\"function\"?t.call(e,n):typeof t.handleEvent==\"function\"&&t.handleEvent(n)}catch(r){He(r)}}function de({listeners:t},e,n){for(let r=0;r<t.length;++r)if(t[r].callback===e&&ce(t[r])===n)return r;return-1}function tt(t,e,n,r,i,a){let o;a&&(o=fe.bind(null,t,e,n),a.addEventListener(\"abort\",o));let s=Ze(e,n,r,i,a,o);return t.cow?(t.cow=!1,t.listeners=[...t.listeners,s]):t.listeners.push(s),s}function fe(t,e,n){let r=de(t,e,n);return r!==-1?me(t,r):!1}function me(t,e,n=!1){let r=t.listeners[e];return Je(r),r.signal&&r.signal.removeEventListener(\"abort\",r.signalListener),t.cow&&!n?(t.cow=!1,t.listeners=t.listeners.filter((i,a)=>a!==e),!1):(t.listeners.splice(e,1),!0)}function nt(){return Object.create(null)}function rt(t,e){var n;return(n=t[e])!==null&&n!==void 0?n:t[e]={attrCallback:void 0,attrListener:void 0,cow:!1,listeners:[]}}var k=class{constructor(){ge.set(this,nt())}addEventListener(e,n,r){let i=U(this),{callback:a,capture:o,once:s,passive:c,signal:h,type:p}=it(e,n,r);if(a==null||(h==null?void 0:h.aborted))return;let d=rt(i,p),y=de(d,a,o);if(y!==-1){at(d.listeners[y],c,s,h);return}tt(d,a,o,c,s,h)}removeEventListener(e,n,r){let i=U(this),{callback:a,capture:o,type:s}=st(e,n,r),c=i[s];a!=null&&c&&fe(c,a,o)}dispatchEvent(e){let n=U(this)[String(e.type)];if(n==null)return!0;let r=e instanceof b?e:w.wrap(e),i=l(r,\"event\");if(i.dispatchFlag)throw Ye(\"This event has been in dispatching.\");if(i.dispatchFlag=!0,i.target=i.currentTarget=this,!i.stopPropagationFlag){let{cow:a,listeners:o}=n;n.cow=!0;for(let s=0;s<o.length;++s){let c=o[s];if(!Qe(c)&&(pe(c)&&me(n,s,!a)&&(s-=1),i.inPassiveListenerFlag=he(c),et(c,this,r),i.inPassiveListenerFlag=!1,i.stopImmediatePropagationFlag))break}a||(n.cow=!1)}return i.target=null,i.currentTarget=null,i.stopImmediatePropagationFlag=!1,i.stopPropagationFlag=!1,i.dispatchFlag=!1,!i.canceledFlag}},ge=new WeakMap;function U(t,e=\"this\"){let n=ge.get(t);return D(n!=null,\"'%s' must be an object that EventTarget constructor created, but got another one: %o\",e,t),n}function it(t,e,n){var r;return be(e),typeof n==\"object\"&&n!==null?{type:String(t),callback:e!=null?e:void 0,capture:Boolean(n.capture),passive:Boolean(n.passive),once:Boolean(n.once),signal:(r=n.signal)!==null&&r!==void 0?r:void 0}:{type:String(t),callback:e!=null?e:void 0,capture:Boolean(n),passive:!1,once:!1,signal:void 0}}function st(t,e,n){return be(e),typeof n==\"object\"&&n!==null?{type:String(t),callback:e!=null?e:void 0,capture:Boolean(n.capture)}:{type:String(t),callback:e!=null?e:void 0,capture:Boolean(n)}}function be(t){if(!(typeof t==\"function\"||typeof t==\"object\"&&t!==null&&typeof t.handleEvent==\"function\")){if(t==null||typeof t==\"object\"){K.warn(t);return}throw new TypeError(ie(K.message,[t]))}}function at(t,e,n,r){Ge.warn(ce(t)?\"capture\":\"bubble\",t.callback),he(t)!==e&&B.warn(\"passive\"),pe(t)!==n&&B.warn(\"once\"),t.signal!==r&&B.warn(\"signal\")}var F=Object.getOwnPropertyNames(k.prototype);for(let t=0;t<F.length;++t)F[t]!==\"constructor\"&&Object.defineProperty(k.prototype,F[t],{enumerable:!0});typeof m!=\"undefined\"&&typeof m.EventTarget!=\"undefined\"&&Object.setPrototypeOf(k.prototype,m.EventTarget.prototype);var Ae=Xe(_e()),Oe=30720,A=512e3,O=256,H=(t,{minChunkSize:e=O,maxChunkSize:n=A}={})=>t==null||typeof t==\"number\"&&t>=256&&t%256===0&&t>=e&&t<=n,j=(t,{minChunkSize:e=O,maxChunkSize:n=A}={})=>new TypeError(`chunkSize ${t} must be a positive number in multiples of 256, between ${e} and ${n}`),W=class{constructor(e,n={}){this.readableStream=e;var r,i,a;if(!H(n.defaultChunkSize,n))throw j(n.defaultChunkSize,n);this.defaultChunkSize=(r=n.defaultChunkSize)!=null?r:Oe,this.minChunkSize=(i=n.minChunkSize)!=null?i:O,this.maxChunkSize=(a=n.maxChunkSize)!=null?a:A}get chunkSize(){var e;return(e=this._chunkSize)!=null?e:this.defaultChunkSize}set chunkSize(e){if(!H(e,this))throw j(e,this);this._chunkSize=e}get chunkByteSize(){return this.chunkSize*1024}async*[Symbol.asyncIterator](){let e,n=this.readableStream.getReader();try{for(;;){let{done:r,value:i}=await n.read();if(r){if(e){let o=e;e=void 0,yield o}break}let a=i instanceof Uint8Array?new Blob([i],{type:\"application/octet-stream\"}):i;for(e=e?new Blob([e,a]):a;e;)if(e.size===this.chunkByteSize){let o=e;e=void 0,yield o;break}else{if(e.size<this.chunkByteSize)break;{let o=e.slice(0,this.chunkByteSize);e=e.slice(this.chunkByteSize),yield o}}}}finally{if(e){let r=e;e=void 0,yield r}n.releaseLock();return}}},Ct=[200,201,202,204,308],Ie=[408,502,503,504],Le=(t,e)=>!!t&&Ct.includes(t.statusCode),Et=(t,{retryCodes:e=Ie})=>!t||e.includes(t.statusCode),St=(t,e)=>e.attemptCount>=e.attempts||!(Le(t)||Et(t,e)),z=class{static createUpload(e){return new z(e)}constructor(e){this.endpoint=e.endpoint,this.file=e.file,this.headers=e.headers||{},this.method=e.method||\"PUT\",this.attempts=e.attempts||5,this.delayBeforeAttempt=e.delayBeforeAttempt||1,this.retryCodes=e.retryCodes||Ie,this.dynamicChunkSize=e.dynamicChunkSize||!1,this.maxFileBytes=(e.maxFileSize||0)*1024,this.chunkCount=0,this.attemptCount=0,this.offline=!1,this._paused=!1,this.success=!1,this.nextChunkRangeStart=0,this.chunkedStreamIterable=new W(this.file.stream(),{...e,defaultChunkSize:e.chunkSize}),this.chunkedStreamIterator=this.chunkedStreamIterable[Symbol.asyncIterator](),this.totalChunks=Math.ceil(this.file.size/this.chunkByteSize),this.eventTarget=new k,this.validateOptions(),this.getEndpoint().then(()=>this.sendChunks()),typeof window!=\"undefined\"&&(window.addEventListener(\"online\",()=>{!this.offline||(this.offline=!1,this.dispatch(\"online\"),this.sendChunks())}),window.addEventListener(\"offline\",()=>{this.offline=!0,this.dispatch(\"offline\")}))}get maxChunkSize(){var e,n;return(n=(e=this.chunkedStreamIterable)==null?void 0:e.maxChunkSize)!=null?n:A}get minChunkSize(){var e,n;return(n=(e=this.chunkedStreamIterable)==null?void 0:e.minChunkSize)!=null?n:O}get chunkSize(){var e,n;return(n=(e=this.chunkedStreamIterable)==null?void 0:e.chunkSize)!=null?n:Oe}set chunkSize(e){this.chunkedStreamIterable.chunkSize=e}get chunkByteSize(){return this.chunkedStreamIterable.chunkByteSize}get totalChunkSize(){return Math.ceil(this.file.size/this.chunkByteSize)}on(e,n){this.eventTarget.addEventListener(e,n)}once(e,n){this.eventTarget.addEventListener(e,n,{once:!0})}off(e,n){this.eventTarget.removeEventListener(e,n)}get paused(){return this._paused}abort(){var e;this.pause(),(e=this.currentXhr)==null||e.abort()}pause(){this._paused=!0}resume(){this._paused&&(this._paused=!1,this.sendChunks())}dispatch(e,n){let r=new CustomEvent(e,{detail:n});this.eventTarget.dispatchEvent(r)}validateOptions(){if(!this.endpoint||typeof this.endpoint!=\"function\"&&typeof this.endpoint!=\"string\")throw new TypeError(\"endpoint must be defined as a string or a function that returns a promise\");if(!(this.file instanceof File))throw new TypeError(\"file must be a File object\");if(this.headers&&typeof this.headers!=\"function\"&&typeof this.headers!=\"object\")throw new TypeError(\"headers must be null, an object, or a function that returns an object or a promise\");if(!H(this.chunkSize,{maxChunkSize:this.maxChunkSize,minChunkSize:this.minChunkSize}))throw j(this.chunkSize,{maxChunkSize:this.maxChunkSize,minChunkSize:this.minChunkSize});if(this.maxChunkSize&&(typeof this.maxChunkSize!=\"number\"||this.maxChunkSize<256||this.maxChunkSize%256!==0||this.maxChunkSize<this.chunkSize||this.maxChunkSize<this.minChunkSize))throw new TypeError(`maxChunkSize must be a positive number in multiples of 256, and larger than or equal to both ${this.minChunkSize} and ${this.chunkSize}`);if(this.minChunkSize&&(typeof this.minChunkSize!=\"number\"||this.minChunkSize<256||this.minChunkSize%256!==0||this.minChunkSize>this.chunkSize||this.minChunkSize>this.maxChunkSize))throw new TypeError(`minChunkSize must be a positive number in multiples of 256, and smaller than ${this.chunkSize} and ${this.maxChunkSize}`);if(this.maxFileBytes>0&&this.maxFileBytes<this.file.size)throw new Error(`file size exceeds maximum (${this.file.size} > ${this.maxFileBytes})`);if(this.attempts&&(typeof this.attempts!=\"number\"||this.attempts<=0))throw new TypeError(\"retries must be a positive number\");if(this.delayBeforeAttempt&&(typeof this.delayBeforeAttempt!=\"number\"||this.delayBeforeAttempt<0))throw new TypeError(\"delayBeforeAttempt must be a positive number\")}getEndpoint(){return typeof this.endpoint==\"string\"?(this.endpointValue=this.endpoint,Promise.resolve(this.endpoint)):this.endpoint(this.file).then(e=>(this.endpointValue=e,this.endpointValue))}xhrPromise(e){let n=r=>{r.upload.onprogress=i=>{var p;let a=this.totalChunks-this.chunkCount,o=(this.file.size-this.nextChunkRangeStart)/this.file.size/a,s=this.nextChunkRangeStart/this.file.size,h=i.loaded/((p=i.total)!=null?p:this.chunkByteSize)*o;this.dispatch(\"progress\",Math.min((s+h)*100,100))}};return new Promise((r,i)=>{this.currentXhr=(0,Ae.default)({...e,beforeSend:n},(a,o)=>(this.currentXhr=void 0,a?i(a):r(o)))})}async sendChunk(e){let n=this.nextChunkRangeStart,r=n+e.size-1,a={...await(typeof this.headers==\"function\"?this.headers():this.headers),\"Content-Type\":this.file.type,\"Content-Range\":`bytes ${n}-${r}/${this.file.size}`};return this.dispatch(\"attempt\",{chunkNumber:this.chunkCount,totalChunks:this.totalChunks,chunkSize:this.chunkSize}),this.xhrPromise({headers:a,url:this.endpointValue,method:this.method,body:e})}async sendChunkWithRetries(e){let n=async(s,c)=>{var d;let p=(new Date().getTime()-this.lastChunkStart.getTime())/1e3;if(this.dispatch(\"chunkSuccess\",{chunk:this.chunkCount,chunkSize:this.chunkSize,attempts:this.attemptCount,timeInterval:p,response:s}),this.attemptCount=0,this.chunkCount=((d=this.chunkCount)!=null?d:0)+1,this.nextChunkRangeStart=this.nextChunkRangeStart+this.chunkByteSize,this.dynamicChunkSize){let y=this.chunkSize;p<10?y=Math.min(this.chunkSize*2,this.maxChunkSize):p>30&&(y=Math.max(this.chunkSize/2,this.minChunkSize)),this.chunkSize=Math.ceil(y/256)*256;let f=(this.file.size-this.nextChunkRangeStart)/this.chunkByteSize;this.totalChunks=Math.ceil(this.chunkCount+f)}return!0},r=async(s,c)=>(this.dispatch(\"error\",{message:`Server responded with ${s.statusCode}. Stopping upload.`,chunk:this.chunkCount,attempts:this.attemptCount}),!1),i=async(s,c)=>(this.dispatch(\"attemptFailure\",{message:`An error occured uploading chunk ${this.chunkCount}. ${this.attempts-this.attemptCount} retries left.`,chunkNumber:this.chunkCount,attemptsLeft:this.attempts-this.attemptCount}),new Promise(h=>{setTimeout(async()=>{if(this._paused||this.offline){this.pendingChunk=e,h(!1);return}let p=await this.sendChunkWithRetries(e);h(p)},this.delayBeforeAttempt*1e3)})),a;try{this.attemptCount=this.attemptCount+1,this.lastChunkStart=new Date,a=await this.sendChunk(e)}catch{}let o={retryCodes:this.retryCodes,attemptCount:this.attemptCount,attempts:this.attempts};return Le(a,o)?n(a,e):St(a,o)?r(a,e):i(a,e)}async sendChunks(){if(this.pendingChunk&&!(this._paused||this.offline)){let e=this.pendingChunk;this.pendingChunk=void 0;let n=await this.sendChunkWithRetries(e);this.success&&n&&this.dispatch(\"success\")}for(;!(this.success||this._paused||this.offline);){let{value:e,done:n}=await this.chunkedStreamIterator.next(),r=!e&&n;if(e&&(r=await this.sendChunkWithRetries(e)),this.success=!!n,this.success&&r&&this.dispatch(\"success\"),!r)return}}},It=z.createUpload;export{W as ChunkedStreamIterable,z as UpChunk,It as createUpload,j as getChunkSizeError,H as isValidChunkSize};\n//# sourceMappingURL=upchunk.mjs.map\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$2 = /* @__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$2 || {});\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 = {};\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) {\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 const stringifiedRules = Array.from(\n rules2,\n (rule2) => stringifyRule(rule2, s2.href)\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}\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 } = 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$2.Document,\n childNodes: [],\n compatMode: n2.compatMode\n // probably \"BackCompat\"\n };\n } else {\n return {\n type: NodeType$2.Document,\n childNodes: []\n };\n }\n case n2.DOCUMENT_TYPE_NODE:\n return {\n type: NodeType$2.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 });\n case n2.CDATA_SECTION_NODE:\n return {\n type: NodeType$2.CDATA,\n textContent: \"\",\n rootId\n };\n case n2.COMMENT_NODE:\n return {\n type: NodeType$2.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 var _a2;\n const { needsMask, maskTextFn, rootId } = options;\n const parent = index$1.parentNode(n2);\n const parentTagName = parent && parent.tagName;\n let text = index$1.textContent(n2);\n const isStyle = parentTagName === \"STYLE\" ? true : void 0;\n const isScript = parentTagName === \"SCRIPT\" ? true : void 0;\n if (isStyle && text) {\n try {\n if (n2.nextSibling || n2.previousSibling) {\n } else if ((_a2 = parent.sheet) == null ? void 0 : _a2.cssRules) {\n text = stringifyStylesheet(parent.sheet);\n }\n } catch (err) {\n console.warn(\n `Cannot get CSS styles from text's parentNode. Error: ${err}`,\n n2\n );\n }\n text = absolutifyURLs(text, getHref(options.doc));\n }\n if (isScript) {\n text = \"SCRIPT_PLACEHOLDER\";\n }\n if (!isStyle && !isScript && text && needsMask) {\n text = maskTextFn ? maskTextFn(text, index$1.parentElement(n2)) : text.replace(/[\\S]/g, \"*\");\n }\n return {\n type: NodeType$2.Text,\n textContent: text || \"\",\n isStyle,\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 && // TODO: Currently we only try to get dynamic stylesheet when it is an empty style element\n !(n2.innerText || index$1.textContent(n2) || \"\").trim().length) {\n const cssText = stringifyStylesheet(\n n2.sheet\n );\n if (cssText) {\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\") || \"<unknown-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$2.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$2.Comment) {\n return true;\n } else if (sn.type === NodeType$2.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 } = 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 });\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$2.Text && !_serializedNode.isStyle && !_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$2.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$2.Document || serializedNode.type === NodeType$2.Element) && recordChild) {\n if (slimDOMOptions.headWhitespace && serializedNode.type === NodeType$2.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 };\n if (serializedNode.type === NodeType$2.Element && serializedNode.tagName === \"textarea\" && serializedNode.attributes.value !== void 0) ;\n else {\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$2.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$2.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 : \"<css input>\";\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 = \"<input css \" + nanoid$2(6) + \">\";\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)) : \"<no source>\"\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 = \"<no source>\";\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)) : \"<no source>\";\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 : \"<css input>\";\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 = \"<input css \" + nanoid(6) + \">\";\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)) : \"<no source>\"\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 = \"<no source>\";\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)) : \"<no source>\";\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 = {};\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) {\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 || {});\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, \"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) || parent.tagName === \"TEXTAREA\") {\n return;\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 });\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.removes, 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.removes, 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.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 }\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 isParentRemoved(removes, n2, mirror2) {\n if (removes.length === 0) return false;\n return _isParentRemoved(removes, n2, mirror2);\n}\nfunction _isParentRemoved(removes, n2, mirror2) {\n let node2 = index.parentNode(n2);\n while (node2) {\n const parentId = mirror2.getId(node2);\n if (removes.some((r2) => r2.id === parentId)) {\n return true;\n }\n node2 = index.parentNode(node2);\n }\n return false;\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$2.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","// Should change to union but it's a breaking change (affects sprig npm packages)\nexport enum DismissReason {\n Closed = \"close.click\", // user clicked the close button\n Complete = \"survey.completed\", // user answered all questions\n FeedbackClosed = \"feedback.closed\", // user either clicked on feedback button or close button\n PageChange = \"page.change\", // productConfig.dismissOnPageChange == true and we detected a page change (excludes hash/query param changes)\n API = \"api\", // JS called Sprig('dismissActiveSurvey')\n Override = \"override\", // JS called Sprig('displaySurvey', SURVEY_ID)\n}\n\nexport type StudyType = \"feedbackButton\" | \"inProductSurvey\" | \"longFormSurvey\";\n\n// Should change to union but it's a breaking change (affects sprig npm packages)\nexport enum SprigEvent {\n // for controller\n ReplayCapture = \"replay.capture\",\n ReplayPaused = \"replay.paused\",\n ReplayResumed = \"replay.resumed\",\n FeedbackButtonLoaded = \"feedback.button.loaded\",\n SDKReady = \"sdk.ready\",\n SurveyAppeared = \"survey.appeared\",\n SurveyCloseRequested = \"survey.closeRequested\", //This event signals to mobile the survey overlay can close\n SurveyClosed = \"survey.closed\",\n SurveyDimensions = \"survey.dimensions\",\n SurveyFadingOut = \"survey.fadingOut\",\n SurveyHeight = \"survey.height\",\n SurveyPresented = \"survey.presented\",\n SurveyLifeCycle = \"survey.lifeCycle\",\n SurveyWidth = \"survey.width\",\n SurveyWillClose = \"survey.willClose\",\n SurveyWillPresent = \"survey.will.present\",\n\n // for view\n CloseSurveyOnOverlayClick = \"close.survey.overlayClick\",\n VisitorIDUpdated = \"visitor.id.updated\",\n\n // question\n QuestionAnswered = \"question.answered\",\n}\n\n// events not intended to be used externally and not in the documentation\nexport type InternalEventName =\n | \"verify.view.version\"\n | \"survey.question\"\n | \"question.prototype.click\"\n | \"question.agreement.click\"\n | \"recorded.task.start\"\n | \"recorded.task.permission.screen\"\n | \"survey.complete\";\n\nexport type InternalEventData = \"view.version\" | \"qid\" | \"props\";\n\n// should remove as this is redundant (similar to sprig-event), needs to be marked as a breaking change (affects sprig npm packages)\nexport const EVENTS = {\n // for controller\n FEEDBACK_BUTTON_LOADED: SprigEvent.FeedbackButtonLoaded,\n SDK_READY: SprigEvent.SDKReady,\n SURVEY_APPEARED: SprigEvent.SurveyAppeared,\n SURVEY_CLOSED: SprigEvent.SurveyClosed,\n SURVEY_DIMENSIONS: SprigEvent.SurveyDimensions,\n SURVEY_FADING_OUT: SprigEvent.SurveyFadingOut,\n SURVEY_HEIGHT: SprigEvent.SurveyHeight,\n SURVEY_WIDTH: SprigEvent.SurveyWidth,\n SURVEY_PRESENTED: SprigEvent.SurveyPresented,\n SURVEY_LIFE_CYCLE: SprigEvent.SurveyLifeCycle,\n SURVEY_WILL_CLOSE: SprigEvent.SurveyWillClose,\n SURVEY_WILL_PRESENT: SprigEvent.SurveyWillPresent,\n QUESTION_ANSWERED: SprigEvent.QuestionAnswered,\n REPLAY_CAPTURE: SprigEvent.ReplayCapture,\n\n // for view\n CLOSE_SURVEY_ON_OVERLAY_CLICK: SprigEvent.CloseSurveyOnOverlayClick,\n VISITOR_ID_UPDATED: SprigEvent.VisitorIDUpdated,\n\n // data - TODO: separate data e.g. export const enum SprigEventData { SurveyID } (breaking change)\n DATA: {\n DISMISS_REASONS: {\n API: DismissReason.API, // JS called Sprig('dismissActiveSurvey')\n CLOSED: DismissReason.Closed, // user clicked the close button\n COMPLETE: DismissReason.Complete, // user answered all questions\n PAGE_CHANGE: DismissReason.PageChange, // productConfig.dismissOnPageChange:= true and we detected a page change (excludes hash/query param changes)\n OVERRIDE: DismissReason.Override, // JS called Sprig('displaySurvey', SURVEY_ID)\n },\n SURVEY_ID: \"survey.id\",\n },\n};\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nexport function unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default {\n randomUUID\n};","import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\n\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n\n options = options || {};\n const rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return unsafeStringify(rnds);\n}\n\nexport default v4;","/**\n * Reference: https://develop.sentry.dev/sdk/event-payloads/breadcrumbs/\n */\ninterface Breadcrumb {\n category: string;\n data?: unknown;\n\n /**\n * Highest to lowest severity.\n */\n level?: \"fatal\" | \"error\" | \"warning\" | \"info\" | \"debug\";\n\n message: string;\n\n timestamp: string | number; // ISO 8601 string or unix timestamp (seconds)\n\n type: \"default\" | \"debug\" | \"error\" | \"http\" | \"info\" | \"navigation\";\n}\n\nconst modeIsDevelopment = !import.meta.env.PROD;\n\nconst MAX_BREADCRUMBS = 300;\n\n/**\n * For logging the breadcrumbs for various user actions for debugging purposes.\n * Since we use a custom error api, we can pass these breadcrumbs along which will create the actual Sentry breadcrumbs.\n */\nexport class BreadcrumbsLogger {\n breadcrumbs: Breadcrumb[] = [];\n\n getTimeStamp() {\n return new Date().toISOString();\n }\n\n addBreadcrumb(breadcrumb: Breadcrumb) {\n if (modeIsDevelopment) {\n const { data, message } = breadcrumb;\n const dataToLog = data && Object.keys(data).length ? data : null;\n if (dataToLog) {\n console.info(message, dataToLog);\n } else {\n console.info(message);\n }\n }\n this.breadcrumbs.push(breadcrumb);\n if (this.breadcrumbs.length > MAX_BREADCRUMBS) {\n this.breadcrumbs.shift();\n }\n }\n\n /**\n * Logs a debug breadcrumb. Data is unused.\n * @example\n * debug('message', 'started')\n * // will log\n * {\n * \"type\": \"debug\",\n * \"category\": \"started\",\n * \"data\": null,\n * \"level\": \"info\",\n * \"message\": \"message\",\n * \"timestamp\": '2024-08-07T00:00:00.000Z'\n * }\n */\n debug(message: string, category: Breadcrumb[\"category\"] = \"debug\") {\n this.addBreadcrumb({\n category,\n level: \"info\",\n message,\n timestamp: this.getTimeStamp(),\n type: \"debug\",\n });\n }\n\n /**\n * Logs an error breadcrumb.\n * @example\n * error('message')\n * // will log\n * {\n * \"type\": \"error\",\n * \"category\": \"error\",\n * \"level\": \"error\",\n * \"message\": \"this is a message\",\n * \"timestamp\": '2024-08-07T00:00:00.000Z'\n * }\n */\n error(message: string, data: unknown = {}) {\n this.addBreadcrumb({\n category: \"error\",\n data,\n level: \"error\",\n message,\n timestamp: this.getTimeStamp(),\n type: \"error\",\n });\n }\n\n /**\n * Logs an info breadcrumb.\n * @example\n * http('message')\n * // will log\n * {\n * \"type\": \"info\",\n * \"category\": \"started\",\n * \"level\": \"info\",\n * \"message\": \"this is a message\",\n * \"timestamp\": '2024-08-07T00:00:00.000Z'\n * }\n */\n http(\n message: string,\n data: {\n url: string;\n method: string;\n status_code?: number;\n reason?: string;\n } & Record<string, unknown>,\n ) {\n this.addBreadcrumb({\n category: \"xhr\",\n data,\n message,\n timestamp: this.getTimeStamp(),\n type: \"http\",\n });\n }\n\n /**\n * Logs an info breadcrumb.\n * @example\n * info('message')\n * // will log\n * {\n * \"type\": \"info\",\n * \"category\": \"started\",\n * \"level\": \"info\",\n * \"message\": \"this is a message\",\n * \"timestamp\": '2024-08-07T00:00:00.000Z'\n * }\n */\n info(message: string, data: unknown = {}) {\n this.addBreadcrumb({\n category: \"info\",\n data,\n level: \"info\",\n message,\n timestamp: this.getTimeStamp(),\n type: \"info\",\n });\n }\n\n /**\n * Logs a navigation breadcrumb.\n * @example\n * navigation('message', { from: '/login', to: '/dashboard' })\n * // will log\n * {\n * \"type\": \"navigation\",\n * \"category\": \"navigation\",\n * \"timestamp\": '2024-08-07T00:00:00.000Z'\n * \"data\": {\n * \"from\": \"/login\",\n * \"to\": \"/dashboard\"\n * },\n * }\n */\n navigation(message: string, data: { from: string; to: string }) {\n this.addBreadcrumb({\n category: \"navigation\",\n data,\n message,\n timestamp: this.getTimeStamp(),\n type: \"navigation\",\n });\n }\n}\n\nexport const breadcrumbsLogger = new BreadcrumbsLogger();\n","const getIntercom = () => {\n try {\n return window.parent.Intercom;\n } catch (err) {\n return null;\n }\n};\n\nexport const enable = () => {\n const Intercom = getIntercom();\n if (!Intercom) return;\n\n if (Intercom.ul_wasVisible) {\n Intercom(\"update\", { hide_default_launcher: false });\n }\n\n delete Intercom.ul_wasVisible;\n};\n\nexport const disable = () => {\n const Intercom = getIntercom();\n if (!Intercom) return;\n\n Intercom.ul_wasVisible = !!document.querySelector(\n \"iframe.intercom-launcher-frame\"\n );\n\n if (Intercom.ul_wasVisible) {\n Intercom(\"update\", { hide_default_launcher: true });\n }\n};\n","import * as Intercom from \"./intercom\";\n\nconst widgets = [Intercom];\n\nexport default class ConflictingWidgets {\n static disable() {\n widgets.forEach((w) => w.disable());\n }\n\n static enable() {\n widgets.forEach((w) => w.enable());\n }\n}\n","// src/MemoryLeakError.ts\nvar MemoryLeakError = class extends Error {\n constructor(emitter, type, count) {\n super(\n `Possible EventEmitter memory leak detected. ${count} ${type.toString()} listeners added. Use emitter.setMaxListeners() to increase limit`\n );\n this.emitter = emitter;\n this.type = type;\n this.count = count;\n this.name = \"MaxListenersExceededWarning\";\n }\n};\n\n// src/Emitter.ts\nvar _Emitter = class {\n static listenerCount(emitter, eventName) {\n return emitter.listenerCount(eventName);\n }\n constructor() {\n this.events = /* @__PURE__ */ new Map();\n this.maxListeners = _Emitter.defaultMaxListeners;\n this.hasWarnedAboutPotentialMemoryLeak = false;\n }\n _emitInternalEvent(internalEventName, eventName, listener) {\n this.emit(\n internalEventName,\n ...[eventName, listener]\n );\n }\n _getListeners(eventName) {\n return Array.prototype.concat.apply([], this.events.get(eventName)) || [];\n }\n _removeListener(listeners, listener) {\n const index = listeners.indexOf(listener);\n if (index > -1) {\n listeners.splice(index, 1);\n }\n return [];\n }\n _wrapOnceListener(eventName, listener) {\n const onceListener = (...data) => {\n this.removeListener(eventName, onceListener);\n return listener.apply(this, data);\n };\n Object.defineProperty(onceListener, \"name\", { value: listener.name });\n return onceListener;\n }\n setMaxListeners(maxListeners) {\n this.maxListeners = maxListeners;\n return this;\n }\n /**\n * Returns the current max listener value for the `Emitter` which is\n * either set by `emitter.setMaxListeners(n)` or defaults to\n * `Emitter.defaultMaxListeners`.\n */\n getMaxListeners() {\n return this.maxListeners;\n }\n /**\n * Returns an array listing the events for which the emitter has registered listeners.\n * The values in the array will be strings or Symbols.\n */\n eventNames() {\n return Array.from(this.events.keys());\n }\n /**\n * Synchronously calls each of the listeners registered for the event named `eventName`,\n * in the order they were registered, passing the supplied arguments to each.\n * Returns `true` if the event has listeners, `false` otherwise.\n *\n * @example\n * const emitter = new Emitter<{ hello: [string] }>()\n * emitter.emit('hello', 'John')\n */\n emit(eventName, ...data) {\n const listeners = this._getListeners(eventName);\n listeners.forEach((listener) => {\n listener.apply(this, data);\n });\n return listeners.length > 0;\n }\n addListener(eventName, listener) {\n this._emitInternalEvent(\"newListener\", eventName, listener);\n const nextListeners = this._getListeners(eventName).concat(listener);\n this.events.set(eventName, nextListeners);\n if (this.maxListeners > 0 && this.listenerCount(eventName) > this.maxListeners && !this.hasWarnedAboutPotentialMemoryLeak) {\n this.hasWarnedAboutPotentialMemoryLeak = true;\n const memoryLeakWarning = new MemoryLeakError(\n this,\n eventName,\n this.listenerCount(eventName)\n );\n console.warn(memoryLeakWarning);\n }\n return this;\n }\n on(eventName, listener) {\n return this.addListener(eventName, listener);\n }\n once(eventName, listener) {\n return this.addListener(\n eventName,\n this._wrapOnceListener(eventName, listener)\n );\n }\n prependListener(eventName, listener) {\n const listeners = this._getListeners(eventName);\n if (listeners.length > 0) {\n const nextListeners = [listener].concat(listeners);\n this.events.set(eventName, nextListeners);\n } else {\n this.events.set(eventName, listeners.concat(listener));\n }\n return this;\n }\n prependOnceListener(eventName, listener) {\n return this.prependListener(\n eventName,\n this._wrapOnceListener(eventName, listener)\n );\n }\n removeListener(eventName, listener) {\n const listeners = this._getListeners(eventName);\n if (listeners.length > 0) {\n this._removeListener(listeners, listener);\n this.events.set(eventName, listeners);\n this._emitInternalEvent(\"removeListener\", eventName, listener);\n }\n return this;\n }\n /**\n * Alias for `emitter.removeListener()`.\n *\n * @example\n * emitter.off('hello', listener)\n */\n off(eventName, listener) {\n return this.removeListener(eventName, listener);\n }\n removeAllListeners(eventName) {\n if (eventName) {\n this.events.delete(eventName);\n } else {\n this.events.clear();\n }\n return this;\n }\n /**\n * Returns a copy of the array of listeners for the event named `eventName`.\n */\n listeners(eventName) {\n return Array.from(this._getListeners(eventName));\n }\n /**\n * Returns the number of listeners listening to the event named `eventName`.\n */\n listenerCount(eventName) {\n return this._getListeners(eventName).length;\n }\n rawListeners(eventName) {\n return this.listeners(eventName);\n }\n};\nvar Emitter = _Emitter;\nEmitter.defaultMaxListeners = 10;\nexport {\n Emitter,\n MemoryLeakError\n};\n//# sourceMappingURL=index.mjs.map","import { Emitter } from \"strict-event-emitter\";\n\nimport { MetricThreshold } from \"./metrics/performanceMetric\";\nimport { SprigEvent, DismissReason, StudyType } from \"../constants/sprigEvents\";\nimport { MediaType, PassthroughData } from \"../constants/sprigRecordingEvents\";\nimport { AvPermission } from \"../types/card\";\nimport { RecordedTaskResponseType } from \"../view/cards/recordedTask/store\";\n\nimport type { ReplayDurationType } from \"../controller/types\";\n\nexport interface MobileReplayConfig {\n mobileMetricsReportingEnabled?: boolean;\n metricsReportingInterval?: number;\n metricsThresholds?: MetricThreshold[];\n maxMobileReplayDurationSeconds?: number;\n mobileReplaySettings?: {\n hideAllFormContents: boolean;\n hidePasswordsOnly: boolean;\n hideAllImages: boolean;\n };\n}\n\nexport type SprigEventMap = {\n // internal events\n \"survey.question\": [\n {\n qid: number;\n props: unknown;\n },\n ];\n \"recorded.task.permission.screen\": [];\n \"recorded.task.start\": [];\n \"survey.complete\": [number];\n \"verify.view.version\": [\n {\n \"view.version\": string;\n },\n ];\n\n // sprig events\n [SprigEvent.CloseSurveyOnOverlayClick]: [];\n [SprigEvent.FeedbackButtonLoaded]: [\n {\n name: string;\n \"survey.id\"?: number;\n },\n ];\n [SprigEvent.SDKReady]: [MobileReplayConfig];\n [SprigEvent.SurveyAppeared]: [\n {\n name: string;\n \"survey.id\": number;\n },\n ];\n [SprigEvent.SurveyDimensions]: [\n {\n contentFrameHeight: number;\n contentFrameWidth: number;\n name: string;\n \"survey.id\": number;\n },\n ];\n [SprigEvent.SurveyClosed]: [\n {\n initiator?: string;\n name: string;\n studyType?: StudyType;\n \"survey.id\": number;\n },\n ];\n [SprigEvent.SurveyFadingOut]: [];\n [SprigEvent.SurveyHeight]: [\n {\n name: string;\n contentFrameHeight: number;\n \"survey.id\": number;\n },\n ];\n [SprigEvent.SurveyWidth]: [\n {\n name: string;\n contentFrameWidth: number;\n \"survey.id\": number;\n },\n ];\n [SprigEvent.SurveyLifeCycle]: [{ state: string }];\n [SprigEvent.SurveyPresented]: [\n {\n name: string;\n \"survey.id\": number;\n },\n ];\n [SprigEvent.SurveyCloseRequested]: [\n {\n initiator: DismissReason;\n name?: string;\n studyType?: StudyType;\n \"survey.id\": number;\n },\n ];\n [SprigEvent.SurveyWillClose]: [\n {\n initiator: DismissReason;\n name?: string;\n studyType?: StudyType;\n \"survey.id\": number;\n },\n ];\n [SprigEvent.SurveyWillPresent]: [\n {\n name: string;\n \"survey.id\": number;\n },\n ];\n [SprigEvent.VisitorIDUpdated]: [{ visitorId: string | null }];\n [SprigEvent.QuestionAnswered]: [\n {\n answeredAt?: number;\n questionIndex?: number;\n value: unknown;\n \"survey.id\": number;\n },\n ];\n [SprigEvent.ReplayCapture]: [\n {\n responseGroupUid: string;\n hasQuestions: boolean;\n uploadId: string;\n seconds: number;\n replayType: ReplayDurationType;\n generateVideoUploadUrlPayload: {\n isReplay: boolean;\n mediaRecordingUid: string;\n mediaType: MediaType;\n questionId: number;\n responseGroupUid: string;\n surveyId: number;\n updatedAt: string;\n visitorId: string | null;\n };\n surveyId: number;\n },\n ];\n [SprigEvent.ReplayPaused]: [];\n [SprigEvent.ReplayResumed]: [];\n // recording events\n \"av.permission\": [\n {\n \"stream.ready\": (\n avStream: MediaStream | null,\n captureStream?: MediaStream | null,\n ) => void;\n \"permission.descriptors\": AvPermission[];\n },\n ];\n \"begin.recording\": [\n {\n \"recording.media.types\": MediaType[];\n \"start.recording.callback\": (mediaRecordingUids: UUID[]) => void;\n },\n ];\n \"finish.task\": [\n {\n \"begin.callback\": (mediaRecordingUid: UUID) => void;\n \"current.index\": number;\n \"passthrough.data\": PassthroughData;\n \"progress.callback\": (\n mediaRecordingUid: UUID,\n data: { detail: number },\n ) => void;\n \"task.complete.callback\": (taskDurationMillisecond: number) => void;\n \"task.response\": RecordedTaskResponseType;\n \"upload.callback\": (\n mediaRecordingUid: UUID | null,\n successOrError: true | unknown,\n ) => void;\n },\n ];\n \"permission.status\": [\n {\n \"permission.status.callback\": (\n avStream: MediaStream | undefined,\n hasVideoPermission: boolean,\n hasScreenPermission: boolean,\n captureStream: MediaStream | undefined,\n ) => void;\n },\n ];\n \"screen.permission\": [\n {\n \"screen.permission.requested\"?: (data: boolean) => void;\n \"stream.ready.callback\": (\n avStream: MediaStream | null,\n captureStream: MediaStream | null,\n ) => void;\n },\n ];\n \"start.task\": [];\n};\n\nexport type EventPayload = {\n [Property in keyof SprigEventMap]: SprigEventMap[Property][0];\n};\n\nconst eventEmitter = new Emitter<SprigEventMap>();\n\nexport type SprigEventEmitter = typeof eventEmitter;\n\nexport default eventEmitter;\n","import { StudyType } from \"../constants/sprigEvents\";\nimport { StorageKey } from \"../controller/types\";\nimport { AppCard } from \"../types/card\";\nimport { Config } from \"../types/config\";\n\nexport const delay = async (ms: number) => {\n await new Promise<void>((res) => {\n setTimeout(res, ms);\n });\n};\n\n/**\n * Get true or false for whether to direct embed from platform headers\n * @returns user meta information\n */\nexport const shouldDirectEmbed = ({\n \"userleap-platform\": platform,\n}: Config[\"headers\"]) => {\n return window.UserLeap?.forceDirectEmbed || platform !== \"web\";\n};\n\nclass StorageHelper {\n private storage?: Storage;\n private tempStorage: Record<string, string> = {};\n public isStorageAvailable: boolean;\n\n constructor(storage: \"sessionStorage\" | \"localStorage\") {\n try {\n this.storage = window[storage];\n const test = \"__storage_test__\";\n this.storage.setItem(test, test);\n this.storage.removeItem(test);\n this.isStorageAvailable = true;\n } catch (e) {\n this.isStorageAvailable = false;\n }\n }\n\n public setItem(key: StorageKey, value: string) {\n if (this.isStorageAvailable && this.storage) {\n this.storage.setItem(key, value);\n } else {\n this.tempStorage[key] = value;\n }\n }\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n public setItemObject(key: StorageKey, value: Record<string, unknown>) {\n try {\n this.setItem(key, JSON.stringify(value));\n } catch (err) {\n if (err instanceof Error) {\n err.stack = key + \": \" + value;\n window.UserLeap.reportError(\"Failed to save to local storage\", err);\n }\n }\n }\n\n public getItem(key: StorageKey) {\n if (this.isStorageAvailable && this.storage) {\n return this.storage.getItem(key);\n } else {\n return this.tempStorage[key];\n }\n }\n\n public getItemObject(key: StorageKey) {\n const stringifiedObject = this.getItem(key);\n if (stringifiedObject) {\n try {\n return JSON.parse(stringifiedObject);\n } catch (err) {\n if (err instanceof Error) {\n err.stack = key + \": \" + stringifiedObject;\n window.UserLeap.reportError(\"Failed to parse local storage\", err);\n }\n }\n }\n return {};\n }\n\n public removeItem(key: StorageKey) {\n if (this.isStorageAvailable && this.storage) {\n this.storage.removeItem(key);\n } else {\n delete this.tempStorage[key];\n }\n }\n\n public clear() {\n if (this.isStorageAvailable && this.storage) {\n this.storage.clear();\n } else {\n this.tempStorage = {};\n }\n }\n}\n\nexport const groupCards = (cards: AppCard[], index: number): AppCard[] => {\n const cardsGroup: AppCard[] = [cards[index]];\n\n const groupId = cards[index].groupId;\n\n if (groupId) {\n // If the card is part of a group, we can add it to the cardsGroup\n // slice at the index to handle skip logic\n return cards.slice(index).reduce((acc: AppCard[], card: AppCard) => {\n if (card.groupId === groupId) {\n acc.push(card);\n }\n return acc;\n }, []);\n }\n\n return cardsGroup;\n};\n\nexport const isLongFormSurvey = (studyType: StudyType | undefined) => {\n return studyType === \"longFormSurvey\";\n};\n\nexport const sessionStorageHelper = new StorageHelper(\"sessionStorage\");\nexport const localStorageHelper = new StorageHelper(\"localStorage\");\n","class Deferred<T = unknown, R = unknown> {\n payload: T;\n promise: Promise<R>;\n reject: (reason?: unknown) => void = () => {};\n resolve: (value: R) => void = () => {};\n\n constructor(payload: T) {\n this.payload = payload;\n this.promise = new Promise((resolve, reject) => {\n this.reject = reject;\n this.resolve = resolve;\n });\n }\n\n resolveRequest(result: R) {\n this.resolve(result);\n }\n}\n\nexport default Deferred;\n","type ReplayModule = typeof import(\"./replay\");\n\ninterface Modules {\n replay: ReplayModule | null;\n}\n\nexport const modules: Modules = {\n replay: null,\n};\n\nexport const registerReplay = (m: ReplayModule) => {\n modules.replay = m;\n};\n\nexport const getModuleHeaders = () => {\n const headerValue = [];\n if (modules.replay) headerValue.push(\"replay\");\n return headerValue.join(\",\");\n};\n","import Deferred from \"./Deferred\";\nimport { delay } from \"./general\";\nimport { getModuleHeaders } from \"../modules/moduleRegistry\";\nimport { Config, InstallationMethod } from \"../types/config\";\n\nexport const NETWORK_CONFIG = {\n RATELIMIT_RESET_DEFAULT: 10, // 10s to restart the rate limit retry\n};\n\nexport type FetchOptions = Omit<RequestInit, \"headers\"> & {\n headers?: Config[\"headers\"] | RequestInit[\"headers\"];\n retries?: number;\n shouldDropOnRateLimit?: boolean;\n shouldRetryRequest?: boolean;\n};\n\ninterface RequestInfo {\n options: RequestInit;\n retries: number;\n shouldDropOnRateLimit?: boolean;\n url: string;\n}\nexport type Result = {\n error?: Error;\n ok?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n json?: any;\n reportError?: boolean;\n status?: number;\n} & Partial<Response>;\n\nlet killswitch = false;\nlet killswitchReason = \"\";\nlet isRateLimited = false;\nlet isViolatingCspPolicy = false;\nlet pendingRequestQueue: Deferred<RequestInfo, Result>[] = [];\n\n// generates a CSP violation handler that prevents ulFetch retries when the targetUrl is blocked.\nconst getInstallationMethodHeader = (\n Sprig: Partial<WindowSprig>,\n): InstallationMethod => {\n if (Sprig._config && Sprig._config.installationMethod)\n return Sprig._config.installationMethod;\n if (Sprig._gtm) return \"web-gtm\";\n if (Sprig._segment) return \"web-segment\";\n return \"web-snippet\";\n};\n\nexport const cspViolationHandler = (event: SecurityPolicyViolationEvent) => {\n if (event?.blockedURI?.includes(window.UserLeap._API_URL)) {\n isViolatingCspPolicy = true;\n\n console.warn(\n `[Sprig] ${event.blockedURI} is blocked by Content-Security-Policy`,\n );\n }\n};\n\nexport const killNetworkRequests = (reason = \"\") => {\n killswitch = true;\n killswitchReason = reason;\n};\n\nexport function getHttpHeaders(\n Sprig: Partial<WindowSprig> = {},\n): Config[\"headers\"] {\n const headers: Config[\"headers\"] = {\n \"Content-Type\": \"application/json\",\n \"userleap-platform\": \"web\",\n \"x-ul-sdk-version\": __SDK_VERSION__,\n \"x-ul-installation-method\": getInstallationMethodHeader(Sprig),\n \"sprig-modules\": getModuleHeaders(),\n };\n if (__NPM_BUNDLED___) {\n headers[\"x-ul-package-version\"] = __BUNDLED_VERSION__;\n }\n\n if (Sprig.envId) headers[\"x-ul-environment-id\"] = Sprig.envId;\n if (Sprig.token) headers[\"Authorization\"] = \"Bearer \" + Sprig.token;\n if (Sprig.userId) headers[\"x-ul-user-id\"] = Sprig.userId;\n if (Sprig.visitorId) headers[\"x-ul-visitor-id\"] = Sprig.visitorId;\n if (Sprig.partnerAnonymousId)\n headers[\"x-ul-anonymous-id\"] = Sprig.partnerAnonymousId;\n if (Sprig.mobileHeadersJSON) {\n const mobileHeaders = JSON.parse(Sprig.mobileHeadersJSON);\n Object.assign(headers, mobileHeaders);\n }\n if (Sprig.locale) headers[\"accept-language\"] = Sprig.locale; // custom set locale overrides original header locales\n if (window.previewMode) headers[\"x-ul-preview-mode\"] = \"1\";\n\n return headers;\n}\n\nconst dropOrQueueRequest = async ({\n shouldDropOnRateLimit,\n ...requestInfo\n}: RequestInfo) => {\n if (shouldDropOnRateLimit) {\n return { status: 429 };\n } else {\n const deferredRequest = new Deferred<\n Omit<RequestInfo, \"shouldDropOnRateLimit\">,\n Result\n >(requestInfo);\n pendingRequestQueue.push(deferredRequest);\n return deferredRequest.promise;\n }\n};\n\nexport const sprigFetch = async (\n url: string,\n _options: FetchOptions,\n): Promise<Result> => {\n const {\n retries = 0,\n shouldDropOnRateLimit = false,\n shouldRetryRequest = false,\n ...options\n } = _options;\n\n // drop or queue request based on the current rate limit status\n const requestInfo = { url, options, retries, shouldDropOnRateLimit };\n if (isRateLimited && !shouldRetryRequest) {\n return dropOrQueueRequest(requestInfo);\n }\n const killswitchResponse = { ok: false, reportError: false };\n if (killswitch) {\n console.info(`UserLeap - ${killswitchReason}`);\n return killswitchResponse;\n }\n\n try {\n const result = await fetch(url, options);\n\n if (result.status === 429) {\n // retry if rate limit is not in effect yet and the request is not droppable\n const shouldRetryCurrentRequest =\n (!isRateLimited && !shouldDropOnRateLimit) || shouldRetryRequest;\n\n if (shouldRetryCurrentRequest) {\n isRateLimited = true;\n const rateLimitResetTime = result.headers.has(\"ratelimit-reset\")\n ? Number(result.headers.get(\"ratelimit-reset\"))\n : NETWORK_CONFIG.RATELIMIT_RESET_DEFAULT;\n\n await delay(rateLimitResetTime * 1000);\n return sprigFetch(url, {\n ...options,\n shouldDropOnRateLimit,\n shouldRetryRequest: true,\n });\n } else {\n return dropOrQueueRequest(requestInfo);\n }\n }\n isRateLimited = false;\n if (pendingRequestQueue.length) {\n pendingRequestQueue.map((deferredRequest) => {\n const payload = deferredRequest.payload;\n sprigFetch(payload.url, {\n ...payload.options,\n retries: payload.retries,\n shouldDropOnRateLimit: payload.shouldDropOnRateLimit,\n }).then((result) => {\n deferredRequest.resolveRequest(result);\n });\n });\n pendingRequestQueue = [];\n }\n if (result.ok) {\n if (result.status === 249) {\n killNetworkRequests();\n return killswitchResponse;\n }\n\n const responseText = await result.text();\n try {\n if (responseText && responseText !== \"OK\") {\n result.json = JSON.parse(responseText);\n }\n return result;\n } catch (err) {\n return {\n ok: false,\n reportError: false,\n error: new Error(\n `failed parsing response json for ${url} - ${responseText}`,\n ),\n };\n }\n }\n return result;\n } catch (err) {\n const newAttempt = retries + 1;\n if (newAttempt > 5 || isViolatingCspPolicy) {\n return {\n ok: false,\n reportError: false,\n error: err as Error,\n };\n }\n\n // 1s... 2s... 4s... 8s... 16s...\n await delay(Math.pow(2, retries) * 1000);\n return sprigFetch(url, { ...options, retries: newAttempt });\n }\n};\n","import { v4 as uuidv4 } from \"uuid\";\n\nimport {\n removeContainer,\n createContainer,\n removeContainerOnClose,\n createFrame,\n} from \"./iframe\";\nimport { SurveyState } from \"./types\";\nimport { MOBILE_MAX_WIDTH } from \"../constants/css\";\nimport { SprigEvent, EVENTS, StudyType } from \"../constants/sprigEvents\";\nimport { breadcrumbsLogger as logger } from \"../helpers/BreadcrumbsLogger\";\nimport ConflictingWidgets from \"../helpers/conflicting_widgets\";\nimport eventEmitter, { EventPayload } from \"../helpers/eventEmitter\";\nimport { shouldDirectEmbed, localStorageHelper } from \"../helpers/general\";\nimport { FetchOptions, getHttpHeaders, sprigFetch } from \"../helpers/network\";\nimport { modules } from \"../modules/moduleRegistry\";\nimport {\n type HeatmapCaptureParams,\n type ReplayCaptureInfo,\n} from \"../modules/replay\";\nimport { Card } from \"../types/card\";\nimport { Config, HttpHeader, ProductConfig } from \"../types/config\";\n\nconst VIEW_TAG = \"ul-view-sdk-script\";\nconst MOBILE_PLATFORM_HEADERS = [\"ios\", \"android\"];\nexport const PATH_VISITOR = \"visitors\";\nexport const PATH_ENV = \"environments\";\n\nexport interface QuestionsResponse {\n context: {\n outcome: string;\n product: { name: string };\n visitor: { outcome: \"\" };\n };\n delay?: number;\n forceBrandedLogo: boolean;\n isFeedback?: boolean;\n endCard: Config[\"endCard\"];\n heatmap?: HeatmapCaptureParams;\n locale: string;\n questions: Card[];\n previewMode?: boolean;\n productConfig: ProductConfig;\n responseGroupUid: string;\n sessionReplay?: ReplayCaptureInfo;\n studyType: StudyType;\n surveyId: number;\n uuid: string;\n vid: string;\n groupid?: string;\n}\n\nexport async function authenticatedFetch(url: string, _options: FetchOptions) {\n const { shouldDropOnRateLimit, ...options } = _options;\n options.headers = Object.assign(\n getHttpHeaders(window.UserLeap),\n options.headers,\n );\n const results = await sprigFetch(url, {\n ...options,\n shouldDropOnRateLimit,\n });\n if (results.ok) {\n const authHeader = results.headers?.get(\"Authorization\");\n const tokenPieces = authHeader ? authHeader.split(\" \") : undefined;\n const headerToken =\n tokenPieces && tokenPieces.length === 2 ? tokenPieces[1] : undefined;\n\n const visitorId = results.headers?.get(\n \"x-ul-visitor-id\" satisfies HttpHeader,\n );\n if (window.UserLeap.userId && visitorId === window.UserLeap.visitorId) {\n //this visitor is now identified so remove from anon map\n const envUuidMap = localStorageHelper.getItemObject(\n \"sprig.anon.env.vid.map\",\n );\n if (envUuidMap && envUuidMap[window.UserLeap.envId] === visitorId) {\n delete envUuidMap[window.UserLeap.envId];\n localStorageHelper.setItemObject(\"sprig.anon.env.vid.map\", envUuidMap);\n }\n }\n\n // reset the token and visitor id when they are valid and if either one of them is different from old values\n if (\n headerToken &&\n visitorId &&\n (visitorId !== window.UserLeap.visitorId ||\n window.UserLeap.token !== headerToken)\n ) {\n widgetSetLocalStorageCredentialsValue(\"token\", headerToken);\n widgetSetLocalStorageCredentialsValue(\"vid\", visitorId);\n\n eventEmitter.emit(SprigEvent.VisitorIDUpdated, { visitorId });\n\n window.UserLeap.token = headerToken;\n window.UserLeap.visitorId = visitorId;\n }\n }\n if (results.json?.logMessage)\n console.warn(`[Sprig] ${results.json.logMessage}`);\n return results;\n}\n\nexport function widgetSetLocalStorageCredentialsValue(\n field: string,\n value: string | null,\n) {\n const savedIds = localStorageHelper.getItemObject(\"userleap.ids\");\n let ids = savedIds[window.UserLeap.envId];\n if (ids) {\n ids[field] = value;\n } else {\n ids = { [field]: value };\n }\n savedIds[window.UserLeap.envId] = ids;\n localStorageHelper.setItemObject(\"userleap.ids\", savedIds);\n}\n\nexport function widgetGetVID() {\n return window.previewMode ? \"0\" : window.UserLeap.visitorId ?? \"\";\n}\nexport function apiUrl(\n version: string,\n fillPaths: string[] | null,\n trailing?: string,\n) {\n const components = [window.UserLeap._API_URL, \"sdk\", version];\n if (fillPaths) {\n fillPaths.forEach((p) => {\n components.push(p);\n if (p === PATH_ENV) components.push(window.UserLeap.envId);\n else if (p === PATH_VISITOR) components.push(widgetGetVID());\n });\n }\n if (trailing) components.push(trailing);\n return components.join(\"/\");\n}\n\nconst shouldCreateDirectEmbedContainer = () => {\n const headers = getHttpHeaders(window.UserLeap);\n const isMobileWebview = calculateIsMobileWebview(headers);\n const forceDirectEmbed = window.UserLeap.forceDirectEmbed;\n const platformIsWeb = headers[\"userleap-platform\"] === \"web\";\n return isMobileWebview || (forceDirectEmbed && platformIsWeb);\n};\n\nexport const displayQuestions = async (\n responseJson: QuestionsResponse,\n trackPageViewUrl?: string,\n initializedHeatmapPrivacySettings?: object,\n): Promise<{\n message?: string;\n responseGroupUid?: string;\n success: boolean;\n surveyId?: number;\n surveyState: SurveyState;\n delay?: number;\n}> => {\n const {\n context,\n delay,\n forceBrandedLogo,\n endCard,\n isFeedback = false,\n heatmap,\n locale,\n previewMode,\n productConfig,\n questions,\n responseGroupUid,\n surveyId,\n uuid,\n vid,\n sessionReplay,\n studyType,\n } = responseJson;\n const headers = getHttpHeaders(window.UserLeap);\n const isMobileWebview = calculateIsMobileWebview(headers);\n const useMobileStyling = calculateUseMobileStyling(headers);\n\n if (sessionReplay) {\n if (isMobileWebview) {\n eventEmitter.emit(SprigEvent.ReplayCapture, {\n responseGroupUid,\n hasQuestions: !!questions?.length,\n surveyId,\n uploadId: sessionReplay.uploadId,\n replayType: sessionReplay.replayDurationType ?? \"before\",\n seconds: sessionReplay.replayDurationSeconds,\n generateVideoUploadUrlPayload: {\n mediaRecordingUid: uuidv4(),\n mediaType: \"screen\",\n questionId: 1,\n responseGroupUid,\n surveyId,\n updatedAt: new Date().toISOString(),\n visitorId: window.UserLeap.visitorId,\n isReplay: true,\n },\n });\n } else {\n if (!modules.replay) {\n window.UserLeap.reportError(\n \"displayQuestions\",\n new Error(`Replay module not registered`),\n );\n return {\n success: false,\n message: \"Replay module not registered\",\n surveyState: \"no survey\",\n };\n }\n modules.replay.scheduleOrCaptureReplay({\n responseGroupId: responseGroupUid,\n surveyId,\n visitorId: vid,\n replayParams: sessionReplay,\n completeUploadHeaders: headers,\n apiUrl: window.UserLeap._API_URL,\n triggerTimestamp: Date.now(),\n isStandalone: questions.length === 0,\n });\n }\n }\n // initialize here, turn off when done uploading\n if (heatmap) {\n if (!modules.replay) {\n window.UserLeap.reportError(\n \"displayQuestions\",\n new Error(`Replay module not registered`),\n );\n return {\n success: false,\n message: \"Replay module not registered\",\n surveyState: \"no survey\",\n };\n }\n const {\n eventId,\n replayParams,\n responseGroupUid,\n surveyId: heatmapSurveyId,\n } = heatmap;\n await modules.replay.initializeReplay({\n maxReplayDurationSeconds: 300,\n maxInflightRequests: window.UserLeap.maxInflightReplayRequests,\n teardownAfter: true,\n apiUrl: window.UserLeap._API_URL,\n replaySettings: initializedHeatmapPrivacySettings,\n });\n modules.replay.tryReplayAction(\n () =>\n modules.replay?.scheduleCapture({\n apiUrl: window.UserLeap._API_URL,\n completeUploadHeaders: headers,\n eventId,\n isHeatmap: true,\n replayParams,\n responseGroupId: responseGroupUid,\n surveyId: heatmapSurveyId,\n triggerTimestamp: Date.now(),\n visitorId: vid,\n }),\n \"Error in scheduling/capturing replay\",\n );\n }\n\n // Unrender if survey, vid or questions are undefined or empty\n if (vid == null || !questions?.length) {\n logger.info(\"CannotDisplaySurvey\", { vid });\n return {\n success: false,\n message: \"[Sprig] no survey found\",\n surveyState: \"no survey\",\n };\n }\n\n if (__NPM_BUNDLED___) {\n if (hasVideoVoiceQuestion(questions)) {\n return {\n success: false,\n message: \"[Sprig] bundled version does not support video voice\",\n surveyState: \"no survey\",\n };\n }\n }\n\n // Are we showing a Survey already?\n if (window.UserLeap.container) {\n logger.info(\"AlreadyDisplayingSurvey\");\n const message = `[Sprig] (ERR-409) Found an existing Survey container, aborting rendering of this survey`;\n console.warn(message);\n return { success: false, message, surveyState: \"no survey\" };\n }\n\n if (\n vid !== window.UserLeap.visitorId &&\n uuid !== window.UserLeap.visitorId &&\n !window.previewMode\n ) {\n const message = \"Attempted to display survey to a different visitor\";\n window.UserLeap.reportError(\"DisplaySurvey\", new Error(message));\n return { success: false, message, surveyState: \"no survey\" };\n }\n\n logger.info(\"ShowingSurvey\", { surveyId });\n modules.replay?.RecordSurveyShown({\n id: surveyId,\n userAgent: window.navigator.userAgent,\n });\n\n ConflictingWidgets.disable();\n eventEmitter.emit(SprigEvent.SurveyWillPresent, {\n name: SprigEvent.SurveyWillPresent,\n \"survey.id\": surveyId,\n });\n let frameId,\n containerFrame = document.createElement(\"div\"),\n contentWinDocHead,\n contentWindow,\n hasOverlay;\n\n const verifyViewVersion = (data: EventPayload[\"verify.view.version\"]) => {\n const { \"view.version\": viewSdkVersion } = data;\n if (viewSdkVersion !== headers[\"x-ul-sdk-version\"]) {\n removeContainer();\n }\n eventEmitter.removeListener(\"verify.view.version\", verifyViewVersion);\n };\n eventEmitter.on(\"verify.view.version\", verifyViewVersion);\n window.UserLeap.useMobileStyling = useMobileStyling;\n\n if (shouldDirectEmbed(headers)) {\n frameId = \"ul-direct-embeded-frame\";\n contentWinDocHead = document.head;\n contentWindow = window;\n hasOverlay = false;\n\n if (shouldCreateDirectEmbedContainer()) {\n createContainer(surveyId, isFeedback); // sets window.UserLeap.container\n containerFrame.id = frameId;\n\n (window.UserLeap.container as unknown as HTMLDivElement).appendChild(\n containerFrame,\n );\n\n removeContainerOnClose();\n eventEmitter.emit(SprigEvent.SurveyLifeCycle, { state: \"presented\" });\n eventEmitter.emit(SprigEvent.SurveyPresented, {\n name: SprigEvent.SurveyPresented,\n \"survey.id\": surveyId,\n });\n }\n } else {\n ({\n frameId,\n contentWinDocHead,\n contentWindow,\n hasOverlay,\n iframe: containerFrame,\n } = createFrame({ productConfig, useMobileStyling, surveyId, isFeedback }));\n }\n\n window.UserLeap.frameId = frameId;\n const configureExitOnOverlayClick = (exit: () => void) => {\n eventEmitter.once(SprigEvent.CloseSurveyOnOverlayClick, exit);\n };\n\n // Attach questions response to frame bootstrap config\n const config: Config = {\n ...{\n apiURL: window.UserLeap._API_URL,\n cards: questions,\n configureExitOnOverlayClick,\n context,\n endCard,\n envId: window.UserLeap.envId,\n eventEmitFn: eventEmitter.emit.bind(eventEmitter),\n fontFamily: window.UserLeap.fontFamily,\n fontFamilyURL: window.UserLeap.fontFamilyURL,\n forceBrandedLogo,\n frame: containerFrame,\n headers,\n locale,\n mobileSDKVersion: window.UserLeap.mobileSDKVersion,\n previewKey: localStorageHelper.getItem(\"sprig.previewKey\"),\n previewMode: previewMode,\n productConfig: {\n framePosition: productConfig?.framePosition,\n desktopDisplay: productConfig?.desktopDisplay,\n placement: productConfig?.placement,\n },\n responseGroupUid,\n startingQuestionIdx: window.UserLeap.config?.startingQuestionIdx,\n studyType,\n styleNonce: window.UserLeap.styleNonce,\n surveyId,\n tabTitle: document.title,\n trackPageViewUrl,\n ulEvents: EVENTS,\n upchunkLibraryURL: window.UserLeap.upchunkLibraryURL,\n useMobileStyling,\n userId: uuid,\n viewDocument: contentWindow?.document,\n viewWindow: contentWindow,\n visitorAttributes: {\n externalUserId: window.UserLeap.userId,\n email: window.UserLeap.email,\n },\n },\n ...window.UserLeap._config,\n };\n\n // Resetting it to null after initial config so study restarts back to question 0\n if (window.UserLeap._config?.startingQuestionIdx)\n window.UserLeap._config = {\n ...window.UserLeap._config,\n startingQuestionIdx: null,\n };\n\n // Only custom CSS previews should use global window.UserLeap.customStyles and window.UserLeap.feedbackCustomStyles\n // If those exist, prioritize them over productConfig.customStyles so styles stay consistent in preview\n // Else use productConfig.customStyles\n const viewStyles =\n (isFeedback\n ? window.UserLeap.feedbackCustomStyles\n : window.UserLeap.customStyles) ?? productConfig.customStyles;\n\n config.customStyles = viewStyles;\n if (contentWindow) contentWindow.__cfg = config;\n\n function makeSafeScriptTag() {\n const scriptTag = document.createElement(\"script\");\n if (window.UserLeap.nonce) {\n scriptTag.setAttribute(\"nonce\", window.UserLeap.nonce);\n }\n scriptTag.id = VIEW_TAG;\n return scriptTag;\n }\n const frameSrc = window.UserLeap.viewSDKURL\n ? window.UserLeap.viewSDKURL\n : config.path;\n\n const existingScript = document.getElementById(VIEW_TAG);\n existingScript && existingScript.remove();\n // Inject frame application script\n const frameScript = makeSafeScriptTag();\n\n const updateContainerDisplay = () => {\n if (window.UserLeap.container)\n Object.assign(window.UserLeap.container.style, { display: \"flex\" });\n };\n\n if (\n config.installationMethod === \"web-npm\" ||\n config.installationMethod === \"web-npm-bundled\" ||\n import.meta.env.DEV\n ) {\n const { default: view } = await import(\"../view/view\");\n view.configure(config);\n if (hasOverlay && window.UserLeap.container) updateContainerDisplay();\n } else if (frameSrc) {\n frameScript.src = frameSrc;\n if (hasOverlay) {\n frameScript.addEventListener(\"load\", () => {\n if (window.UserLeap.container) updateContainerDisplay();\n });\n }\n contentWindow?.addEventListener(\n \"error\",\n (e) => {\n if (\n e.target instanceof HTMLScriptElement &&\n e.target.src === frameSrc\n ) {\n window.UserLeap.reportError(\n \"loadFrameScript\",\n new Error(`Frame script failed to load`),\n );\n }\n },\n {\n capture: true,\n once: true,\n },\n );\n }\n contentWinDocHead?.appendChild(frameScript);\n type surveyStateResponse = {\n success: boolean;\n surveyState: SurveyState;\n surveyId: number;\n responseGroupUid: string;\n delay?: number;\n };\n const surveyStatusPayload: surveyStateResponse = {\n success: true,\n surveyState: \"ready\",\n surveyId,\n responseGroupUid,\n };\n if (window.UserLeap.isMobileSDK && delay) {\n surveyStatusPayload.delay = delay;\n }\n return surveyStatusPayload;\n};\n\nexport function calculateUseMobileStyling(headers: Config[\"headers\"]) {\n if (window.UserLeap.useMobileStyling !== undefined)\n return window.UserLeap.useMobileStyling;\n\n // handle default-0 width iframes, if UserLeap.windowDimensions.width is not specified, with desktop styling\n const windowWidth =\n window.UserLeap.windowDimensions?.width ?? document.body.clientWidth;\n return (\n calculateIsMobileWebview(headers) ||\n (windowWidth > 10 && windowWidth < MOBILE_MAX_WIDTH)\n );\n}\n\nexport function calculateIsMobileWebview(headers: Config[\"headers\"]) {\n return MOBILE_PLATFORM_HEADERS.includes(headers[\"userleap-platform\"]);\n}\n\nconst hasVideoVoiceQuestion = (questions: Card[]) => {\n return questions.some((q) => q.type === \"videovoice\");\n};\n","// used to control the top-level app frame, eg destroying it after the study is completed or closed\nexport const APP_ID = \"ul-app\";\n\nexport type CssConstant =\n | \"fade-in-transition\"\n | \"sprig-button-disabled\"\n | \"sprig-feedback-container\"\n | \"sprig-feedback-error-container\"\n | \"sprig-feedback-loading-animation\"\n | \"sprig-feedback-loading-container\"\n | \"ul-app\"\n | \"ul-button-checkmark\"\n | \"ul-button-inactive\"\n | \"ul-button-left-align\"\n | \"ul-caption\"\n | \"ul-card\"\n | \"ul-card__container\"\n | \"ul-card-main-content\"\n | \"ul-card-skip__button\"\n | \"ul-footer\"\n | \"ul-loading-spinner-container\"\n | \"ul-loading-spinner\"\n | \"ul-question\"\n | \"select-button\"\n | \"select-button-placeholder\"\n | \"select-list\"\n | \"select-option\"\n | \"select-checkbox\"\n | \"sprig-border-bottom\"\n | \"sprig-border-top\"\n | \"sprig-container\"\n | \"sprig-header-container\"\n | \"sprig-question-body\"\n | \"sprig-question-footer-container\"\n | \"sprig-stretch\"\n | \"long-form-button\"\n | \"long-form-button-text-container\"\n | \"long-form-question-footer-container\"\n | \"long-form-question-footer-container-center\"\n | \"long-form-question-footer-container-actions\"\n | \"long-form-question-footer-container-logo\"\n | \"ul-card__button-wrapper\"\n | \"ul-card-vertical__button-wrapper\";\n\nexport const DEFAULT_BORDER_COLOR = \"#e6e6e6\";\nexport const DEFAULT_TRANSPARENT_COLOR = \"#ffffff\";\nexport const ERROR_BORDER_COLOR = \"#bd282a\";\n\n// for phone styling (thicker borders, etc)\nexport const MOBILE_MAX_WIDTH = 500;\n\n// embeds should display in mobile mode under 1030px\nexport const EMBED_MOBILE_MAX_WIDTH = 1030;\n","import { CSSProperties } from \"preact/compat\";\n\nimport { DEFAULT_WIDTH } from \"./constants\";\nimport { getLoadingContainer } from \"./feedback\";\nimport { widgetSetLocalStorageCredentialsValue } from \"./shared\";\nimport { SprigEvent, StudyType } from \"../constants/sprigEvents\";\nimport eventEmitter from \"../helpers/eventEmitter\";\nimport { Config, ProductConfig } from \"../types/config\";\n\nexport const FRAME_ID = \"ul-frame\";\n\nif (window.UserLeap && window.Sprig) {\n if (window.Sprig._gtm) {\n // if sdk installation snippet references UserLeap, but Google Tag Manager (GTM) references Sprig,\n // overwrite Sprig by assigning it the value of UserLeap to make sure Sprig receives the full functionality without losing any configuration\n window.Sprig = window.UserLeap;\n } else {\n // if sdk installation snippet references Sprig, but Google Tag Manager (GTM) references UserLeap,\n // overwrite UserLeap by assigning it the value of Sprig to make sure Sprig receives the full functionality without losing any configuration\n window.UserLeap = window.Sprig;\n }\n}\n// for an all-new GTM or snippet-based installation referencing Sprig,\n// assign Sprig to UserLeap so that when functionality is defined on UserLeap, it's accessible on Sprig.\nif (!window.UserLeap) window.UserLeap = window.Sprig;\n// for a legacy GTM or snippet-based installation referencing UserLeap,\n// assign UserLeap to Sprig so that the functionality is accessible on Sprig, too.\nif (!window.Sprig) window.Sprig = window.UserLeap;\n\nconst LIGHT_OVERLAY_BACKGROUND_COLOR = \"rgba(255,255,255, 0.95)\";\nconst DARK_OVERLAY_BACKGROUND_COLOR = \"rgba(0,0,0,0.9)\";\nconst MARGIN = \"0px\";\n\nexport const createContainer = (\n surveyId: number | undefined,\n isFeedback: boolean,\n isFeedbackSlider?: boolean,\n) => {\n // Create home container\n window.UserLeap.container = document.createElement(\"div\");\n window.UserLeap.container.className = `ul-container${\n isFeedback ? \" ul-container-feedback\" : \"\"\n }`;\n if (surveyId) window.UserLeap.container.dataset.studyId = surveyId.toString();\n\n const loadingContainer = getLoadingContainer();\n\n if (\n isFeedbackSlider &&\n loadingContainer &&\n !window.UserLeap.useMobileStyling\n ) {\n loadingContainer.appendChild(window.UserLeap.container);\n } else {\n document.body.appendChild(window.UserLeap.container);\n }\n};\n\nexport const removeContainer = (initiator?: string, studyType?: StudyType) => {\n removeIFrameEventListeners();\n\n const container = window.UserLeap.container;\n\n if (!container) return;\n try {\n container.parentNode?.removeChild(container);\n window.UserLeap.container = null;\n\n widgetSetLocalStorageCredentialsValue(\"trackStartUrl\", null);\n eventEmitter.emit(SprigEvent.SurveyLifeCycle, { state: \"dismissed\" });\n eventEmitter.emit(SprigEvent.SurveyClosed, {\n name: SprigEvent.SurveyClosed,\n initiator,\n \"survey.id\": parseInt(container.dataset.studyId!),\n ...(studyType && { studyType }),\n });\n } catch (err) {\n console.warn(\n `[Sprig] (ERR-412) Error removing UserLeap container by ${initiator} ` +\n container,\n );\n if (err instanceof Error)\n window.UserLeap.reportError(\"dismissActiveSurvey\", err);\n }\n};\n\nexport const removeContainerOnClose = () => {\n eventEmitter.once(SprigEvent.SurveyWillClose, ({ initiator, studyType }) => {\n eventEmitter.removeAllListeners(SprigEvent.CloseSurveyOnOverlayClick);\n removeContainer(initiator, studyType);\n });\n};\n\nconst configureOverlayContainer = (\n styleConfig: WindowSprig,\n useMobileStyling: boolean,\n) => {\n const defaultContainerStyle: CSSProperties = {\n position: \"fixed\",\n overflow: \"auto\",\n top: \"0px\",\n left: \"0px\",\n display: \"none\", // overwritten after view is loaded, to prevent blocking website until we can display the survey.\n height: \"100%\",\n width: \"100%\",\n transition: \"background-color 0.3s ease-out\",\n zIndex: 2147483646,\n };\n\n const containerStyle = { ...defaultContainerStyle };\n const overlayStyleConfig = useMobileStyling\n ? styleConfig.overlayStyleMobile\n : styleConfig.overlayStyle;\n\n containerStyle[\"background-color\"] =\n overlayStyleConfig === \"light\"\n ? LIGHT_OVERLAY_BACKGROUND_COLOR\n : DARK_OVERLAY_BACKGROUND_COLOR;\n\n if (!useMobileStyling) containerStyle.margin = \"auto\";\n if (window.UserLeap.container)\n Object.assign(window.UserLeap.container.style, containerStyle);\n};\n\nconst configureFrame = (\n iframe: HTMLIFrameElement,\n productConfig: ProductConfig,\n useMobileStyling: boolean,\n isFeedback?: boolean,\n) => {\n const defaultFrameStyle: CSSProperties = {\n position: \"fixed\",\n bottom: \"0px\",\n right: MARGIN,\n border: 0,\n backgroundColor: \"rgba(0,0,0,0)\",\n zIndex: 2147483646,\n transition: \"height 0.2s ease-in-out\",\n maxWidth: \"100%\",\n };\n\n const styleConfig = Object.assign({}, productConfig, window.UserLeap);\n const { desktopDisplay } = productConfig || {};\n const showFeedbackCenter = desktopDisplay === \"center-modal\";\n if (showFeedbackCenter) {\n styleConfig.framePosition = \"center\";\n }\n\n let framePositionStyle;\n let hasOverlay = false;\n\n if (useMobileStyling) {\n if (window.UserLeap.windowDimensions?.width) {\n defaultFrameStyle.width = `${window.UserLeap.windowDimensions.width}px`;\n } else {\n defaultFrameStyle.width = \"100%\";\n }\n\n if (window.UserLeap.windowDimensions?.height) {\n defaultFrameStyle.maxHeight = `${\n window.UserLeap.windowDimensions.height - 20\n }px`;\n } else if (window.UserLeap.maxHeight) {\n defaultFrameStyle.maxHeight = window.UserLeap.maxHeight;\n } else {\n defaultFrameStyle.maxHeight = `${document.body.clientHeight - 20}px`;\n }\n\n if ([\"light\", \"dark\"].includes(styleConfig.overlayStyleMobile)) {\n hasOverlay = true;\n }\n } else {\n defaultFrameStyle.width = DEFAULT_WIDTH;\n defaultFrameStyle.maxHeight = window.UserLeap.maxHeight || \"66vh\";\n\n const setCenterModalPosition = () => {\n hasOverlay = true;\n framePositionStyle = { margin: \"auto\", position: \"static\" };\n };\n\n // if feedback button, feedback container handles positioning\n if (isFeedback) {\n if (!showFeedbackCenter)\n framePositionStyle = { position: \"relative\", height: \"300px\" };\n else setCenterModalPosition();\n } else {\n // FramePosition does not apply to Feedback studies\n switch (styleConfig.framePosition) {\n case \"bottomLeft\":\n framePositionStyle = { left: MARGIN };\n break;\n case \"topLeft\":\n framePositionStyle = {\n left: MARGIN,\n top: 0,\n };\n break;\n case \"topRight\":\n framePositionStyle = {\n top: 0,\n };\n break;\n case \"center\":\n setCenterModalPosition();\n break;\n }\n }\n }\n\n if (hasOverlay) configureOverlayContainer(styleConfig, useMobileStyling);\n Object.assign(iframe.style, defaultFrameStyle, framePositionStyle);\n return hasOverlay;\n};\n\n/**\n * Create iframe\n */\nexport const createFrame = ({\n productConfig,\n useMobileStyling,\n surveyId,\n isFeedback,\n}: {\n productConfig: ProductConfig;\n useMobileStyling: boolean;\n surveyId: number;\n isFeedback: boolean;\n}) => {\n const frameId = FRAME_ID;\n const isFeedbackSlider =\n isFeedback && productConfig.desktopDisplay === \"slider\";\n createContainer(surveyId, isFeedback, isFeedbackSlider);\n setupIFrameEventListeners();\n // Create iframe for application\n const iframe: Config[\"frame\"] = document.createElement(\"iframe\");\n iframe.id = frameId;\n iframe.setAttribute(\"title\", \"Sprig User Feedback Dialog\");\n\n const hasOverlay = configureFrame(\n iframe,\n productConfig,\n useMobileStyling,\n isFeedback,\n );\n removeContainerOnClose();\n\n /**\n * Set iframe height\n */\n\n let firedHeight = false;\n iframe.setHeight = (height: number) => {\n if (parseInt(iframe.style.height) != height || !firedHeight) {\n firedHeight = true;\n iframe.style.height = `${height}px`;\n eventEmitter.emit(SprigEvent.SurveyHeight, {\n name: SprigEvent.SurveyHeight,\n contentFrameHeight: height,\n \"survey.id\": surveyId,\n });\n }\n };\n\n let firedWidth = false;\n iframe.setWidth = (width: number) => {\n if (parseInt(iframe.style.width) != width || !firedWidth) {\n firedWidth = true;\n iframe.style.width = `${width}px`;\n eventEmitter.emit(SprigEvent.SurveyWidth, {\n name: SprigEvent.SurveyWidth,\n contentFrameWidth: width,\n \"survey.id\": surveyId,\n });\n }\n };\n\n window.UserLeap.container?.appendChild(iframe);\n if (\n productConfig &&\n (useMobileStyling\n ? productConfig.exitOnOverlayClickMobile\n : productConfig.exitOnOverlayClick)\n ) {\n if (window.UserLeap.container) {\n window.UserLeap.container.onclick = () => {\n eventEmitter.emit(SprigEvent.CloseSurveyOnOverlayClick);\n };\n }\n }\n eventEmitter.emit(SprigEvent.SurveyLifeCycle, { state: \"presented\" });\n eventEmitter.emit(SprigEvent.SurveyPresented, {\n name: SprigEvent.SurveyPresented,\n \"survey.id\": surveyId,\n });\n\n const contentWinDoc = iframe.contentWindow?.document;\n if (contentWinDoc) {\n contentWinDoc.open(\"text/html\", \"replace\"),\n contentWinDoc.write(\"<!doctype html><head></head><body></body></html>\"),\n contentWinDoc.close();\n\n if (!useMobileStyling) {\n const iframeBody = contentWinDoc.body;\n iframeBody.style.display = \"flex\";\n iframeBody.style.alignItems = \"center\";\n }\n }\n const contentWinDocHead = contentWinDoc?.head;\n\n return {\n frameId,\n contentWinDocHead,\n contentWindow: iframe.contentWindow,\n hasOverlay,\n iframe,\n };\n};\n\n// Add event listeners related to the SDK iframe\nconst eventListeners = {\n [SprigEvent.SurveyFadingOut]: () => {\n if (window.UserLeap.container) {\n Object.assign(window.UserLeap.container.style, {\n \"background-color\": \"rgba(0,0,0,0)\",\n });\n }\n },\n};\n\nconst setupIFrameEventListeners = () => {\n Object.entries(eventListeners).forEach(([eventName, listener]) => {\n eventEmitter.on(eventName as SprigEvent, listener);\n });\n};\n\nconst removeIFrameEventListeners = () => {\n Object.entries(eventListeners).forEach(([eventName, listener]) => {\n eventEmitter.off(eventName as SprigEvent, listener);\n });\n};\n","export const DEFAULT_WIDTH_PX = 360;\nexport const DEFAULT_WIDTH = `${DEFAULT_WIDTH_PX}px`;\n","import type { PageUrlEvent } from \"../types/event\";\n\nconst MATCHERS_BY_TYPE = Object.freeze({\n contains: (pattern: string, url: string) => url.includes(pattern),\n notContains: (pattern: string, url: string) => !url.includes(pattern),\n exactly: (pattern: string, url: string) => url === pattern,\n notExactly: (pattern: string, url: string) => url !== pattern,\n startsWith: (pattern: string, url: string) => url.startsWith(pattern),\n endsWith: (pattern: string, url: string) => url.endsWith(pattern),\n regex: (pattern: string, url: string) => {\n return new RegExp(pattern).test(url);\n },\n legacy: (pattern: string, url: string) => {\n return new RegExp(pattern, \"i\").test(url);\n },\n});\n\nexport function checkUrlMatch(event: PageUrlEvent, url: string) {\n const { matchType, pattern } = event;\n const matcher = matchType\n ? MATCHERS_BY_TYPE[matchType]\n : MATCHERS_BY_TYPE.legacy;\n let doesUrlMatch = false;\n try {\n doesUrlMatch = matcher(pattern, url);\n } catch (err) {\n const message = `[Sprig] (ERR-445) Failed to check url match with pattern ${pattern}`;\n if (err instanceof Error) {\n console.warn(message, err);\n err.stack = JSON.stringify(event);\n window.UserLeap.reportError(message, err);\n }\n }\n return doesUrlMatch;\n}\n\nexport const checkUrlStillMatching = (eventId?: number | null) => {\n const { pageUrlEvents } = window.UserLeap._config;\n const currEvent = pageUrlEvents?.find((event) => event.id === eventId);\n if (!currEvent) return false;\n return checkUrlMatch(currEvent, window.location.href);\n};\n","export const isHTMLElement = (\n e: Element | null | undefined,\n): e is HTMLElement => {\n if (!e) return false;\n return e.nodeType === Node.ELEMENT_NODE;\n};\n","// for shared functions across the sdk\nimport { isHTMLElement } from \"./typeguards\";\nimport { CssConstant } from \"../constants/css\";\n\nconst FRAME_HEIGHT_PADDING_PIXELS = 1;\n\nexport const isTargetElement = (\n element: EventTarget | null,\n): element is HTMLElement | SVGElement => {\n return element instanceof HTMLElement || element instanceof SVGElement;\n};\n\nexport const isTargetInputElement = (\n element: EventTarget | null,\n): element is HTMLInputElement => {\n return element instanceof HTMLInputElement;\n};\n\nexport const setSurveyStyles = ({\n document,\n elementId,\n styleString,\n nonce,\n}: {\n document: Document;\n elementId: string;\n styleString: string;\n nonce?: string;\n}) => {\n const styleTag = document.getElementById(elementId);\n if (styleTag) {\n styleTag.textContent = styleString;\n return;\n }\n const newStyleTag = document.createElement(\"style\");\n if (nonce) newStyleTag.nonce = nonce;\n newStyleTag.textContent = styleString;\n newStyleTag.id = elementId;\n document.head.appendChild(newStyleTag);\n};\n\nconst getAdditionalHeight = (doc: Document) => {\n const questionBody = doc.querySelector(\n `.${\"sprig-question-body\" satisfies CssConstant}`,\n );\n const mainCard = doc.querySelector(`.${\"ul-card\" satisfies CssConstant}`);\n const mainContent = doc.querySelector(\n `.${\"ul-card-main-content\" satisfies CssConstant}`,\n );\n const footer = doc.querySelector(`.${\"ul-footer\" satisfies CssConstant}`);\n const topContainer = doc.querySelector(\n `.${\"sprig-container\" satisfies CssConstant}`,\n );\n let additional = 0;\n if (isHTMLElement(mainCard)) {\n additional += mainCard.scrollHeight - mainCard.clientHeight;\n }\n if (isHTMLElement(mainContent)) {\n additional += mainContent.scrollHeight - mainContent.clientHeight;\n }\n if (isHTMLElement(questionBody)) {\n additional += questionBody.scrollHeight - questionBody.clientHeight;\n }\n if (isHTMLElement(footer) && isHTMLElement(topContainer)) {\n if (topContainer.clientHeight === 0) {\n additional += footer.clientHeight;\n }\n }\n return additional;\n};\n\nconst MIN_BODY_HEIGHT = 100;\n\nconst getMinHeight = (calculatedHeight: number, document: Document) => {\n const questionBody = document.querySelector(\n `.${\"sprig-question-body\" satisfies CssConstant}`,\n );\n if (!isHTMLElement(questionBody)) return calculatedHeight;\n const scrollableHeight = questionBody.scrollHeight;\n if (scrollableHeight < MIN_BODY_HEIGHT) return calculatedHeight;\n return calculatedHeight - (scrollableHeight - MIN_BODY_HEIGHT);\n};\n\nconst getHorizontalPaddingAndMargin = (selector: string, doc: Document) => {\n const e = doc.querySelector(selector);\n if (!isHTMLElement(e)) return 0;\n const style = getComputedStyle(e);\n const paddingWidth =\n parseFloat(style.paddingLeft) + parseFloat(style.paddingRight);\n const marginWidth =\n parseFloat(style.marginLeft) + parseFloat(style.marginRight);\n const borderWidth =\n parseFloat(style.borderLeftWidth) + parseFloat(style.borderRightWidth);\n return paddingWidth + marginWidth + borderWidth;\n};\n\nexport const calculateFrameDimensions = (\n document: Document,\n isDesktopWeb: boolean,\n isDirectEmbed: boolean,\n) => {\n const container = document.querySelector(\n `.${\"ul-card__container\" satisfies CssConstant}`,\n );\n const app = document.querySelector(`.${\"ul-app\" satisfies CssConstant}`);\n let containerHeight = 600;\n let containerWidth = 360;\n let scrollableMinHeight = 0;\n if (isHTMLElement(container) && isHTMLElement(app)) {\n const matrixGrid = container.querySelector(\".ul-card--matrix_grid\");\n const setAppWidth = !matrixGrid && isDesktopWeb && isDirectEmbed;\n try {\n if (setAppWidth) {\n //We need to set the width before calculating the height. Normally this is done with the iframe\n //But for direct embed it must be done with the app container\n app.style.width = \"360px\";\n }\n containerHeight = container.clientHeight;\n containerHeight += getAdditionalHeight(document);\n const containerStyles = getComputedStyle(container);\n scrollableMinHeight = containerHeight;\n // calculate iframe height\n const marginHeight =\n parseFloat(containerStyles.marginTop) +\n parseFloat(containerStyles.marginBottom);\n const borderHeight =\n parseFloat(containerStyles.borderTopWidth) +\n parseFloat(containerStyles.borderBottomWidth);\n containerHeight += marginHeight + borderHeight;\n // calculate iframe width\n if (matrixGrid) {\n containerWidth = matrixGrid.scrollWidth;\n containerWidth += getHorizontalPaddingAndMargin(\n `.${\"ul-card__container\" satisfies CssConstant}`,\n document,\n );\n containerWidth += getHorizontalPaddingAndMargin(\n `.${\"sprig-question-body\" satisfies CssConstant}`,\n document,\n );\n }\n } finally {\n if (setAppWidth) {\n app.style.removeProperty(\"width\");\n }\n }\n }\n const idealHeight = containerHeight + FRAME_HEIGHT_PADDING_PIXELS;\n return [\n idealHeight,\n containerWidth,\n getMinHeight(scrollableMinHeight, document),\n ];\n};\n\nexport const resetScrollPosition = (document: Document) => {\n const container = document.querySelector(\n `.${\"ul-card__container\" satisfies CssConstant}`,\n );\n if (container) container.scrollTop = 0;\n};\n","import css from \"./feedback.css?inline\";\nimport { FRAME_ID } from \"./iframe\";\nimport {\n apiUrl,\n authenticatedFetch,\n calculateUseMobileStyling,\n displayQuestions,\n PATH_VISITOR,\n QuestionsResponse,\n} from \"./shared\";\nimport { checkUrlStillMatching } from \"./urlMatcher\";\nimport { CssConstant } from \"../constants/css\";\nimport { DismissReason, EVENTS, SprigEvent } from \"../constants/sprigEvents\";\nimport { setSurveyStyles } from \"../helpers/document\";\nimport eventEmitter from \"../helpers/eventEmitter\";\nimport { getHttpHeaders } from \"../helpers/network\";\nimport { FeedbackButton, FeedbackPlacement } from \"../types/config\";\n\nexport const getLoadingContainer = () => {\n return loadingContainer;\n};\n\nexport const getFeedbackContainer = () =>\n document.getElementById(\"sprig-feedback-container\" satisfies CssConstant);\n\nconst getLoadingSpinner = () =>\n document.getElementById(\n \"sprig-feedback-loading-animation\" satisfies CssConstant,\n );\n\nconst constructLoadingSpinner = () => {\n if (getLoadingSpinner()) return;\n\n const loadingSpinner = document.createElement(\"div\");\n loadingSpinner.className = \"ul-loading-spinner-container\";\n loadingSpinner.id = \"sprig-feedback-loading-animation\";\n loadingSpinner.role = \"progressbar\";\n loadingSpinner.setAttribute(\"aria-live\", \"polite\");\n loadingSpinner.setAttribute(\"aria-busy\", \"true\");\n loadingSpinner.setAttribute(\"aria-label\", \"Processing...\");\n loadingSpinner.innerHTML = `\n <div class=\"ul-loading-spinner\">\n <div class=\"first\"></div>\n <div class=\"second\"></div>\n <div class=\"third\"></div>\n <div class=\"fourth\"></div>\n </div>\n `;\n return loadingSpinner;\n};\n\n// Check if survey iframe already open\nexport const isSurveyOpen = () => {\n return !!document.getElementById(FRAME_ID);\n};\n\nlet isCenterModal = false;\nlet loadingContainer: HTMLElement | null = null;\nlet feedbackButton: HTMLButtonElement | null = null;\nlet loadingSurvey = false;\nlet currEventId: number | null = null;\nlet feedbackPlacement: FeedbackPlacement | null = null;\n\nconst FEEDBACK_PLACEMENTS: FeedbackPlacement[] = [\n \"bottom-left\",\n \"bottom-right\",\n \"center-left\",\n \"center-right\",\n];\n\nconst createFeedbackContainer = (placement: FeedbackPlacement) => {\n if (getFeedbackContainer()) return;\n if (!FEEDBACK_PLACEMENTS.includes(placement)) return;\n const [verticalPlacement, horizontalPlacement] = placement.split(\"-\");\n\n const feedbackContainer = document.createElement(\"div\");\n\n feedbackContainer.id = \"sprig-feedback-container\";\n feedbackContainer.classList.add(\n `${\n \"sprig-feedback-container\" satisfies CssConstant\n }-${horizontalPlacement}`,\n `${\"sprig-feedback-container\" satisfies CssConstant}-${verticalPlacement}`,\n );\n document.body.appendChild(feedbackContainer);\n};\n\nexport const isFeedbackSurveyOpen = () => {\n const loadingContainer = window.UserLeap.container;\n return (\n loadingContainer?.parentElement?.id ===\n (\"sprig-feedback-loading-container\" satisfies CssConstant)\n );\n};\n\nconst isErrorState = () =>\n document.getElementById(\n \"sprig-feedback-error-container\" satisfies CssConstant,\n );\n\nconst getFeedbackContainerWidth = () => {\n if (!loadingContainer) return 0;\n const containerWidth = loadingContainer?.clientWidth;\n\n const style = window.getComputedStyle(loadingContainer);\n const borderRight = parseInt(style.borderRightWidth || \"0\");\n const borderLeft = parseInt(style.borderLeftWidth || \"0\");\n\n return containerWidth + borderRight + borderLeft;\n};\n\nconst moveFeedbackContainer = (length: number) => {\n const getWholeContainer = getFeedbackContainer();\n if (getWholeContainer) {\n if (feedbackPlacement?.endsWith(\"right\"))\n getWholeContainer.style.right = `${length}px`;\n else if (feedbackPlacement?.endsWith(\"left\"))\n getWholeContainer.style.left = `${length}px`;\n }\n};\n\n// Move whole container the size of the loading container off screen, return true if closed\nconst closeLoadingContainer = () => {\n if (loadingContainer && (isFeedbackSurveyOpen() || isErrorState())) {\n eventEmitter.off(SprigEvent.SurveyAppeared, hideLoadingAnimation);\n constructLoadingContainer();\n const width = getFeedbackContainerWidth();\n moveFeedbackContainer(-width);\n return true;\n }\n return false;\n};\n\n// Removing loading animation div will cause the container to resize temporarily\nconst hideLoadingAnimation = () => {\n if (!loadingContainer || !feedbackButton) return;\n\n const loadingAnimationDiv = getLoadingSpinner();\n if (loadingAnimationDiv) {\n loadingAnimationDiv.remove();\n }\n loadingContainer.style.height = \"auto\";\n loadingContainer.style.width = \"auto\";\n\n feedbackButton.disabled = false;\n loadingSurvey = false;\n};\n\n// Construct loading container with loading animation.\nconst constructLoadingContainer = () => {\n if (!loadingContainer) return;\n\n const loadingAnimationDiv = getLoadingSpinner();\n if (!loadingAnimationDiv) {\n const getLoadingSpinnerContainer = constructLoadingSpinner();\n if (getLoadingSpinnerContainer) {\n // default loading container size\n loadingContainer.style.height = \"300px\";\n loadingContainer.style.width = \"360px\";\n\n loadingContainer.appendChild(getLoadingSpinnerContainer);\n }\n }\n};\n\nconst openLoadingContainer = () => {\n if (!loadingContainer || !feedbackButton) return;\n moveFeedbackContainer(0);\n\n feedbackButton.disabled = true;\n loadingSurvey = true;\n};\n\nconst fetchFeedbackStudyInfo = async (surveyUuid: string) => {\n const result = await authenticatedFetch(\n apiUrl(\"1\", [PATH_VISITOR], \"startFeedbackStudy\"),\n { body: JSON.stringify({ surveyUuid }), method: \"POST\" },\n );\n if (!result.ok) return null;\n return result.json;\n};\n\nexport const createFeedbackButton = async (\n feedbackButtonOptions: FeedbackButton,\n previewQuestionsJson?: QuestionsResponse, // only passed in previews to show questions without going through /startFeedbackStudy\n trackPageViewUrl?: string,\n) => {\n const {\n buttonTheme,\n customStyles,\n eventId,\n placement,\n desktopDisplay,\n feedbackLabel,\n surveyUuid,\n surveyId,\n } = feedbackButtonOptions;\n\n window.UserLeap.feedbackCustomStyles = undefined;\n\n let feedbackContainer = getFeedbackContainer();\n if (feedbackContainer) {\n if (!previewQuestionsJson && eventId === currEventId) {\n return;\n }\n feedbackContainer.remove();\n eventEmitter.off(EVENTS.SURVEY_FADING_OUT, closeLoadingContainer);\n }\n currEventId = eventId;\n\n // Inject stylesheet\n setSurveyStyles({\n document: document,\n elementId: \"sprig-feedback-style\",\n styleString: css,\n nonce: window.UserLeap.styleNonce,\n });\n\n const buttonStyles = customStyles ?? \"\";\n setSurveyStyles({\n document: document,\n elementId: \"ul-custom-style\",\n styleString: buttonStyles,\n nonce: window.UserLeap.styleNonce,\n });\n\n isCenterModal = desktopDisplay === \"center-modal\";\n feedbackPlacement = placement;\n const [verticalPlacement, horizontalPlacement] = placement.split(\"-\");\n createFeedbackContainer(placement);\n feedbackContainer = getFeedbackContainer();\n\n feedbackButton = document.createElement(\"button\");\n const feedbackButtonLabel = document.createElement(\"div\");\n feedbackButtonLabel.className = \"sprig-feedback-button-label\";\n feedbackButtonLabel.innerText = feedbackLabel;\n feedbackButton.appendChild(feedbackButtonLabel);\n\n feedbackButton.id = \"sprig-feedback-button\";\n feedbackButton.classList.add(\n `sprig-feedback-button-${horizontalPlacement}`,\n `sprig-feedback-button-${verticalPlacement}`,\n `sprig-feedback-button-${buttonTheme}`,\n `${\"fade-in-transition\" satisfies CssConstant}`,\n );\n eventEmitter.on(EVENTS.SURVEY_FADING_OUT, closeLoadingContainer);\n\n feedbackButton.addEventListener(\"click\", async () => {\n const errorState = document.getElementById(\n \"sprig-feedback-error-container\" satisfies CssConstant,\n );\n // handle if survey is open or error state\n if (isSurveyOpen() || isErrorState()) {\n // if feedback survey open, complete and close\n if (closeLoadingContainer()) {\n eventEmitter.emit(SprigEvent.SurveyCloseRequested, {\n name: SprigEvent.SurveyCloseRequested,\n initiator: DismissReason.FeedbackClosed,\n studyType: \"feedbackButton\",\n \"survey.id\": surveyId!,\n });\n eventEmitter.emit(SprigEvent.SurveyWillClose, {\n name: SprigEvent.SurveyWillClose,\n initiator: DismissReason.FeedbackClosed,\n studyType: \"feedbackButton\",\n \"survey.id\": surveyId!,\n });\n\n const feedbackContainer = getFeedbackContainer();\n // if there's the error container, we want to remove the feedback button\n if (errorState && feedbackContainer) {\n feedbackContainer.remove();\n currEventId = null;\n loadingContainer = null;\n }\n }\n return;\n }\n\n const headers = getHttpHeaders(window.UserLeap);\n const useMobileStyling = calculateUseMobileStyling(headers);\n // show loading animation\n if (!useMobileStyling && !loadingSurvey) {\n openLoadingContainer();\n }\n\n // Handle previews\n if (previewQuestionsJson) {\n if (loadingContainer)\n loadingContainer.classList.add(\n \"sprig-feedback-loading-container-previews\",\n );\n await displayQuestions(previewQuestionsJson);\n hideLoadingAnimation();\n return;\n }\n\n // Handle non-previews\n const feedbackStudyInfo = await fetchFeedbackStudyInfo(surveyUuid);\n if (feedbackStudyInfo) {\n eventEmitter.once(SprigEvent.SurveyAppeared, hideLoadingAnimation);\n displayQuestions(\n {\n ...feedbackStudyInfo,\n studyType: \"feedbackButton\",\n },\n trackPageViewUrl,\n );\n } else if (loadingContainer) {\n // there was an error when fetching study\n const createErrorState = feedbackErrorState();\n loadingContainer.appendChild(createErrorState);\n hideLoadingAnimation();\n loadingContainer.style.height = \"300px\";\n loadingContainer.style.width = \"360px\";\n }\n });\n\n feedbackContainer?.appendChild(feedbackButton);\n eventEmitter.emit(SprigEvent.FeedbackButtonLoaded, {\n name: SprigEvent.FeedbackButtonLoaded,\n \"survey.id\": surveyId,\n });\n\n const {\n useMobileStyling,\n _config: { border },\n } = window.UserLeap;\n\n // if desktop display slider, create container to: show loading animation -> show questions\n if (!isCenterModal && !useMobileStyling) {\n const feedbackLoading = document.createElement(\"div\");\n feedbackLoading.id =\n \"sprig-feedback-loading-container\" satisfies CssConstant;\n feedbackLoading.className = `sprig-feedback-loading-container sprig-feedback-loading-container-${horizontalPlacement}`;\n feedbackLoading.style.setProperty(\"--feedback-border\", border);\n loadingContainer = feedbackLoading;\n\n // on initial load, we construct loading container bc transition require a default width\n constructLoadingContainer();\n feedbackContainer?.appendChild(feedbackLoading);\n const width = getFeedbackContainerWidth();\n moveFeedbackContainer(-width);\n } else moveFeedbackContainer(0);\n\n // Applicable to survey live Previews only\n // Show questions immediately if on questions tab in edit mode\n if (\n window.UserLeap._config.isOnQuestionsTab &&\n previewQuestionsJson &&\n !isFeedbackSurveyOpen() &&\n loadingContainer\n ) {\n openLoadingContainer();\n constructLoadingContainer();\n if (loadingContainer)\n loadingContainer.classList.add(\n \"sprig-feedback-loading-container-previews\",\n );\n displayQuestions(previewQuestionsJson);\n hideLoadingAnimation();\n }\n};\n\nexport const handleFeedbackURLMatching = () => {\n if (isFeedbackSurveyOpen()) return; // keep active survey open\n const feedbackContainer = getFeedbackContainer();\n if (!feedbackContainer) return;\n\n const isStillMatching = checkUrlStillMatching(currEventId);\n if (!isStillMatching) {\n feedbackContainer.remove();\n currEventId = null;\n loadingContainer = null;\n }\n};\n\nconst feedbackErrorState = () => {\n const container = document.createElement(\"div\");\n container.id = \"sprig-feedback-error-container\" satisfies CssConstant;\n\n // Create SVG element\n container.innerHTML = `<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 40 40\" fill=\"none\">\n <circle cx=\"20\" cy=\"20\" r=\"14.5\" stroke=\"#B0B5B7\" stroke-width=\"3\"/>\n <path d=\"M20 12L20 21.6\" stroke=\"#B0B5B7\" stroke-width=\"3\" stroke-linecap=\"round\"/>\n <circle cx=\"19.9984\" cy=\"27.6\" r=\"1.6\" fill=\"#B0B5B7\"/>\n </svg>`;\n\n // Create paragraph element\n const paragraph = document.createElement(\"h3\");\n paragraph.className = \"sprig-feedback-error-text\";\n paragraph.innerText = \"There was an error while loading the survey\";\n container.appendChild(paragraph);\n\n return container;\n};\n","export const LAUNCH_DARKLY_PREFIX = \"!launch_darkly_\";\n\nexport class LaunchDarklyIntegration {\n _ldData: Record<string, number> = {};\n\n /**\n *\n * @returns all experiments to variation\n */\n getAllLaunchDarklyVariations() {\n return this._ldData;\n }\n\n /**\n * Set all LaunchDarkly flags and variations. This will override any existing flags.\n * Note: LaunchDarkly variation numbering system starts at 0, but their UI presents variation starting as 1.\n * So we add 1 to the incoming variation index to be consistent with their UI.\n * @param data object containing flag name as keys and variation index as the value\n * @example [{ flagName: 'flag-name-slug', variationIndex: 1 }]\n * @returns boolean if set action was successful\n */\n setLDFlagsVariations(data: Record<string, number | undefined>) {\n try {\n if (!data || typeof data !== \"object\" || Array.isArray(data))\n return false;\n\n // Delete existing flags\n Object.keys(this._ldData).forEach((key) => {\n delete this._ldData[key];\n });\n\n // Add new flags\n Object.keys(data).forEach(\n (key) =>\n (this._ldData[`${LAUNCH_DARKLY_PREFIX}${key}`] = (data[key] ?? 0) + 1)\n );\n\n return true;\n } catch (err) {\n if (err instanceof Error)\n window.UserLeap.reportError(\"setAllLDFlagsVariations\", err);\n console.warn(\n \"[Sprig] An issue had occured when setting LaunchDarkly flags and variations.\"\n );\n return false;\n }\n }\n}\n\nconst ldIntegration = new LaunchDarklyIntegration();\nObject.freeze(ldIntegration);\n\nexport default ldIntegration;\n","export const OPTIMIZELY_EVENT_PREFIX = \"!optimizely_experiments_\";\n\n/**\n *\n * @param state the object returned from optimizely getExperimentStates\n * @returns simplified object with experiment id to variation name pairing\n *\n */\nexport const extractExperimentState = (\n state: Record<string, { variation: { name: string } }>\n) => {\n return Object.keys(state).reduce<Record<string, string>>((agg, curr) => {\n if (state[curr].variation?.name) agg[curr] = state[curr].variation.name;\n return agg;\n }, {});\n};\n\nexport interface Experiment {\n id: string;\n variation?: string;\n}\n\nexport class OptimizelyIntegration {\n _optimizelyData: Record<string, string> = {};\n\n /**\n * @param data object containing experimentIds as keys and variation name as the value\n * @example { experiments: [ { id: 1, variation: 'Variation 1' } ] }\n * @returns boolean if set action was successful\n */\n setOptimizelyExperiment(\n data: { experiments: Experiment[] },\n isOverride = true\n ) {\n if (!data || typeof data !== \"object\") return false;\n\n const { experiments } = data;\n try {\n // Delete existing experiments if override is true\n isOverride &&\n Object.keys(this._optimizelyData).map((key) => {\n delete this._optimizelyData[key];\n });\n\n // Override with new experiments\n if (experiments) {\n experiments.map((exp) => {\n const { id, variation } = exp;\n const newKey = this.transformExperimentId(id);\n if (variation && typeof variation === \"string\")\n this._optimizelyData[newKey] = variation;\n });\n }\n\n return true;\n } catch (err) {\n if (err instanceof Error)\n window.UserLeap.reportError(\"setOptimizelyExperiment\", err);\n return false;\n }\n }\n\n /**\n *\n * @returns all active experiments to variation\n */\n getAllOptimizelyExperiments() {\n return this._optimizelyData;\n }\n\n /**\n * @returns the variation name associated to the experimentId the current user is bucketed in.\n */\n getOptimizelyVariationName(experimentId: string) {\n return this._optimizelyData[this.transformExperimentId(experimentId)];\n }\n\n transformExperimentId(experimentId: string) {\n return OPTIMIZELY_EVENT_PREFIX + experimentId;\n }\n\n getAndSetWebOptimizelyExperiments() {\n try {\n if (\n window &&\n window[\"optimizely\"] &&\n typeof window[\"optimizely\"].get === \"function\"\n ) {\n const experiments = window[\"optimizely\"]\n .get(\"state\")\n ?.getExperimentStates({\n isActive: true,\n });\n\n // transform experiments if able to retreive state\n if (experiments) {\n const transformExperiments = Object.keys(experiments).map((expId) => {\n if (experiments[expId].variation?.name)\n return {\n id: expId,\n variation: experiments[expId].variation?.name,\n };\n else return { id: expId, variation: \"Original\" };\n });\n\n this.setOptimizelyExperiment(\n { experiments: transformExperiments },\n false\n );\n return true;\n }\n\n return false;\n }\n\n return false;\n } catch (err) {\n if (err instanceof Error)\n window.UserLeap.reportError(\"getAndSetWebOptimizely\", err);\n return false;\n }\n }\n}\n\nconst optimizely = new OptimizelyIntegration();\nObject.freeze(optimizely);\n\nexport default optimizely;\n","// Queue is an intermediatator for calls from developers\n// integrating the userleap. Before the library loads,\n// the snippet stores calls in a simple array.\n// Once the library is initialized, the simple array\n// is replaced by a Queue. All stored actions are processed,\n// and subsequent actions are processed immediately.\n//\n// Pause functionality is used internally to enable UI actions\n// to be delayed while Userleap is 'muted'\nexport type QueueItem = [string, ...unknown[]] | (() => void);\n\nclass SprigQueue {\n paused: boolean;\n queue: QueueItem[];\n ul: WindowSprig;\n\n constructor(ul: WindowSprig, queue: QueueItem[]) {\n this.ul = ul;\n this.paused = false;\n this.queue = [];\n this.flush(queue);\n }\n\n flush(queue: QueueItem[]) {\n const length = queue.length;\n if (length) {\n for (let i = 0; i < length; i++) {\n this.push(queue[i]);\n }\n }\n }\n\n isPaused() {\n return this.paused;\n }\n\n pause() {\n this.paused = true;\n }\n\n unpause() {\n this.paused = false;\n const queue = this.queue.slice(); //copies\n this.empty();\n this.flush(queue);\n }\n\n /* Push methods meant to make queue a drop-in replacement for the Array that's used pre-init. */\n push(action: QueueItem) {\n if (!this.paused) {\n // Queue is not paused. Perform the specified action\n if (action instanceof Function) {\n // Action is a closure\n action();\n } else {\n // Action is an array\n const args = Array.prototype.slice.call(action, 1);\n const actionName = action[0];\n const actionFunc = this.ul[actionName as keyof typeof this.ul];\n\n if (actionFunc instanceof Function) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n (actionFunc as Function).apply(this.ul, args);\n } else {\n if (actionName) {\n console.warn(\n \"[Sprig] (ERR-100) No valid UserLeap action called\",\n actionName\n );\n }\n }\n }\n } else {\n // Queue is paused. Store the action in the queue\n this.queue.push(action);\n }\n }\n\n /* Enqueue a closure to be performed by the queue.\n * This is primarily designed to be used to enable internal behaviors to be paused when the library is muted, and resume correctly when the mute is over.\n */\n perform(func: () => void) {\n if (!this.paused) {\n return func();\n } else {\n let a = () => {};\n const p = new Promise(function (resolve) {\n a = function () {\n resolve(func());\n };\n });\n this.queue.push(a);\n return p;\n }\n }\n\n /**\n * Removes all queued items\n */\n empty() {\n this.queue.length = 0;\n }\n}\n\nexport default SprigQueue;\n","let enabled = true;\nlet disableChecking = false;\nexport const disableReporting = () => (enabled = false);\nexport const disableThresholdChecking = () => (disableChecking = true);\n\nexport type Metric =\n | \"sdk_event_queue_latency_seconds\"\n | \"sdk_replay_add_event_batch_seconds\"\n | \"sdk_replay_cleanup_seconds\"\n | \"sdk_replay_compression_seconds\"\n | \"sdk_replay_get_events_between_seconds\"\n | \"sdk_replay_snapshot_seconds\"\n | \"sdk_mutations_nodes_added\"\n | \"sdk_mutations_nodes_removed\"\n | \"sdk_mutations_attributes_changed\"\n | \"sdk_mutations_character_data\"\n | \"sdk_dom_nodes_count\"\n | \"sdk_page_html_characters\";\n\nconst WebMetricNames: Metric[] = [\n \"sdk_event_queue_latency_seconds\",\n \"sdk_replay_add_event_batch_seconds\",\n \"sdk_replay_cleanup_seconds\",\n \"sdk_replay_compression_seconds\",\n \"sdk_replay_get_events_between_seconds\",\n \"sdk_replay_snapshot_seconds\",\n \"sdk_mutations_nodes_added\",\n \"sdk_mutations_nodes_removed\",\n \"sdk_mutations_attributes_changed\",\n \"sdk_mutations_character_data\",\n \"sdk_dom_nodes_count\",\n \"sdk_page_html_characters\",\n];\n\nexport interface MetricValue {\n value: number;\n time: number;\n}\n\nexport type ThresholdType = \"max\" | \"min\";\n\nexport interface MetricThreshold {\n metric: Metric;\n type: ThresholdType;\n value: number;\n}\n\nlet thresholdsByMetric: { [key: string]: MetricThreshold[] } = {};\nlet onThresholdTripped: (value: number, t: MetricThreshold) => void;\n\nexport class MetricsReporter {\n private _values: MetricValue[] = [];\n private _isWebMetric: boolean;\n constructor(public name: Metric) {\n this._isWebMetric = WebMetricNames.includes(this.name);\n }\n\n report(value: number) {\n if (enabled) {\n this._values.push({ time: Date.now(), value });\n }\n if (disableChecking || !this._isWebMetric) return;\n const threshold = this.findExceededThreshold(value);\n if (threshold && onThresholdTripped) {\n onThresholdTripped(value, threshold);\n }\n }\n\n collect() {\n const values = this._values;\n this._values = [];\n return values;\n }\n\n findExceededThreshold(value: number) {\n const thresholds = thresholdsByMetric[this.name];\n if (!thresholds) return;\n return thresholds.find((t) => this.valueExceedsThreshold(value, t));\n }\n\n valueExceedsThreshold(value: number, t: MetricThreshold) {\n if (t.type === \"max\") {\n return value > t.value;\n } else if (t.type === \"min\") {\n return value < t.value;\n }\n return false;\n }\n}\n\nexport const registerThresholds = (\n thresholds: MetricThreshold[],\n thresholdTrippedAction: (value: number, t: MetricThreshold) => void,\n) => {\n thresholdsByMetric = {};\n disableChecking = false;\n thresholds?.forEach((t) => {\n if (!(t.metric in thresholdsByMetric)) {\n thresholdsByMetric[t.metric] = [];\n }\n thresholdsByMetric[t.metric]?.push(t);\n });\n onThresholdTripped = thresholdTrippedAction;\n};\n","import { Metric, MetricsReporter, disableReporting } from \"./performanceMetric\";\nimport { breadcrumbsLogger as logger } from \"../BreadcrumbsLogger\";\n\nexport const PerformanceMetrics: { [key: string]: MetricsReporter } = {};\nexport const registerMetric = (name: Metric) => {\n const metric = new MetricsReporter(name);\n PerformanceMetrics[name] = metric;\n return metric;\n};\n\nexport const reportAndRegister = (name: Metric, value: number) => {\n let metric = PerformanceMetrics[name];\n if (!metric) {\n metric = registerMetric(name);\n }\n return metric.report(value);\n};\n\nconst collectAndReport = async (\n postMetrics: (json: string) => Promise<void>,\n) => {\n const body = Object.values(PerformanceMetrics).map((m) => ({\n name: m.name,\n values: m.collect(),\n }));\n if (!body.some((m) => m.values.length)) return;\n try {\n await postMetrics(JSON.stringify(body));\n } catch (e) {\n if (e instanceof Error) {\n logger.error(\"MetricsErr\", {\n error: {\n message: e.message,\n name: e.name,\n },\n });\n }\n }\n};\n\nexport const initPerformanceReporting = ({\n reportingIntervalSeconds,\n postMetrics,\n}: {\n reportingIntervalSeconds: number;\n postMetrics: (json: string) => Promise<void>;\n}) => {\n if (reportingIntervalSeconds) {\n setInterval(() => {\n collectAndReport(postMetrics);\n }, reportingIntervalSeconds * 1000);\n } else {\n disableReporting();\n }\n};\n","import { registerMetric } from \"./metricsReporter\";\nimport { MetricsReporter } from \"./performanceMetric\";\n\nlet domSizeMetric: MetricsReporter;\nlet htmlCharsMetric: MetricsReporter;\n\nconst calcNumberOfDomNodes = (element: Element | ShadowRoot) => {\n let count = 0; let child = element.firstElementChild; \n while (child) {\n count += calcNumberOfDomNodes(child);\n if (child.shadowRoot) {\n count += calcNumberOfDomNodes(child.shadowRoot);\n }\n child = child.nextElementSibling;\n count++;\n }\n return count;\n};\n\nconst getHtmlChars = () => document.documentElement.innerHTML.length;\n\nconst report = () => {\n domSizeMetric.report(calcNumberOfDomNodes(document.body));\n htmlCharsMetric.report(getHtmlChars());\n};\n\nexport const init = (interval = 10 * 1000) => {\n domSizeMetric = registerMetric(\"sdk_dom_nodes_count\");\n htmlCharsMetric = registerMetric(\"sdk_page_html_characters\");\n report();\n setInterval(report, interval);\n}\n","import { registerMetric } from \"./metricsReporter\";\nimport { MetricsReporter } from \"./performanceMetric\";\n\nconst measureEventQueueLatency = (\n intervalMs: number,\n reporter: MetricsReporter,\n) => {\n const start = performance.now();\n if (document.hidden) {\n setTimeout(\n () => measureEventQueueLatency(intervalMs, reporter),\n intervalMs,\n );\n } else {\n setTimeout(() => {\n const latency = performance.now() - start;\n reporter.report(latency / 1000.0);\n setTimeout(\n () => measureEventQueueLatency(intervalMs, reporter),\n intervalMs,\n );\n }, 0);\n }\n};\n\nexport const init = (intervalMs = 1000) => {\n const metric = registerMetric(\"sdk_event_queue_latency_seconds\");\n measureEventQueueLatency(intervalMs, metric);\n};\n","import { registerMetric } from \"./metricsReporter\";\nimport { MetricsReporter } from \"./performanceMetric\";\n\nlet nodeAddedMetric: MetricsReporter;\nlet nodeRemovedMetric: MetricsReporter;\nlet attributeChangeMetric: MetricsReporter;\nlet charDataMetric: MetricsReporter;\n\nlet countMap: { [key: string]: number } = {};\nlet observer: MutationObserver;\n\nconst add = (metric: MetricsReporter, count = 1) => {\n const { name } = metric;\n countMap[name] = (countMap[name] || 0) + count;\n};\n\nconst countNodesRecursive = (n: Node) => {\n let total = 1;\n n.childNodes.forEach((c) => {\n total += countNodesRecursive(c);\n });\n return total;\n};\n\nconst countNodeListRecursive = (nodes: NodeList) => {\n let total = 0;\n nodes.forEach((n) => {\n total += countNodesRecursive(n);\n }); \n return total;\n};\n\nconst handleMutation = (mutation: MutationRecord) => {\n switch (mutation.type) {\n case \"childList\":\n add(nodeAddedMetric, countNodeListRecursive(mutation.addedNodes));\n add(nodeRemovedMetric, countNodeListRecursive(mutation.removedNodes));\n return;\n case \"attributes\":\n add(attributeChangeMetric);\n return;\n case \"characterData\":\n add(charDataMetric);\n return;\n };\n};\n\nconst handleMutations = (mutations: MutationRecord[]) => mutations.forEach(handleMutation);\n\nconst initMutationObserver = () => {\n observer = new MutationObserver(handleMutations);\n // NOTE: These settings for mutation observer are the same as those used by rrweb, copied from here:\n // https://github.com/rrweb-io/rrweb/blob/e0590bbdf1a910188e036ae93c77d45be23bae87/packages/rrweb/src/record/observer.ts#L126\n observer.observe(\n document,\n {\n attributes: true,\n attributeOldValue: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true,\n },\n );\n};\n\nconst report = () => {\n nodeAddedMetric.report(countMap[nodeAddedMetric.name] || 0);\n nodeRemovedMetric.report(countMap[nodeRemovedMetric.name] || 0);\n attributeChangeMetric.report(countMap[attributeChangeMetric.name] || 0);\n charDataMetric.report(countMap[charDataMetric.name] || 0);\n countMap = {};\n};\n\nexport const init = (interval = 1 * 1000) => {\n nodeAddedMetric = registerMetric(\"sdk_mutations_nodes_added\");\n nodeRemovedMetric = registerMetric(\"sdk_mutations_nodes_removed\");\n attributeChangeMetric = registerMetric(\"sdk_mutations_attributes_changed\");\n charDataMetric = registerMetric(\"sdk_mutations_character_data\");\n initMutationObserver();\n setInterval(report, interval);\n}\n","import { init as initDomMetrics } from \"./domMetrics\";\nimport { init as initEventQueueLatencyMetric } from \"./eventQueueLatencyMetric\";\nimport { initPerformanceReporting } from \"./metricsReporter\";\nimport { init as initMutationMetrics } from \"./mutationMetrics\";\nimport {\n MetricThreshold,\n disableThresholdChecking,\n registerThresholds,\n} from \"./performanceMetric\";\nimport { modules } from \"../../modules/moduleRegistry\";\n\nexport const initMetrics = ({\n isWeb,\n reportingIntervalSeconds,\n thresholds,\n postMetrics,\n}: {\n isWeb: boolean;\n reportingIntervalSeconds: number;\n thresholds: MetricThreshold[];\n postMetrics: (json: string) => Promise<void>;\n}) => {\n registerThresholds(thresholds, (v, m) => {\n if (modules.replay?.isReplayRecording()) {\n const message = `Value: ${v} on ${m.metric} violated threshold of ${m.type} ${m.value}`;\n modules.replay?.disableRecording(\n \"Threshold violated\",\n new Error(message),\n {\n reportError: false,\n },\n );\n window.UserLeap.reportError(\n \"Sdk Performance Metric threshold violated\",\n new Error(`Sdk Performance Metric threshold violated`),\n {\n metricName: m.metric,\n type: m.type,\n value: m.value,\n },\n {\n metricName: m.metric,\n },\n );\n disableThresholdChecking();\n }\n });\n initPerformanceReporting({\n reportingIntervalSeconds,\n postMetrics,\n });\n if (isWeb) {\n initEventQueueLatencyMetric();\n initDomMetrics();\n initMutationMetrics();\n }\n};\n","import { ActivateListenerPayload } from \"@optimizely/optimizely-sdk\";\nimport { v4 as uuidv4 } from \"uuid\";\n\nimport {\n createFeedbackButton,\n getLoadingContainer,\n handleFeedbackURLMatching,\n isFeedbackSurveyOpen,\n isSurveyOpen,\n} from \"./feedback\";\nimport { FRAME_ID } from \"./iframe\";\nimport LaunchDarklyIntegration from \"./LaunchDarklyIntegration\";\nimport OptimizelyIntegration from \"./OptimizelyIntegration\";\nimport SprigQueue from \"./Queue\";\nimport {\n apiUrl,\n authenticatedFetch,\n calculateIsMobileWebview,\n calculateUseMobileStyling,\n displayQuestions,\n PATH_ENV,\n PATH_VISITOR,\n widgetGetVID,\n widgetSetLocalStorageCredentialsValue,\n} from \"./shared\";\nimport { QueryParam, SurveyState } from \"./types\";\nimport { checkUrlMatch } from \"./urlMatcher\";\nimport { DismissReason, SprigEvent, EVENTS } from \"../constants/sprigEvents\";\nimport { breadcrumbsLogger as logger } from \"../helpers/BreadcrumbsLogger\";\nimport {\n calculateFrameDimensions,\n isTargetElement,\n setSurveyStyles,\n} from \"../helpers/document\";\nimport eventEmitter from \"../helpers/eventEmitter\";\nimport {\n delay,\n localStorageHelper,\n sessionStorageHelper,\n shouldDirectEmbed,\n} from \"../helpers/general\";\nimport { initMetrics } from \"../helpers/metrics\";\nimport { reportAndRegister } from \"../helpers/metrics/metricsReporter\";\nimport {\n sprigFetch,\n killNetworkRequests,\n getHttpHeaders,\n cspViolationHandler,\n} from \"../helpers/network\";\nimport { modules } from \"../modules/moduleRegistry\";\nimport { Config } from \"../types/config\";\nimport { InteractiveEvent } from \"../types/event\";\n\n/**\n * Various modes that the app can be in. For now test is the\n * only one that matters\n */\nconst APP_MODES = {\n test: \"test\",\n};\nconst dismissOnPageChangeEventTypes = [\"popState\", \"pushState\", \"replaceState\"];\nlet initializedHeatmapPrivacySettings: object | undefined = undefined;\n\nlet trackPageViewUrl: string | undefined;\nconst sessionProvidedAttributes: SprigAttributes = {};\n\n// backend has special handling for it, so we use `!email` as the attribute key\nconst EMAIL_ATTRIBUTE_KEY = \"!email\";\nconst PAGE_URL_EVENT_NAME = \"pageUrl\";\n\nfunction shouldDisplaySurveyAfterDelay(trackStartUrlString: string) {\n if (!window.UserLeap._config.dismissOnPageChange) return true;\n // compare path, exclude query params and anchor tags\n const startUrl = new URL(trackStartUrlString);\n const currentURL = new URL(trackPageViewUrl ?? window.location.href);\n return (\n startUrl.hostname === currentURL.hostname &&\n startUrl.pathname === currentURL.pathname\n );\n}\n\nlet prevUrl = window.location.href;\nfunction locationChangeHandler(event?: Event) {\n const { pageUrlEvents, interactiveEvents, dismissOnPageChange, platform } =\n window.UserLeap._config;\n if (platform && platform !== \"web\") return; // we should clean this up during web sdk controller refactor along with the should direct embed\n\n if (prevUrl !== window.location.href) {\n logger.navigation(\"LocationChange\", {\n from: prevUrl,\n to: window.location.href,\n });\n }\n prevUrl = window.location.href;\n\n const credentials = loadCredentials();\n const localStorageUrl = credentials[\"trackStartUrl\"];\n const trackedUrl = localStorageUrl ? String(localStorageUrl) : null;\n if (pageUrlEvents) trackPageView(window.location.href);\n if (interactiveEvents) {\n // need to remove old listeners bc current page may not be targeted\n removeInteractiveEventListener();\n addInteractiveEventListeners();\n }\n if (getLoadingContainer()) {\n handleFeedbackURLMatching();\n }\n if (sessionStorageHelper.getItem(\"sprig.isCapturingHeatmap\")) {\n modules.replay?.checkPendingHeatmapsUrl()?.then((count) => {\n // We want to upload the heatmap data if there is any that marked pending\n if (count) {\n modules.replay?.uploadReadyPendingCaptures(true);\n }\n });\n }\n\n if (\n !isFeedbackSurveyOpen() && // feedback survey stay open on page change\n dismissOnPageChange &&\n trackedUrl &&\n trackedUrl !== window.location.href &&\n event &&\n dismissOnPageChangeEventTypes.includes(event.type)\n )\n window.UserLeap(\"dismissActiveSurvey\", DismissReason.PageChange);\n}\n\nconst INTERACTIVE_LISTENER_OPTIONS = { capture: true };\n\nconst addInteractiveEventListeners = () => {\n const activeEventsForUrl = window.UserLeap._config.interactiveEvents.filter(\n (event) => checkUrlMatch(event, window.location.href),\n );\n\n const handlersForActiveEvents = activeEventsForUrl.map((i) => {\n const { name, properties } = i;\n const { selector, innerText } = properties;\n return selector\n ? (e: MouseEvent) => {\n if (isTargetElement(e.target)) {\n try {\n !!e.target.closest(selector) && window.UserLeap(\"track\", name);\n } catch {\n // ignore\n }\n }\n return false;\n }\n : (e: MouseEvent) => {\n if (isTargetElement(e.target)) {\n (e.target as HTMLElement).innerText === innerText &&\n window.UserLeap(\"track\", name);\n }\n return false;\n };\n });\n\n const combinedHandler = (e: MouseEvent) =>\n handlersForActiveEvents.forEach((f) => f(e));\n\n window.UserLeap._config.interactiveEventsHandler = combinedHandler;\n window.addEventListener(\n \"click\",\n combinedHandler,\n INTERACTIVE_LISTENER_OPTIONS,\n );\n};\n\nconst removeInteractiveEventListener = () => {\n if (window.UserLeap._config.interactiveEventsHandler) {\n window.removeEventListener(\n \"click\",\n window.UserLeap._config.interactiveEventsHandler,\n INTERACTIVE_LISTENER_OPTIONS,\n );\n }\n delete window.UserLeap._config.interactiveEventsHandler;\n};\n\nfunction registerEventListeners() {\n [\"hashchange\", \"popstate\"].forEach((evt) =>\n window.addEventListener(evt, locationChangeHandler, true),\n );\n}\n\nfunction unregisterEventListeners() {\n [\"hashchange\", \"popstate\"].forEach((evt) =>\n window.removeEventListener(evt, locationChangeHandler, true),\n );\n if (window.UserLeap._config.interactiveEvents)\n removeInteractiveEventListener();\n}\n\n/**\n * Construct the get questions URL\n * @param options\n * @param options.surveyId Active SurveyId for the Environment display, from displaySurvey\n * @param options.surveyTemplateId SurveyTemplateId to display, from previewSurvey / Template Previews\n */\nfunction getQuestionURL(options?: {\n desktopDisplay?: string;\n isMobile?: boolean;\n previewLanguage?: string;\n surveyid?: number;\n surveytemplateid?: string;\n vid: string | null;\n}) {\n const url = new URL(apiUrl(\"1\", [PATH_ENV], \"questions\"));\n Object.entries(options || {}).forEach(([key, value]) => {\n if (value) url.searchParams.append(key, String(value));\n });\n return url.toString();\n}\n\nfunction loadCredentials() {\n const envIdCredMap = localStorageHelper.getItemObject(\"userleap.ids\");\n return (envIdCredMap && envIdCredMap[window.UserLeap.envId]) || {};\n}\n\nfunction fallbackToAnonVisitor() {\n if (window.previewMode) return;\n const envUuidMap =\n localStorageHelper.getItemObject(\"sprig.anon.env.vid.map\") || {};\n const anonVisitorId = envUuidMap[window.UserLeap.envId];\n window.UserLeap.visitorId = anonVisitorId || uuidv4();\n\n logger.info(\"NewVid\", { vid: window.UserLeap.visitorId });\n widgetSetLocalStorageCredentialsValue(\"vid\", window.UserLeap.visitorId);\n if (!anonVisitorId) {\n envUuidMap[window.UserLeap.envId] = window.UserLeap.visitorId;\n localStorageHelper.setItemObject(\"sprig.anon.env.vid.map\", envUuidMap);\n }\n eventEmitter.emit(SprigEvent.VisitorIDUpdated, {\n visitorId: window.UserLeap.visitorId,\n });\n}\n\nfunction trackPageView(\n location: string,\n properties?: SprigProperties,\n showSurveyCallback?: (surveyId?: number) => Promise<boolean>,\n calledFromApi?: boolean,\n) {\n try {\n if (location.endsWith(\"mock_snippet.html\")) {\n return;\n }\n logger.info(\"PageView\", { url: location });\n\n const documentDescription = document\n ?.querySelector('meta[name=\"description\"]')\n ?.getAttribute(\"content\");\n\n modules.replay?.RecordPageView({\n ...(documentDescription && { description: documentDescription }),\n url: location,\n referrer: document.referrer,\n pageTitle: document.title,\n });\n\n //filter out pages that aren't being tracked\n const pageUrlEvents = window.UserLeap._config.pageUrlEvents;\n let shouldTrackPage = false;\n if (pageUrlEvents && pageUrlEvents.length) {\n for (let i = 0; i < pageUrlEvents.length; i++) {\n shouldTrackPage = checkUrlMatch(pageUrlEvents[i], location);\n\n if (shouldTrackPage) {\n break;\n }\n }\n }\n\n if (!shouldTrackPage) return;\n if (window.UserLeap.debugMode)\n console.info(\"[DEBUG] Sprig trackPageView\", location);\n\n const metadata: {\n url: string;\n trackPageView?: boolean;\n } = {\n url: location,\n };\n if (calledFromApi) metadata.trackPageView = true;\n window.UserLeap._queue.push([\n \"track\",\n PAGE_URL_EVENT_NAME,\n properties,\n metadata,\n showSurveyCallback,\n ]);\n } catch (err) {\n if (err instanceof Error) {\n err.stack = location;\n window.UserLeap.reportError(\"trackPageView\", err);\n }\n console.warn(`[Sprig] (ERR-428) Failed to track page view`, err);\n }\n}\n\nfunction bindTrackingEvents() {\n const historyRef =\n \"Backbone\" in window && window.Backbone && window.Backbone.history\n ? window.Backbone.history\n : window.history;\n\n if (\"pushState\" in historyRef) {\n historyRef.pushState = ((f) =>\n function pushState(this: typeof historyRef, ...args) {\n const ret = f.apply(this, args);\n const event = new Event(\"pushState\");\n window.dispatchEvent(event);\n locationChangeHandler(event);\n return ret;\n })(historyRef.pushState);\n }\n\n if (\"replaceState\" in historyRef) {\n historyRef.replaceState = ((f) =>\n function replaceState(this: typeof historyRef, ...args) {\n const ret = f.apply(this, args);\n const event = new Event(\"replaceState\");\n window.dispatchEvent(event);\n locationChangeHandler(event);\n return ret;\n })(historyRef.replaceState);\n }\n registerEventListeners();\n}\n\nasync function getQuestions(\n options?: {\n surveyId?: number;\n surveyTemplateId?: string;\n },\n submitAnswers?: boolean,\n): Promise<{ success: boolean; surveyState: SurveyState } | undefined> {\n const visitorId = widgetGetVID();\n if (options && !submitAnswers) {\n window.UserLeap._config.mode = APP_MODES.test;\n }\n const headers = getHttpHeaders(window.UserLeap);\n const useMobileStyling = calculateUseMobileStyling(headers);\n const response = await authenticatedFetch(\n getQuestionURL({\n desktopDisplay: window.UserLeap._config.desktopDisplay,\n isMobile: useMobileStyling,\n previewLanguage: window.UserLeap._config.previewLanguage,\n surveyid: options?.surveyId,\n surveytemplateid: options?.surveyTemplateId,\n vid: visitorId,\n }),\n {\n shouldDropOnRateLimit: true,\n },\n );\n\n if (!response.ok) {\n if (response.reportError && response.error) {\n console.warn(\n `[Sprig] (ERR-414) Failed to request questions from the server`,\n response.error,\n );\n window.UserLeap.reportError(\"getQuestions\", response.error);\n }\n return { success: false, surveyState: \"no survey\" satisfies SurveyState };\n }\n response.json.delay && (await delay(response.json.delay));\n\n /**\n * When previewing feedback survey, feedback config sent in getQuestions response\n * Use config to create feedback button, skip displaying questions for now\n */\n if (response.json.isFeedback) {\n const { feedbackLabel, productConfig, surveyUuid, feedbackCustomStyles } =\n response.json;\n\n const { buttonTheme, placement, desktopDisplay } = productConfig;\n const feedbackButtonOptions = {\n customStyles: feedbackCustomStyles,\n buttonTheme,\n desktopDisplay,\n eventId: 0,\n feedbackLabel,\n placement,\n surveyUuid,\n surveyId: options?.surveyId,\n };\n createFeedbackButton(feedbackButtonOptions, response.json);\n } else {\n return displayQuestions(\n response.json,\n trackPageViewUrl,\n initializedHeatmapPrivacySettings,\n );\n }\n}\n\nfunction shuffleInteractiveEvents(events: InteractiveEvent[]) {\n // All qualifying events will be sent when a user clicks the selected target element,\n // but we shuffle them here so that we don't bias towards always sending any particular\n // one first.\n let currentIndex = events.length;\n while (currentIndex) {\n const randomIndex = Math.floor(Math.random() * currentIndex);\n currentIndex -= 1;\n const tmp = events[currentIndex];\n events[currentIndex] = events[randomIndex];\n events[randomIndex] = tmp;\n }\n}\n\n/**\n * Gather identifier data, retrieve questions, and render widget\n */\nfunction widgetInitialize(config: Config) {\n if (!config) return;\n window.UserLeap._config = config;\n\n if (config.mute) {\n // Userleap.mute isn't defined yet\n window.UserLeap._queue.pause();\n }\n\n const { interactiveEvents, pageUrlEvents, dismissOnPageChange } = config;\n if (interactiveEvents) shuffleInteractiveEvents(interactiveEvents);\n\n if (interactiveEvents || pageUrlEvents || dismissOnPageChange) {\n bindTrackingEvents();\n locationChangeHandler();\n }\n}\n\n// Delay survey off of both showSurveyCallback and based off survey delay here\nasync function delaySurveyIfNecessary(\n response: {\n json?: {\n delay?: number;\n surveyId?: number;\n };\n },\n showSurveyCallback?: (surveyId?: number) => Promise<boolean>,\n) {\n let shouldShowSurvey = true;\n if (showSurveyCallback && response?.json?.surveyId) {\n window.UserLeap.delayingSurvey = true;\n shouldShowSurvey = await showSurveyCallback(response.json.surveyId);\n window.UserLeap.delayingSurvey = false;\n if (!shouldShowSurvey) {\n return false;\n }\n }\n\n if (response?.json?.delay && !window.UserLeap.isMobileSDK) {\n window.UserLeap.delayingSurvey = true;\n await delay(response.json.delay);\n window.UserLeap.delayingSurvey = false;\n }\n return shouldShowSurvey;\n}\n\n/**\n * Hydrates the window.userLeap object with test mode\n * specific functions\n */\nconst __enableUserLeapAPIActions = function (config: Config) {\n if (!window.UserLeap) {\n return;\n }\n\n const identifyAndTrackHelper = async (\n payload: TrackPayload = {},\n ): Promise<\n | {\n error?: Error;\n message?: string;\n success: boolean;\n surveyState: SurveyState;\n }\n | undefined\n > => {\n const {\n userId,\n anonymousId,\n metadata = {},\n properties,\n showSurveyCallback,\n } = payload;\n let { eventName } = payload;\n\n if (window.UserLeap.debugMode && eventName !== PAGE_URL_EVENT_NAME)\n console.info(\"[DEBUG] Sprig track\", payload);\n\n if (config.mode === \"test\") {\n return;\n }\n\n const previewKey =\n localStorageHelper.getItem(\"sprig.previewKey\") ?? undefined;\n\n if (config.requireUserIdForTracking && !window.UserLeap.userId && !userId) {\n const message = \"[Sprig] - Skipping tracking without userId\";\n console.warn(message);\n return { success: false, message, surveyState: \"no survey\" };\n }\n if (!eventName || eventName.trim().length === 0) {\n eventName = eventName ? String(eventName) : \"\";\n const message = `[Sprig] - Invalid event name ` + eventName;\n console.warn(message);\n return { success: false, message, surveyState: \"no survey\" };\n }\n\n const trackStartUrl = trackPageViewUrl ?? window.location.href;\n if (!metadata.url) metadata.url = trackStartUrl;\n\n widgetSetLocalStorageCredentialsValue(\"trackStartUrl\", trackStartUrl);\n\n if (window.UserLeap?._config?.optimizelyEnabled) {\n const headers = getHttpHeaders(window.UserLeap);\n const isMobileWebview = calculateIsMobileWebview(headers);\n // Call Optimizely in browser to scrape data on Web\n if (!isMobileWebview)\n OptimizelyIntegration.getAndSetWebOptimizelyExperiments();\n\n metadata[\"optimizelyExperiments\"] = Object.assign(\n {},\n OptimizelyIntegration.getAllOptimizelyExperiments(),\n );\n }\n\n if (window.UserLeap?._config?.launchDarklyEnabled) {\n metadata[\"launchDarklyFlags\"] =\n LaunchDarklyIntegration.getAllLaunchDarklyVariations();\n }\n\n // set userId and/or anonymousId locally.\n // they will be included in request header.\n if (userId) window.UserLeap.userId = userId;\n if (anonymousId) window.UserLeap.partnerAnonymousId = anonymousId;\n\n // set event properties\n if (properties) metadata.eventProperties = properties;\n modules.replay?.RecordEvent({\n name: eventName,\n url: metadata.url as string,\n });\n logger.info(\"TrackEvent\", { eventName });\n\n // if a survey trigger delay is ongoing, use events/batch API to avoid survey selector (blocking other events to trigger the survey).\n const result =\n window.UserLeap.delayingSurvey || isSurveyOpen()\n ? await authenticatedFetch(\n apiUrl(\"1\", [PATH_VISITOR], \"events/batch\"),\n {\n body: JSON.stringify({\n events: [\n {\n event: eventName,\n metadata,\n },\n ],\n previewKey,\n }),\n method: \"POST\",\n shouldDropOnRateLimit: true,\n },\n )\n : await authenticatedFetch(apiUrl(\"1\", [PATH_VISITOR], \"events\"), {\n body: JSON.stringify({\n event: eventName,\n metadata,\n previewKey,\n }),\n method: \"POST\",\n shouldDropOnRateLimit: true,\n });\n if (!result.ok) {\n const errorMessage = `[Sprig] (ERR-421) Failed to track event`;\n if (result.reportError) {\n console.warn(errorMessage, result.error);\n\n if (result.error) window.UserLeap.reportError(\"track\", result.error);\n }\n return {\n success: false,\n message: errorMessage,\n error: result.error,\n surveyState: \"no survey\",\n };\n }\n if (userId) widgetSetLocalStorageCredentialsValue(\"uid\", userId);\n if (anonymousId) widgetSetLocalStorageCredentialsValue(\"aid\", anonymousId);\n\n const responseBody = result.json;\n if (responseBody.invalidPreviewKey) {\n localStorageHelper.removeItem(\"sprig.previewKey\");\n }\n\n const trackedUrl = metadata.trackPageView ? metadata.url : undefined;\n\n const feedbackButtonReturned = !!responseBody?.feedbackButton;\n if (feedbackButtonReturned) {\n createFeedbackButton(responseBody.feedbackButton, undefined, trackedUrl);\n }\n const showSurvey = await delaySurveyIfNecessary(result, showSurveyCallback);\n if (!showSurvey) {\n const message = `[Sprig] Callback returned false, aborting rendering of survey`;\n return { success: false, message, surveyState: \"no survey\" };\n }\n\n if (shouldDisplaySurveyAfterDelay(trackStartUrl)) {\n return displayQuestions(\n responseBody,\n trackedUrl,\n initializedHeatmapPrivacySettings,\n );\n } else {\n return {\n success: false,\n message: \"Study should not be displayed after page navigation\",\n surveyState: \"no survey\",\n };\n }\n };\n\n const overrideSurveyStyles = (\n document: HTMLElement | null | undefined,\n styleString: string,\n ) => {\n const iframeDoc = document?.querySelector<HTMLIFrameElement>(\n `[id=\"${FRAME_ID}\"]`,\n )?.contentDocument;\n if (iframeDoc) {\n setSurveyStyles({\n document: iframeDoc,\n elementId: \"ul-custom-style\",\n styleString: styleString,\n });\n }\n };\n\n const apiActions: SprigAPIActions = {\n // Triggers displaying specified survey. Does submit answers!\n async displaySurvey(surveyId) {\n console.warn(\n \"[Sprig] displaySurvey should only be used to debug your studies; not intended for production usage.\",\n );\n window.UserLeap(\"dismissActiveSurvey\", DismissReason.Override);\n return getQuestions({ surveyId }, true);\n },\n\n // Triggers displaying specified survey template. Does not submit answers\n _previewSurvey(surveyTemplateId) {\n window.UserLeap(\"dismissActiveSurvey\", DismissReason.Override);\n getQuestions({ surveyTemplateId }, false);\n },\n\n // Triggers displaying specified survey. Does not submit answers\n _reviewSurvey(surveyId) {\n window.UserLeap(\"dismissActiveSurvey\", DismissReason.Override);\n getQuestions({ surveyId }, false);\n },\n\n previewSurvey(surveyTemplateId) {\n apiActions._previewSurvey(surveyTemplateId);\n },\n\n reviewSurvey(surveyId) {\n apiActions._reviewSurvey(surveyId);\n },\n\n mute() {\n window.UserLeap._queue.pause();\n },\n\n unmute() {\n window.UserLeap._queue.unpause();\n },\n\n setVisitorToken() {\n console.warn(\"[Sprig] setVisitorToken is deprecated.\");\n },\n\n dismissActiveSurvey(initiator = DismissReason.API) {\n if (!window.UserLeap.container) return;\n if (initiator === DismissReason.Closed && window.Sprig.trackHistory) {\n window.Sprig.trackHistory({ event: \"closed\" });\n }\n\n eventEmitter.emit(SprigEvent.SurveyCloseRequested, {\n name: SprigEvent.SurveyCloseRequested,\n initiator,\n \"survey.id\": parseInt(window.UserLeap.container.dataset.studyId!),\n });\n\n eventEmitter.emit(SprigEvent.SurveyWillClose, {\n name: SprigEvent.SurveyWillClose,\n initiator,\n \"survey.id\": parseInt(window.UserLeap.container.dataset.studyId!),\n });\n },\n\n // Set an arbitrary attribute on the visitor\n async setAttribute(attribute: string, value: string | number | boolean) {\n if (!attribute || (!value && value !== 0 && value !== false)) {\n const message = `[Sprig] - Disregarding empty attribute / value provided`;\n console.warn(message);\n return { success: false, message };\n }\n return this.setAttributes({ [attribute]: value });\n },\n\n async setAttributes(attributes) {\n if (\n attributes === null ||\n attributes === undefined ||\n Object.keys(attributes).length === 0\n ) {\n const message = `[Sprig] - Disregarding empty attributes provided`;\n console.warn(message);\n return { success: false, message };\n }\n return this.identifyAndSetAttributes({ attributes });\n },\n\n // identifies and sets attributes on visitor; see sprig-browser/index.js for documentation\n async identifyAndSetAttributes(payload) {\n if (window.UserLeap.debugMode)\n console.info(\"[DEBUG] Sprig identifyAndSetAttributes\", payload);\n\n if (config.mode === \"test\") return;\n\n if (\n payload === null ||\n typeof payload !== \"object\" ||\n !(payload.userId || payload.anonymousId || payload.attributes)\n ) {\n const message = `[Sprig] - Disregarding empty payload provided`;\n console.warn(message);\n return { success: false, message };\n }\n\n const { userId, anonymousId, attributes } = payload;\n\n if (\n config.requireUserIdForTracking &&\n !window.UserLeap.userId &&\n !userId\n ) {\n const message = \"[Sprig] - Skipping tracking without userId\";\n console.warn(message);\n return { success: false, message };\n }\n if (attributes) {\n // replace the email key if we don't already have !email in the attributes\n if (attributes[\"email\"] && !attributes[EMAIL_ATTRIBUTE_KEY]) {\n attributes[EMAIL_ATTRIBUTE_KEY] = attributes[\"email\"];\n delete attributes[\"email\"];\n }\n // Dedupe already provided attributes in this session\n const keys = Object.keys(attributes);\n for (const key of keys) {\n if (attributes[key] === sessionProvidedAttributes[key]) {\n delete attributes[key];\n }\n }\n }\n\n if (\n // no attributes to set, and the provided userId and/or anonymousId are already set locally; nothing to do.\n (!attributes || Object.keys(attributes).length === 0) &&\n (!userId || window.UserLeap.userId === userId) &&\n (!anonymousId || window.UserLeap.partnerAnonymousId === anonymousId)\n ) {\n return { success: true };\n }\n\n const putUserBody: { partnerAnonymousId?: string; userId?: string } = {};\n // set userId and/or anonymousId locally, and in potential request body if there are no attributes.\n // they will be included in request header and used in authentication.\n if (userId) putUserBody.userId = window.UserLeap.userId = userId;\n if (anonymousId)\n putUserBody.partnerAnonymousId = window.UserLeap.partnerAnonymousId =\n anonymousId;\n\n let result;\n if (attributes && Object.keys(attributes).length > 0) {\n result = await authenticatedFetch(\n apiUrl(\"1\", [PATH_ENV, PATH_VISITOR], \"attributes\"),\n {\n body: JSON.stringify(attributes),\n method: \"PUT\",\n },\n );\n if (result.ok) {\n Object.assign(sessionProvidedAttributes, attributes);\n } else if (result.reportError) {\n console.warn(\n `[Sprig] (ERR-432) identifyAndSetAttributes failed`,\n result.error,\n );\n\n if (result.error)\n window.UserLeap.reportError(\n \"identifyAndSetAttributes\",\n result.error,\n );\n }\n } else {\n result = await authenticatedFetch(\n apiUrl(\"1\", [PATH_ENV, PATH_VISITOR]),\n {\n body: JSON.stringify(putUserBody),\n method: \"PUT\",\n },\n );\n }\n\n if (attributes && attributes[EMAIL_ATTRIBUTE_KEY]) {\n window.UserLeap.email = attributes[EMAIL_ATTRIBUTE_KEY] as string;\n }\n\n if (result.ok) {\n if (userId) widgetSetLocalStorageCredentialsValue(\"uid\", userId);\n if (anonymousId)\n widgetSetLocalStorageCredentialsValue(\"aid\", anonymousId);\n }\n\n return { success: !!result.ok };\n },\n\n async removeAttributes(attributes) {\n if (window.UserLeap.debugMode)\n console.info(\"[DEBUG] Sprig removeAttributes\", attributes);\n if (config.mode === \"test\") return;\n\n if (\n attributes === null ||\n attributes === undefined ||\n attributes.length === 0\n ) {\n const message = `[Sprig] - Disregarding empty attributes provided`;\n console.warn(message);\n return { success: false, message };\n }\n\n if (config.requireUserIdForTracking && !window.UserLeap.userId) {\n const message = \"[Sprig] - Skipping tracking without userId\";\n console.warn(message);\n return { success: false, message };\n }\n\n const result = await authenticatedFetch(\n apiUrl(\"1\", [PATH_ENV, PATH_VISITOR], \"attributes\"),\n {\n body: JSON.stringify({ delete: attributes }),\n method: \"DELETE\",\n },\n );\n if (!result.ok && result.reportError) {\n console.warn(\n `[Sprig] (ERR-433) Remove attributes failed`,\n result.error,\n );\n if (result.error)\n window.UserLeap.reportError(\"removeAttributes\", result.error);\n }\n\n return { success: !!result.ok };\n },\n\n async addSurveyListener(listener) {\n eventEmitter.on(SprigEvent.SurveyLifeCycle, listener);\n },\n\n async removeSurveyListener(listener) {\n eventEmitter.removeListener(SprigEvent.SurveyLifeCycle, listener);\n },\n\n async addListener(event, listener) {\n eventEmitter.on(event, listener);\n },\n\n async removeListener(event, listener) {\n eventEmitter.removeListener(event, listener);\n },\n\n async removeAllListeners() {\n eventEmitter.removeAllListeners();\n },\n\n setPreviewKey(previewKey: string) {\n if (!previewKey || typeof previewKey !== \"string\") {\n return;\n }\n if (localStorageHelper.isStorageAvailable && previewKey) {\n localStorageHelper.setItem(\"sprig.previewKey\", previewKey);\n }\n },\n\n /**\n * Attach a user id to the visitor\n */\n async setUserId(userId) {\n if (window.UserLeap.debugMode)\n console.info(\"[DEBUG] Sprig setUserId\", userId);\n if (userId === null || userId === undefined) {\n const message = `[Sprig] - Invalid userId ${userId}`;\n console.warn(message);\n return { success: false, message };\n }\n if (config.mode === \"test\" || userId === window.UserLeap.userId) {\n return;\n }\n\n window.UserLeap.userId = userId;\n const visitorId = window.UserLeap.visitorId;\n const result = await authenticatedFetch(\n apiUrl(\"1\", [PATH_ENV, PATH_VISITOR]),\n {\n body: JSON.stringify({\n userId,\n }),\n method: \"PUT\",\n },\n );\n if (!result.ok) {\n if (result.reportError) {\n console.warn(`[Sprig] (ERR-420) Failed to set user id`, result.error);\n if (result.error)\n window.UserLeap.reportError(\"setUserId\", result.error);\n }\n return;\n }\n if (visitorId !== window.UserLeap.visitorId) {\n modules.replay?.clearUserReplayData();\n }\n widgetSetLocalStorageCredentialsValue(\"uid\", userId);\n },\n\n /**\n * Set a partner anonymous id for future requests -- to be deprecated, never documented.\n */\n async setPartnerAnonymousId(partnerAnonymousId) {\n if (window.UserLeap.debugMode)\n console.info(\"[DEBUG] Sprig setPartnerAnonymousId\", partnerAnonymousId);\n if (partnerAnonymousId === null || partnerAnonymousId === undefined) {\n const message = `[Sprig] - Invalid partnerAnonymousId ${partnerAnonymousId}`;\n console.warn(message);\n return { success: false, message };\n }\n\n window.UserLeap.partnerAnonymousId = partnerAnonymousId;\n widgetSetLocalStorageCredentialsValue(\"aid\", partnerAnonymousId);\n return { success: true };\n },\n\n /**\n * track an event to show survey if eligible\n */\n async track(\n eventName,\n properties,\n metadata = {},\n showSurveyCallback = undefined,\n ) {\n return identifyAndTrackHelper({\n eventName,\n properties,\n metadata,\n showSurveyCallback,\n });\n },\n\n // identifies and tracks event on visitor; see sprig-browser/index.js for documentation\n async identifyAndTrack(payload) {\n return await identifyAndTrackHelper(payload);\n },\n\n trackPageView(\n url: string,\n props = undefined,\n showSurveyCallback = undefined,\n calledFromApi = true,\n ) {\n trackPageViewUrl = url;\n trackPageView(url, props, showSurveyCallback, calledFromApi);\n },\n\n applyFeedbackStyles({ button = \"\", view = \"\" }) {\n // button override css will exist in the document so will just keep track of view only\n window.UserLeap.feedbackCustomStyles = view;\n if (document.getElementById(\"sprig-feedback-style\")) {\n setSurveyStyles({\n document: document,\n elementId: \"ul-custom-style\",\n styleString: button,\n nonce: window.UserLeap.styleNonce,\n });\n }\n\n overrideSurveyStyles(\n document.querySelector(\".ul-container-feedback\") as HTMLElement,\n view,\n );\n },\n\n applyStyles(styleString) {\n window.UserLeap.customStyles = styleString;\n // survey already present override the styles\n // this will only work for web sdk as when sdk is direct embedded there would not be a frame\n overrideSurveyStyles(window.UserLeap.container, styleString);\n },\n\n /**\n set viewport dimensions, in int pixels. necessary if Sprig is installed in an iframe/component defaulting to 0 width and height.\n */\n setWindowDimensions(width, height) {\n const parsedWidth =\n typeof width === \"string\" ? parseInt(width, 10) : width;\n const parsedHeight =\n typeof height === \"string\" ? parseInt(height, 10) : height;\n\n if (!isNaN(parsedWidth) && !isNaN(parsedHeight)) {\n window.UserLeap.windowDimensions = {\n width: parsedWidth,\n height: parsedHeight,\n };\n }\n\n const headers = getHttpHeaders(window.UserLeap);\n const useMobileStyling = calculateUseMobileStyling(headers);\n const platformIsWeb = headers[\"userleap-platform\"] === \"web\";\n if (!window.UserLeap.frameId) return; // nothing to do if there's no survey frame\n const iframe = document.getElementById(\n window.UserLeap.frameId,\n ) as HTMLIFrameElement | null;\n if (!iframe) return;\n\n if (window.UserLeap.useMobileStyling) {\n // desktop style is not repsonsive, but still emit SURVEY_DIMENSIONS\n if (window.UserLeap.windowDimensions?.width)\n iframe.style.width = `${window.UserLeap.windowDimensions.width}px`;\n if (window.UserLeap.windowDimensions?.height)\n iframe.style.maxHeight = `${\n window.UserLeap.windowDimensions.height - 20\n }px`;\n\n if (iframe.contentDocument)\n iframe.style.height =\n String(\n calculateFrameDimensions(\n iframe.contentDocument,\n platformIsWeb && !useMobileStyling,\n shouldDirectEmbed(headers),\n )[0],\n ) + \"px\";\n }\n eventEmitter.emit(SprigEvent.SurveyDimensions, {\n name: SprigEvent.SurveyDimensions,\n contentFrameWidth: iframe.clientWidth,\n contentFrameHeight: iframe.clientHeight,\n \"survey.id\": parseInt(window.UserLeap.container!.dataset.studyId!),\n });\n },\n\n /**\n * logs out current visitor and associated ids\n */\n logoutUser() {\n if (window.UserLeap.debugMode) console.info(\"[DEBUG] Sprig logout\");\n logger.info(\"LogOut\", {\n vid: window.UserLeap.visitorId,\n userId: window.UserLeap.userId,\n });\n\n //clear in-memory\n window.UserLeap.visitorId = null;\n window.UserLeap.userId = null;\n window.UserLeap.partnerAnonymousId = null;\n window.UserLeap.token = null;\n window.UserLeap.email = null;\n\n //clear local storage\n localStorageHelper.removeItem(\"userleap.ids\");\n\n /**\n * If it's paused, we're not going to wait for it to unpause to replay\n * the queued items because it may replay it with a different visitorId\n */\n if (window.UserLeap._queue.isPaused()) window.UserLeap._queue.empty();\n fallbackToAnonVisitor();\n modules.replay?.clearUserReplayData();\n window.UserLeap._queue.unpause();\n },\n\n /**\n * dismiss surveys and clean up sprig globals\n */\n teardown() {\n unregisterEventListeners();\n window.UserLeap(\"dismissActiveSurvey\", DismissReason.API);\n\n // @ts-expect-error - we want to clear the global UserLeap object\n delete window.UserLeap;\n // @ts-expect-error - we want to clear the global UserLeap object\n delete window.Sprig;\n delete window._Sprig;\n },\n\n integrateOptimizely(data, isOverride = true) {\n if (!window.UserLeap?._config?.optimizelyEnabled) {\n console.warn(\n \"[SPRIG] Optimizely integration is currently not enabled for your product.\",\n );\n return;\n }\n try {\n const jsonData = typeof data === \"string\" ? JSON.parse(data) : data;\n OptimizelyIntegration.setOptimizelyExperiment(jsonData, isOverride);\n } catch (err) {\n console.warn(\"[Sprig] Error with integrating Optimizely data\");\n if (err instanceof Error)\n window.UserLeap.reportError(\"integrateOptimizely\", err);\n }\n },\n\n integrateOptimizelyClient(client) {\n if (!window.UserLeap?._config?.optimizelyEnabled) {\n console.warn(\n \"[SPRIG] Optimizely integration is currently not enabled for your product.\",\n );\n return;\n }\n\n const onActivate = ({\n experiment,\n variation,\n }: ActivateListenerPayload) => {\n const insertExperiment = {\n experiments: [\n {\n id: experiment.id,\n variation: variation.key,\n },\n ],\n };\n window.UserLeap(\"integrateOptimizely\", insertExperiment, false);\n };\n\n client.notificationCenter.addNotificationListener(\n // previously was enums.NOTIFICATION_TYPES.ACTIVATE, but need to wait for optimizely sdk v5 for better tree shaking\n \"ACTIVATE:experiment, user_id,attributes, variation, event\",\n onActivate,\n );\n },\n\n importLaunchDarklyData(data) {\n if (!window.UserLeap?._config?.launchDarklyEnabled) {\n console.warn(\n \"[SPRIG] LaunchDarkly integration is currently not enabled for your product.\",\n );\n return;\n }\n LaunchDarklyIntegration.setLDFlagsVariations(data);\n },\n\n /** @deprecated */\n setVisitorAttribute(attribute, value) {\n console.warn(\n \"[Sprig] setVisitorAttribute is deprecated. Please use setAttribute\",\n );\n return apiActions.setAttribute(attribute, value);\n },\n\n // Attach an email address to visitor\n /** @deprecated */\n async setEmail(email) {\n return apiActions.setAttribute(EMAIL_ATTRIBUTE_KEY, email);\n },\n\n /** @deprecated */\n async setVisitorEmail(email) {\n console.warn(\n \"[Sprig] setVisitorEmail is deprecated. Please use setEmail\",\n );\n return apiActions.setEmail(email);\n },\n\n async _generateVideoUploadUrl(body) {\n return generateVideoUploadUrl(body);\n },\n\n _reportMetric(name, value) {\n reportAndRegister(name, value);\n },\n\n async _completeSessionReplay({ surveyId, responseGroupUuid, eventDigest }) {\n if (!modules.replay) {\n window.UserLeap.reportError(\n \"_completeSessionReplay\",\n new Error(\"Replay module not registered\"),\n );\n return false;\n }\n return modules.replay?._completeSessionReplay({\n surveyId,\n responseGroupUuid,\n eventDigest,\n headers: getHttpHeaders(window.UserLeap),\n });\n },\n\n pauseReplayRecording() {\n if (modules.replay?.isReplayPaused?.()) {\n return;\n }\n modules.replay?.recordReplayPaused?.();\n },\n\n resumeReplayRecording() {\n if (!modules.replay?.isReplayPaused?.()) {\n return;\n }\n modules.replay?.recordReplayResumed?.();\n modules.replay?.recordFullSnapshot?.();\n },\n };\n\n Object.assign(window.UserLeap, apiActions);\n};\n\n/**\n * Pulls down presentation config settings from server and\n * applies them to supplied config dict\n */\nasync function applyRemoteConfig(config: Partial<Config>) {\n const headers = getHttpHeaders(window.UserLeap);\n\n // CSP violation listener to prevent retries on CSP violations\n document.addEventListener(\"securitypolicyviolation\", cspViolationHandler);\n const response = await sprigFetch(apiUrl(\"1\", [PATH_ENV], \"config\"), {\n headers,\n });\n document.removeEventListener(\"securitypolicyviolation\", cspViolationHandler);\n\n if (!response.ok) {\n window.SprigLoggerCallback?.(\"Sprig config fetch failed\");\n if (response.reportError) {\n console.warn(\n `[Sprig] (ERR-422) Failed to load configuration`,\n response.error,\n );\n if (response.error)\n window.UserLeap.reportError(\"applyRemoteConfig\", response.error);\n }\n killNetworkRequests(\"Disabled: failed to fetch configuration\");\n return config;\n }\n const properties = response.json;\n if (properties?.disabled) {\n window.SprigLoggerCallback?.(\"Sprig config fetch disabled\");\n killNetworkRequests(`Disabled: ${properties.disabled}`);\n return { disabled: properties.disabled };\n }\n\n const newConfig = Object.assign({}, properties, config);\n return newConfig;\n}\n\nasync function reportError(\n action: string,\n err: Error,\n extraInfo: object = {},\n bodyInfo: object = {},\n) {\n const mode = window.__cfg && window.__cfg.mode;\n const vid = widgetGetVID();\n const envId = window.UserLeap.envId;\n const pde = window.document.documentElement;\n\n const meta = {\n mode,\n screenWidth: window.screen.width,\n screenHeight: window.screen.height,\n clientWidth: pde.clientWidth,\n clientHeight: pde.clientHeight,\n location: trackPageViewUrl ?? window.location.href,\n language: window.navigator.language,\n ...extraInfo,\n };\n\n const body = {\n action,\n breadcrumbs: logger.breadcrumbs,\n err: { message: `${err?.name} - ${err?.message}`, stack: err?.stack },\n meta,\n vid,\n envId,\n ...bodyInfo,\n };\n const result = await authenticatedFetch(apiUrl(\"1\", null, \"errors\"), {\n method: \"POST\",\n headers: {\n \"x-ul-error\": window.btoa(`userleap-${Date.now()}-error`),\n },\n body: JSON.stringify(body),\n shouldDropOnRateLimit: true,\n });\n if (!result.ok) {\n console.warn(`[Sprig] (ERR-444) Failed to report error to API`, err);\n }\n}\n\n/**\n * Generates a video URL\n */\nexport async function generateVideoUploadUrl(body: unknown) {\n if (!body) return;\n\n const uploadEndpoint = `${window.UserLeap._API_URL}/2/environments/integrations/upload`;\n\n try {\n const response = await fetch(uploadEndpoint, {\n method: \"POST\",\n cache: \"no-cache\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n\n if (response.ok) {\n const uploadResponse = await response.json();\n return uploadResponse?.upload?.url;\n } else {\n return null;\n }\n } catch (err) {\n console.warn(\"[Sprig] Error with generating video upload url\");\n if (err instanceof Error)\n window.UserLeap.reportError(\"generateVideoUploadUrl\", err);\n }\n}\n/**\n * Initialize frame and bootstrap data\n * @param config this is included in the compilation step (points to the default viewSDKURL)\n * @param config.envId Environment Id\n * @param config.path Frame script url\n * @param [config.border] Border color\n */\nexport function sprigInitializer(config: Partial<Config> = {}) {\n window.SprigLoggerCallback?.(\"Initializing Sprig\");\n const previewKey =\n new URLSearchParams(window.location.search).get(\n \"sprigPreviewKey\" satisfies QueryParam,\n ) ?? \"\";\n window.UserLeap.UPDATES = EVENTS;\n window.UserLeap(\"setPreviewKey\", previewKey);\n\n async function load() {\n if (window.UserLeap.loaded) return;\n window.SprigLoggerCallback?.(\"Loading Sprig\");\n window.UserLeap.reportError = reportError;\n window.UserLeap.loaded = true;\n\n // combine compile-provided config and installation-snippet config\n window.UserLeap._config = Object.assign({}, config, window.UserLeap.config);\n window.UserLeap.delayingSurvey = false;\n\n //backwards compat\n if (\n window.UserLeap._config &&\n typeof window.UserLeap._config === \"object\"\n ) {\n for (const attr in window.UserLeap._config) {\n window.UserLeap[attr as keyof Config] = window.UserLeap._config[\n attr as keyof Config\n ] as never;\n }\n }\n if (window.Sprig.outstandingTransactionLimit !== undefined) {\n config.outstandingTransactionLimit =\n window.Sprig.outstandingTransactionLimit;\n }\n //backwards compatibility for old installation snippet which set appId instead of envId\n if (!window.UserLeap.envId) {\n if (window.UserLeap.appId) {\n window.UserLeap.envId = window.UserLeap.appId;\n } else {\n throw new Error(\"Missing Environment id\");\n }\n }\n if (window.UserLeap.debugMode)\n console.info(\"[DEBUG] Sprig debug mode enabled\");\n\n const credentials = loadCredentials();\n\n const sampleRate = window.UserLeap.sampleRate;\n let sampled = credentials[\"sampled\"];\n if (sampleRate) {\n if (sampled === null) {\n sampled = Math.random() < sampleRate;\n widgetSetLocalStorageCredentialsValue(\"sampled\", sampled);\n }\n if (!sampled) return;\n } else {\n //if customer removed sampleRate config, need to remove from localStorage\n if (sampled !== null) {\n widgetSetLocalStorageCredentialsValue(\"sampled\", null);\n }\n }\n\n if (!window.UserLeap._API_URL)\n window.UserLeap._API_URL = \"https://api.sprig.com\";\n\n //make a copy of existing queue, we will replay this after configuring\n //Note: UserLeap._queue is an array at this point (defined in installation snippet)\n // @ts-expect-error UserLeap._queue is an array at this point (defined in installation snippet)\n const queueItems = [...window.UserLeap._queue];\n\n //converts [] -> Queue()\n window.UserLeap._queue = new SprigQueue(window.UserLeap, []);\n window.UserLeap._queue.pause();\n for (let i = 0; i < queueItems.length; i++) {\n window.UserLeap._queue.push(queueItems[i]);\n }\n\n const cachedToken = credentials[\"token\"];\n if (cachedToken) {\n window.UserLeap.token = cachedToken;\n window.UserLeap.visitorId = credentials[\"vid\"] ?? null;\n window.UserLeap.userId = credentials[\"uid\"] ?? null;\n window.UserLeap.partnerAnonymousId = credentials[\"aid\"] ?? null;\n } else {\n fallbackToAnonVisitor();\n }\n const headers = getHttpHeaders(window.UserLeap);\n const isMobileWebview = calculateIsMobileWebview(headers);\n window.SprigLoggerCallback?.(\"Sprig fetching config\");\n const remoteConfig = await applyRemoteConfig(config);\n window.SprigLoggerCallback?.(\"Sprig fetched config\");\n initMetrics({\n isWeb: !isMobileWebview,\n reportingIntervalSeconds:\n remoteConfig.metricsReportingEnabled ||\n remoteConfig.mobileMetricsReportingEnabled\n ? remoteConfig.metricsReportingIntervalSeconds\n : 0,\n thresholds: remoteConfig.metricThresholds,\n postMetrics: async (json: string) => {\n await authenticatedFetch(apiUrl(\"1\", [PATH_ENV], \"metrics\"), {\n body: json,\n method: \"POST\",\n headers: {\n \"x-ul-replay-enabled\": `${!!modules.replay?.isReplayRecording()}`,\n },\n shouldDropOnRateLimit: true,\n });\n },\n });\n if (!isMobileWebview) {\n const alwaysOnConfig = remoteConfig.alwaysOnReplay\n ? {\n userAgent: window.navigator.userAgent,\n surveyId: remoteConfig.alwaysOnReplay.surveyId,\n responseGroupUuid: remoteConfig.alwaysOnReplay.responseGroupUuid,\n sdkVersion: __SDK_VERSION__,\n maxDurationSeconds: remoteConfig.alwaysOnReplay.maxDurationSeconds,\n }\n : undefined;\n\n await modules.replay?.initializeReplay({\n maxReplayDurationSeconds: remoteConfig.maxReplayDurationSeconds,\n maxInflightRequests: window.UserLeap.maxInflightReplayRequests ?? 2,\n replaySettings: remoteConfig.replaySettings,\n apiUrl: window.UserLeap._API_URL,\n alwaysOnConfig,\n });\n initializedHeatmapPrivacySettings = remoteConfig.replaySettings;\n }\n __enableUserLeapAPIActions(remoteConfig);\n\n await widgetInitialize(remoteConfig);\n window.UserLeap._queue.unpause();\n\n window.SprigLoggerCallback?.(\"SdkReady\");\n eventEmitter.emit(SprigEvent.SDKReady, {\n mobileMetricsReportingEnabled:\n !!remoteConfig.mobileMetricsReportingEnabled,\n metricsReportingInterval:\n remoteConfig.metricsReportingIntervalSeconds || 0,\n metricsThresholds: remoteConfig.metricThresholds || [],\n maxMobileReplayDurationSeconds:\n remoteConfig.maxMobileReplayDurationSeconds,\n mobileReplaySettings: remoteConfig.mobileReplaySettings,\n });\n eventEmitter.emit(SprigEvent.VisitorIDUpdated, {\n visitorId: window.UserLeap.visitorId,\n });\n eventEmitter.on(SprigEvent.VisitorIDUpdated, () => {\n for (const key in sessionProvidedAttributes)\n delete sessionProvidedAttributes[key];\n });\n }\n\n if (document.readyState === \"complete\") {\n load();\n } else if (window.attachEvent) {\n window.attachEvent(\"onload\", load);\n } else {\n window.addEventListener(\n \"load\",\n () => {\n load();\n },\n false,\n );\n }\n}\n","import {\n DismissReason,\n EVENTS,\n SprigEvent,\n} from \"../src/constants/sprigEvents\";\nimport { sprigInitializer } from \"../src/controller/controller\";\n\nexport class SprigAPI {\n /**\n * Include external events emitted from Sprig\n */\n UPDATES = EVENTS;\n\n /**\n * Triggers displaying specified survey. Does submit answers!\n */\n displaySurvey(surveyId: number) {\n window.Sprig(\"displaySurvey\", surveyId);\n }\n\n /**\n * Pauses api interactions\n */\n mute() {\n window.Sprig(\"mute\");\n }\n\n /**\n * Restart api interactions\n */\n unmute() {\n window.Sprig(\"unmute\");\n }\n\n /**\n * Manually dismiss an opened survey\n */\n dismissActiveSurvey() {\n window.Sprig(\"dismissActiveSurvey\");\n }\n\n /**\n * Set an arbitrary attribute on the visitor\n */\n setAttribute(attribute: string, value: string | number | boolean) {\n window.Sprig(\"setAttribute\", attribute, value);\n }\n\n /**\n * Set attributes on visitor\n */\n setAttributes(attributes: SprigAttributes) {\n window.Sprig(\"setAttributes\", attributes);\n }\n\n /**\n * Set identifiers and attributes on visitor\n */\n identifyAndSetAttributes(payload: {\n anonymousID?: string;\n attributes: SprigAttributes;\n userID?: string;\n }) {\n window.Sprig(\"identifyAndSetAttributes\", payload);\n }\n\n /**\n * Remove attributes on visitor\n */\n removeAttributes(attributes: SprigAttributes) {\n window.Sprig(\"removeAttributes\", attributes);\n }\n\n /**\n * Add a listener for an event defined in ulEvents\n */\n addListener(event: SprigEvent, listener: SprigListener) {\n window.Sprig(\"addListener\", event, listener);\n }\n\n /**\n * Remove a listener for an event defined in ulEvents\n */\n removeListener(event: SprigEvent, listener: SprigListener) {\n window.Sprig(\"removeListener\", event, listener);\n }\n\n /**\n * Remove all listeners set on Sprig\n */\n removeAllListeners() {\n window.Sprig(\"removeAllListeners\");\n }\n\n /**\n * Attach an email address to visitor\n */\n setEmail(email: string) {\n window.Sprig(\"setAttribute\", \"!email\", email);\n }\n\n /**\n * Attach a user id to the visitor\n */\n setUserId(userId: string) {\n window.Sprig(\"setUserId\", userId);\n }\n\n /**\n * Set a partner anonymous id for future requests.\n */\n setPartnerAnonymousId(partnerAnonymousId: string) {\n window.Sprig(\"setPartnerAnonymousId\", partnerAnonymousId);\n }\n\n /**\n * Track an event to show survey if eligible\n * @param eventName name of event to track\n */\n track(\n eventName: string,\n properties: Record<string, unknown> = {},\n metadata: SprigMetadata = {},\n ) {\n window.Sprig(\"track\", eventName, properties, metadata);\n }\n\n /**\n * Optionally set userId and/or anonymousId, track an event to show survey if eligible\n */\n identifyAndTrack(payload: {\n anonymousId?: string;\n eventName: string;\n metadata?: SprigMetadata;\n userId?: string;\n }) {\n window.Sprig(\"identifyAndTrack\", payload);\n }\n\n /**\n * Tracks a page view with the provided URL and additional event properties.\n */\n trackPageView(\n url: string,\n props?: SprigProperties,\n showSurveyCallback?: (surveyId?: number) => Promise<boolean>,\n ) {\n window.Sprig(\"trackPageView\", url, props, showSurveyCallback);\n }\n\n /**\n * Apply a css string representing the customized styles\n */\n applyStyles(styleString: string) {\n window.Sprig(\"applyStyles\", styleString);\n }\n\n /**\n Set viewport dimensions, in int pixels. necessary if Sprig is installed in an iframe/component defaulting to 0 width and height.\n */\n setWindowDimensions(width: number | string, height: number | string) {\n window.Sprig(\"setWindowDimensions\", width, height);\n }\n\n /**\n * Logs out current visitor and associated ids\n */\n logoutUser() {\n window.Sprig(\"logoutUser\");\n }\n\n /**\n * Clears Sprig from window\n */\n teardown() {\n window.Sprig(\"teardown\");\n }\n\n /**\n * Pause replay recording\n */\n pauseReplayRecording() {\n window.Sprig(\"pauseReplayRecording\");\n }\n\n /**\n * Resume replay recording\n */\n resumeReplayRecording() {\n window.Sprig(\"resumeReplayRecording\");\n }\n}\n\ntype NpmConfig = {\n envId?: string;\n environmentId?: string;\n path?: string;\n} & Partial<WindowSprig>;\n\nexport const sprig = {\n /**\n * Sets up the sprig api and load the sprig sdk on document load\n * @param config\n * @returns an instance of the sprig api\n */\n configure: (config: NpmConfig) => {\n if (!config.envId && !config.environmentId) {\n throw new Error(\n \"Initialization Error: Sprig configure requires an environmentId\",\n );\n }\n if (!config.envId) config.envId = config.environmentId ?? \"\"; // backwards compatible setting for environment id\n config.installationMethod = __INSTALLATION_METHOD__;\n if (window.Sprig) return window.Sprig;\n // @ts-expect-error - TODO: improve\n window.Sprig = function () {\n // @ts-expect-error - TODO: improve\n // eslint-disable-next-line prefer-rest-params\n window.Sprig._queue.push(arguments);\n };\n\n Object.getOwnPropertyNames(SprigAPI.prototype).map((apiMethodName) => {\n if (apiMethodName !== \"constructor\")\n window.Sprig[apiMethodName as keyof typeof SprigAPI] =\n SprigAPI.prototype[apiMethodName as keyof typeof SprigAPI.prototype];\n });\n const S = window.Sprig;\n S.appId = config.envId;\n // @ts-expect-error - TODO: improve\n S._queue = [];\n window.UserLeap = S;\n\n sprigInitializer(config);\n return window.Sprig;\n },\n};\n\nexport type WindowSprig = typeof window.Sprig;\nexport { DismissReason, SprigEvent };\n\nexport default { sprig, SprigAPI, configure: sprig.configure };\n","var 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 ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\nexport {\n CanvasContext,\n EventType,\n IncrementalSource,\n MediaInteractions,\n MouseInteractions,\n PointerTypes,\n ReplayerEvents\n};\n//# sourceMappingURL=types.js.map\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst transactionDoneMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const success = () => {\n resolve(wrap(request.result));\n };\n const error = () => {\n reject(request.error);\n };\n request.onsuccess = success;\n request.onerror = error;\n });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const complete = () => {\n resolve();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n };\n tx.oncomplete = complete;\n tx.onerror = error;\n tx.onabort = error;\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(this.request);\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.onupgradeneeded = (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction), event);\n };\n }\n if (blocked) {\n request.onblocked = (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event.newVersion, event);\n }\n openPromise\n .then((db) => {\n if (terminated)\n db.onclose = () => terminated();\n if (blocking) {\n db.onversionchange = (event) => blocking(event.oldVersion, event.newVersion, event);\n }\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked) {\n request.onblocked = (event) => blocked(\n // Casting due to https://github.com/microsoft/TypeScript-DOM-lib-generator/pull/1405\n event.oldVersion, event);\n }\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nconst advanceMethodProps = ['continue', 'continuePrimaryKey', 'advance'];\nconst methodMap = {};\nconst advanceResults = new WeakMap();\nconst ittrProxiedCursorToOriginalProxy = new WeakMap();\nconst cursorIteratorTraps = {\n get(target, prop) {\n if (!advanceMethodProps.includes(prop))\n return target[prop];\n let cachedFunc = methodMap[prop];\n if (!cachedFunc) {\n cachedFunc = methodMap[prop] = function (...args) {\n advanceResults.set(this, ittrProxiedCursorToOriginalProxy.get(this)[prop](...args));\n };\n }\n return cachedFunc;\n },\n};\nasync function* iterate(...args) {\n // tslint:disable-next-line:no-this-assignment\n let cursor = this;\n if (!(cursor instanceof IDBCursor)) {\n cursor = await cursor.openCursor(...args);\n }\n if (!cursor)\n return;\n cursor = cursor;\n const proxiedCursor = new Proxy(cursor, cursorIteratorTraps);\n ittrProxiedCursorToOriginalProxy.set(proxiedCursor, cursor);\n // Map this double-proxy back to the original, so other cursor methods work.\n reverseTransformCache.set(proxiedCursor, unwrap(cursor));\n while (cursor) {\n yield proxiedCursor;\n // If one of the advancing methods was not called, call continue().\n cursor = await (advanceResults.get(proxiedCursor) || cursor.continue());\n advanceResults.delete(proxiedCursor);\n }\n}\nfunction isIteratorProp(target, prop) {\n return ((prop === Symbol.asyncIterator &&\n instanceOfAny(target, [IDBIndex, IDBObjectStore, IDBCursor])) ||\n (prop === 'iterate' && instanceOfAny(target, [IDBIndex, IDBObjectStore])));\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get(target, prop, receiver) {\n if (isIteratorProp(target, prop))\n return iterate;\n return oldTraps.get(target, prop, receiver);\n },\n has(target, prop) {\n return isIteratorProp(target, prop) || oldTraps.has(target, prop);\n },\n}));\n\nexport { deleteDB, openDB, unwrap, wrap };\n","export const IframeMessages = {\n Loaded: \"sprigReplayIframeLoaded\",\n Settings: \"sprigReplayIframeSettings\",\n Snapshot: \"sprigReplayIframeTakeFullSnapshot\",\n Teardown: \"sprigReplayTeardown\",\n};\n\nconst iframes: {\n source: MessageEventSource | null;\n origin: MessageEvent[\"origin\"];\n}[] = [];\n\nexport const initIframeManager = (\n settings: Partial<\n Parameters<Exclude<typeof window.rrwebRecord, undefined>>[0]\n >,\n replayLibraryUrl: string,\n) => {\n window.addEventListener(\"message\", (event: MessageEvent) => {\n if (event.data.type === IframeMessages.Loaded) {\n iframes.push({\n source: event.source,\n origin: event.origin,\n });\n event.source?.postMessage(\n {\n type: IframeMessages.Settings,\n settings,\n replayLibraryUrl: replayLibraryUrl,\n },\n { targetOrigin: event.origin },\n );\n }\n });\n};\n\nexport const requestChildIframeFullSnapshot = () => {\n iframes.forEach((iframe) => {\n iframe.source?.postMessage(\n {\n type: IframeMessages.Snapshot,\n },\n { targetOrigin: iframe.origin },\n );\n });\n};\n\nexport const requestChildIframeTeardown = () => {\n iframes.forEach((iframe) => {\n iframe.source?.postMessage(\n {\n type: IframeMessages.Teardown,\n },\n { targetOrigin: iframe.origin },\n );\n });\n};\n","import { Semaphore } from \"./semaphore\";\nimport { ChunkUpload, ChunkUploadInfo, EventDigest } from \"./types\";\nimport { breadcrumbsLogger as logger } from \"../../helpers/BreadcrumbsLogger\";\nimport { sprigFetch } from \"../../helpers/network\";\n\nimport type { Config } from \"../../types/config\";\n\nconst semaphore = new Semaphore(2);\nexport const initializeNetwork = (limitInflightRequests: number) =>\n semaphore.setLimit(limitInflightRequests);\n\nexport const uploadChunk = async (chunk: ChunkUpload): Promise<string> => {\n return semaphore.execute(async () => {\n logger.info(\"UploadChunkStart\", {\n chunkIndex: chunk.chunkIndex,\n surveyId: chunk.surveyId,\n });\n const response = await sprigFetch(chunk.uploadUrl, {\n body: chunk.data,\n method: \"PUT\",\n });\n\n logger.http(\"UploadChunkEnd\", {\n url: chunk.uploadUrl,\n method: \"PUT\",\n status_code: response.status,\n reason: response.statusText ?? \"OK\",\n chunkIndex: chunk.chunkIndex,\n surveyId: chunk.surveyId,\n });\n const etag = response.headers?.get(\"ETag\");\n if (!etag)\n throw new Error(\n `Upload response did not include etag for upload ${chunk.uploadId}, part ${chunk.chunkIndex}`,\n );\n return etag;\n });\n};\n\nexport const markUploadComplete = async (\n {\n apiUrl,\n surveyId,\n uploadId,\n etags,\n headers,\n responseGroupUuid,\n replayDuration,\n eventDigest,\n }: {\n apiUrl: string;\n surveyId: number;\n responseGroupUuid: string;\n uploadId?: string;\n etags?: ChunkUploadInfo[];\n headers?: Config[\"headers\"];\n replayDuration?: number;\n eventDigest?: EventDigest[];\n },\n isMobile = false,\n) => {\n // uploadId and etags required for web session replay\n if (!isMobile && !uploadId && !etags) {\n logger.error(\"UploadErr\", { isMobile, uploadId, etags });\n return;\n }\n\n logger.info(\"MarkUploadComplete\", { surveyId });\n const res = await sprigFetch(`${apiUrl}/sdk/1/completeSessionReplay`, {\n method: \"POST\",\n body: JSON.stringify({\n etags,\n uploadId,\n responseGroupUuid,\n surveyId,\n replayDuration,\n eventDigest,\n userAgent: window?.navigator?.userAgent,\n }),\n headers,\n shouldRetryRequest: true,\n });\n logger.info(\"MarkUploadDone\", { surveyId });\n return res;\n};\n","export class Semaphore {\n private awaitingResolvers: (() => void)[] = [];\n private activeCount = 0;\n constructor(private capacity: number) {}\n\n async acquire() {\n if (this.activeCount < this.capacity) {\n this.activeCount++;\n return;\n }\n return new Promise<void>((resolver) => {\n this.awaitingResolvers.push(resolver);\n });\n }\n\n release() {\n const resolver = this.awaitingResolvers.shift();\n if (resolver && this.activeCount <= this.capacity) {\n resolver();\n } else {\n this.activeCount--;\n }\n }\n\n async execute<T>(fn: () => Promise<T>) {\n try {\n await this.acquire();\n return await fn();\n } finally {\n this.release();\n }\n }\n\n setLimit(limit: number) {\n this.capacity = limit;\n }\n}\n","interface Component {\n name?: string;\n position: number | null;\n}\n\n// get the position of the given node among its previous sibling nodes that share the same tag name\nconst getPosition = (node: Element | Attr) => {\n if (node instanceof Attr) {\n return null;\n }\n\n let position = 1;\n for (\n let curNode = node.previousSibling;\n curNode;\n curNode = curNode.previousSibling\n ) {\n if (curNode.nodeName === node.nodeName) {\n ++position;\n }\n }\n return position;\n};\n\nexport const getXPath = (node: Element | Attr | null): string => {\n if (node === null) {\n return \"\";\n }\n\n const comps: Component[] = [];\n\n if (node instanceof Document) {\n return \"/\";\n }\n\n for (\n let curNode: Element | Attr | null = node;\n curNode && !(curNode instanceof Document);\n curNode =\n curNode instanceof Attr ? curNode.ownerElement : curNode.parentElement\n ) {\n if (curNode === null) {\n break;\n }\n\n const comp: Component = (comps[comps.length] = {\n name: undefined,\n position: null,\n });\n\n switch (curNode.nodeType) {\n case Node.TEXT_NODE:\n comp.name = \"text()\";\n break;\n case Node.ATTRIBUTE_NODE:\n comp.name = \"@\" + curNode.nodeName;\n break;\n case Node.PROCESSING_INSTRUCTION_NODE:\n comp.name = \"processing-instruction()\";\n break;\n case Node.COMMENT_NODE:\n comp.name = \"comment()\";\n break;\n case Node.ELEMENT_NODE:\n comp.name = curNode.nodeName;\n break;\n }\n\n comp.position = getPosition(curNode);\n }\n\n return (\n \"/\" +\n comps\n .reverse()\n .map((comp) =>\n comp.position !== null\n ? `/${comp.name}[${comp.position}]`\n : `/${comp.name}`,\n )\n .join(\"\")\n );\n};\n","export const cleanupText = (text: string) => {\n if (!text) return text;\n const cleanedText = text\n .trim()\n .substring(0, 500) // set initial limit\n .replace(/\\s\\s+/g, \" \") // remove extra spaces\n .replace(/\\r?\\n|\\r/g, \" \"); // remove new lines\n return cleanedText.substring(0, 250); // set final limit\n};\n","import { getXPath } from \"./getXPath\";\nimport { cleanupText } from \"./utils\";\n\nimport type { CustomEvent } from \"./replayStorageHelpers\";\n\nconst userListenerOptions = { capture: true, passive: true };\n\nconst interestingTagnames = [\"a\", \"button\", \"input\", \"option\", \"li\", \"link\"];\nconst interestingKeys = [\"Escape\", \"Enter\", \"Backspace\", \"F5\", \"Tab\"];\n\nlet observerInitialized = false;\n\n// CUSTOM EVENTS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\ntype ClickType = \"left_click\" | \"right_click\";\n\ntype CustomEventRecorder = (name: CustomEvent, info: object) => void;\ntype ScrollHandler = (args: {\n xPath: string;\n x: number;\n y: number;\n elementAttributes: {\n targetScrollWidth: number;\n targetClientWidth: number;\n targetScrollHeight: number;\n targetClientHeight: number;\n };\n}) => void;\n\nlet recordCustomEvent: CustomEventRecorder | null = null;\nlet handleScroll: ScrollHandler | null = null;\n\nconst RecordBackForward = (info: {\n curUrl: string;\n fromUrl: string;\n currentPageTitle: string;\n}) => {\n if (info.currentPageTitle) {\n info.currentPageTitle = cleanupText(info.currentPageTitle);\n }\n recordCustomEvent?.(\"Sprig_BackForward\", info);\n};\n\nexport const RecordClick = (info: {\n x: number;\n y: number;\n type: ClickType;\n elementAttributes: Record<string, string>;\n windowHeight: number;\n windowWidth: number;\n rect?: {\n left: number;\n top: number;\n right: number;\n bottom: number;\n x: number;\n y: number;\n width: number;\n height: number;\n };\n xPath?: string;\n}) => {\n if (info?.elementAttributes?.text) {\n info.elementAttributes.text = cleanupText(info.elementAttributes.text);\n }\n recordCustomEvent?.(\"Sprig_Click\", info);\n};\n\nexport const RecordRefresh = (info: {\n url: string;\n currentPageTitle: string;\n}) => {\n recordCustomEvent?.(\"Sprig_Refresh\", info);\n};\n\nexport const RecordKeystroke = (info: { key: string }) => {\n recordCustomEvent?.(\"Sprig_Keystroke\", info);\n};\n\nconst getElementType = (e: HTMLElement) => {\n if (!e.tagName) return \"No tagName\";\n const type = e.getAttribute(\"type\");\n return type ? `${type} ${e.tagName.toLowerCase()}` : e.tagName.toLowerCase();\n};\n\nconst getElementAttributes = (e: HTMLElement) => {\n if (e.tagName?.toLowerCase() === \"html\") {\n return { element: \"html\" };\n }\n const elementAttrs: Record<string, string> = {};\n elementAttrs.element = getElementType(e);\n return elementAttrs;\n};\n\nconst getTargetElementAttributes = (e: HTMLElement) => {\n if (!e) return {};\n const attrs = getElementAttributes(e);\n const mergedAttributes: Record<string, string> = { ...attrs };\n const parent = e.parentElement;\n if (parent && interestingTagnames.includes(parent.tagName?.toLowerCase())) {\n const parentAttrs = getElementAttributes(parent);\n Object.assign(mergedAttributes, parentAttrs);\n }\n\n return mergedAttributes;\n};\n\nconst handleClickEvent = (type: ClickType, ev: MouseEvent) => {\n let target = ev.target;\n if (ev.target === window.document?.body && window.Sprig.pointerDownTarget) {\n target = window.Sprig.pointerDownTarget;\n }\n RecordClick({\n x: ev.x,\n y: ev.y,\n type,\n elementAttributes: getTargetElementAttributes(target as HTMLElement),\n windowHeight: window.innerHeight,\n windowWidth: window.innerWidth,\n ...(target instanceof HTMLElement\n ? { rect: target?.getBoundingClientRect(), xPath: getXPath(target) }\n : {}),\n });\n};\n\nconst makeClickEventHandler = (type: ClickType) => {\n return (ev: MouseEvent) => handleClickEvent(type, ev);\n};\n\nconst handleKeydown = (ev: KeyboardEvent) => {\n if (interestingKeys.includes(ev.key)) {\n RecordKeystroke({ key: ev.key });\n }\n};\n\nconst recordReloadIfUsed = () => {\n const pageAccessedByReload = window.performance\n .getEntriesByType(\"navigation\")\n .map((nav) => (nav as PerformanceNavigationTiming).type)\n .includes(\"reload\");\n if (pageAccessedByReload) {\n RecordRefresh({\n url: window.location.href,\n currentPageTitle: document.title,\n });\n }\n};\n\nconst recordBackIfUsed = () => {\n const pageAccessedByBack = window.performance\n .getEntriesByType(\"navigation\")\n .map((nav) => (nav as PerformanceNavigationTiming).type)\n .includes(\"back_forward\");\n if (pageAccessedByBack) {\n RecordBackForward({\n curUrl: window.location.href,\n fromUrl: document.referrer,\n currentPageTitle: document.title,\n });\n }\n};\nconst debounce = (func: (ev: Event) => void, delay: number) => {\n let timer: number;\n return (ev: Event) => {\n clearTimeout(timer);\n timer = window.setTimeout(() => func(ev), delay);\n };\n};\n\nconst scrollListener = (ev: Event) => {\n if (!(ev.target instanceof HTMLElement || ev.target instanceof Document))\n return;\n\n let scrollTarget = ev.target;\n if (!(\"scrollTop\" in scrollTarget)) {\n scrollTarget = scrollTarget.documentElement;\n }\n handleScroll?.({\n xPath: getXPath(scrollTarget),\n x: scrollTarget.scrollLeft,\n y: scrollTarget.scrollTop,\n elementAttributes: {\n targetScrollWidth: scrollTarget.scrollWidth,\n targetClientWidth: scrollTarget.clientWidth,\n targetScrollHeight: scrollTarget.scrollHeight,\n targetClientHeight: scrollTarget.clientHeight,\n },\n });\n};\nconst debouncedScrollListener = debounce(scrollListener, 750);\nconst leftClickListener = makeClickEventHandler(\"left_click\");\nconst rightClickListener = (ev: MouseEvent) => {\n if (ev.button === 2) {\n handleClickEvent(\"right_click\", ev);\n }\n};\nconst pointerDownListener = (ev: MouseEvent) => {\n if (window.Sprig) {\n window.Sprig.pointerDownTarget = ev.target;\n }\n};\n\nexport const initUserEventObserver = (\n recordEvent: CustomEventRecorder,\n scrollHandler: ScrollHandler,\n) => {\n if (observerInitialized) return;\n recordCustomEvent = recordEvent;\n handleScroll = scrollHandler;\n window.addEventListener(\"click\", leftClickListener, userListenerOptions);\n window.addEventListener(\n \"pointerdown\",\n pointerDownListener,\n userListenerOptions,\n );\n window.addEventListener(\"mousedown\", rightClickListener, userListenerOptions);\n window.addEventListener(\"keydown\", handleKeydown, userListenerOptions);\n window.addEventListener(\n \"scroll\",\n debouncedScrollListener,\n userListenerOptions,\n );\n observerInitialized = true;\n recordReloadIfUsed();\n recordBackIfUsed();\n};\n\nexport const removeUserEventObserver = () => {\n if (!observerInitialized) return;\n window.removeEventListener(\"click\", leftClickListener, userListenerOptions);\n window.removeEventListener(\n \"pointerdown\",\n pointerDownListener,\n userListenerOptions,\n );\n window.removeEventListener(\n \"mousedown\",\n rightClickListener,\n userListenerOptions,\n );\n window.removeEventListener(\"keydown\", handleKeydown, userListenerOptions);\n window.removeEventListener(\n \"scroll\",\n debouncedScrollListener,\n userListenerOptions,\n );\n observerInitialized = false;\n};\n","import { v4 as generateUuid } from \"uuid\";\n\nimport {\n requestChildIframeFullSnapshot,\n requestChildIframeTeardown,\n} from \"./iframeManager\";\nimport { markUploadComplete } from \"./network\";\nimport { replayStorage } from \"./ReplayStorage\";\nimport { EventDigest } from \"./types\";\nimport { removeUserEventObserver } from \"./userEventObserver\";\nimport { cleanupText } from \"./utils\";\nimport { checkUrlStillMatching } from \"../../controller/urlMatcher\";\nimport { breadcrumbsLogger as logger } from \"../../helpers/BreadcrumbsLogger\";\nimport { sessionStorageHelper } from \"../../helpers/general\";\nimport { Config } from \"../../types/config\";\n\nconst HEATMAP_INACTIVE_LIMIT_MS = 30000;\n\nexport const replayState: {\n cleanupInterval?: number;\n inactivityInterval?: number;\n isRecording: boolean;\n pendingCheckInterval?: number;\n scrollEventUuids: Record<string, string>;\n stopRecording?: () => void;\n} = {\n isRecording: false,\n scrollEventUuids: {},\n stopRecording: () => {},\n};\n\nexport const idbExists = () =>\n window.indexedDB && window.IDBKeyRange && window.CompressionStream;\n\n// GENERAL HELPERS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nconst MIN_GB = 0.5;\nexport const checkIDBNotSupported = async () => {\n if (!idbExists()) {\n return true;\n }\n\n if (window.navigator.storage?.estimate) {\n try {\n const { quota = 0, usage = 0 } =\n await window.navigator.storage.estimate();\n const availableGb = (quota - usage) / 1024 ** 3;\n logger.info(\"Storage\", { availableGb });\n return availableGb < MIN_GB;\n } catch {\n return true;\n }\n }\n return false;\n};\n\nexport const getOrGenerateSessionId = () => {\n const savedSessionId = sessionStorageHelper.getItem(\"sprig.sessionId\");\n\n if (savedSessionId) {\n logger.info(\"SessionIDFound\", { savedSessionId });\n sessionStorageHelper.removeItem(\"sprig.sessionId\");\n return savedSessionId;\n }\n const uuid = generateUuid();\n logger.info(\"GeneratedSessionID\", { uuid });\n return uuid;\n};\n\nexport const sessionId = getOrGenerateSessionId();\n\n// Mark or retrieve enabled state of recording\nexport const markReplayRecordingDisabled = () => {\n sessionStorageHelper.setItem(\"sprig.disableReplayRecording\", \"disabled\");\n};\nexport const isReplayRecordingDisabled = () => {\n return !!sessionStorageHelper.getItem(\"sprig.disableReplayRecording\");\n};\n\nexport const markReplayPaused = () => {\n sessionStorageHelper.setItem(\"sprig.isReplayPaused\", \"true\");\n};\n\nexport const markReplayResumed = () => {\n sessionStorageHelper.removeItem(\"sprig.isReplayPaused\");\n};\n\nexport const isReplayPaused = () => {\n return !!sessionStorageHelper.getItem(\"sprig.isReplayPaused\");\n};\n\nwindow.addEventListener(\"beforeunload\", () => {\n logger.info(\"BeforeUnload\", { sessionId });\n // This is necessary, see commit message\n sessionStorageHelper.setItem(\"sprig.sessionId\", sessionId);\n});\n\nexport const checkPendingHeatmapsUrl = () => {\n if (isReplayRecordingDisabled())\n return logger.debug(\"ReplayDisabled-PendingHeatmaps\");\n return tryReplayAction(async () => {\n const pendingUuids = (\n await replayStorage.getPendingCaptures({\n isHeatmap: true,\n })\n ).map((pendingCapture) => ({\n eventId: pendingCapture.captureParams.eventId,\n uuid: pendingCapture.uuid,\n }));\n\n const uuidsToMarkComplete = pendingUuids\n .filter(({ eventId }) => !checkUrlStillMatching(eventId))\n .map(({ uuid }) => uuid);\n\n logger.info(\"PendingHeatmapsToComplete\", {\n count: uuidsToMarkComplete.length,\n });\n\n if (uuidsToMarkComplete.length) {\n await replayStorage.markPendingHeatmapsReady(uuidsToMarkComplete);\n logger.info(\"MarkedPendingHeatmapsReady\");\n }\n\n return uuidsToMarkComplete.length;\n }, \"Error marking pending heatmaps ready\");\n};\n\n// Heatmap recording should cut off after 30 seconds inactivity\nexport const trackHeatmapInactivity = (timestamp: number) => {\n if (Date.now() - timestamp >= HEATMAP_INACTIVE_LIMIT_MS) {\n tryReplayAction(\n () => replayStorage.markPendingHeatmapsReady(),\n \"Error in heatmap inactivity\",\n );\n }\n};\n\nexport type CustomEvent =\n | \"Sprig_PageView\"\n | \"Sprig_TrackEvent\"\n | \"Sprig_ShowSurvey\"\n | \"Sprig_SubmitSurvey\"\n | \"Sprig_Click\"\n | \"Sprig_Keystroke\"\n | \"Sprig_BackForward\"\n | \"Sprig_Refresh\"\n | \"Sprig_Scroll\"\n | \"Sprig_Meta\"\n | \"Sprig_ReplayPaused\"\n | \"Sprig_ReplayResumed\";\n\nexport const recordCustomEvent = (name: CustomEvent, info: object) => {\n if (\n isReplayRecordingDisabled() ||\n !replayState.isRecording ||\n isReplayPaused()\n )\n return;\n try {\n window.rrwebRecord?.addCustomEvent?.(name, info);\n } catch (err) {\n disableRecording(\"Error recording custom event\", err);\n }\n};\n\nexport const RecordPageView = (info: {\n url: string;\n pageTitle?: string;\n description?: string;\n referrer?: string;\n}) => {\n if (info.description) {\n info.description = cleanupText(info.description);\n }\n recordCustomEvent(\"Sprig_PageView\", info);\n};\n\nexport const RecordEvent = (info: { name: string; url?: string }) => {\n recordCustomEvent(\"Sprig_TrackEvent\", info);\n};\n\nexport const RecordSurveyShown = (info: { id: number; userAgent: string }) => {\n recordCustomEvent(\"Sprig_ShowSurvey\", info);\n};\n\nexport const RecordSurveyComplete = (info: {\n id: number;\n userAgent: string;\n}) => {\n recordCustomEvent(\"Sprig_SubmitSurvey\", info);\n};\n\n// Update existing scroll event if exists, otherwise create new\nexport const recordOrUpdateScrollEvent = async (info: {\n xPath: string;\n x: number;\n y: number;\n elementAttributes: {\n targetScrollHeight: number;\n targetScrollWidth: number;\n targetClientHeight: number;\n targetClientWidth: number;\n };\n}) => {\n const { x: newX, xPath, y: newY } = info;\n const scrollEventUuid = replayState.scrollEventUuids[xPath];\n\n if (scrollEventUuid) {\n return tryReplayAction(async () => {\n const db = await replayStorage.openDB();\n const scrollRecord = await db.get(\"events\", scrollEventUuid);\n\n if (scrollRecord?.event) {\n const eventJson = JSON.parse(scrollRecord.event);\n const newXGreater = newX > eventJson.data?.payload?.x;\n const newYGreater = newY > eventJson.data?.payload?.y;\n\n if (!(newXGreater || newYGreater)) return null;\n if (newXGreater) {\n eventJson.data.payload.x = newX;\n }\n if (newYGreater) {\n eventJson.data.payload.y = newY;\n }\n eventJson.data.payload.elementAttributes = info.elementAttributes;\n scrollRecord.event = JSON.stringify(eventJson);\n\n await db.put(\"events\", scrollRecord);\n } else {\n recordCustomEvent(\"Sprig_Scroll\", info);\n }\n }, \"Error updating scroll event\");\n } else {\n recordCustomEvent(\"Sprig_Scroll\", info);\n }\n};\n\nexport const recordReplayPaused = () => {\n recordCustomEvent(\"Sprig_ReplayPaused\", {\n timestamp: Date.now(),\n });\n markReplayPaused();\n};\n\nexport const recordReplayResumed = () => {\n markReplayResumed();\n recordCustomEvent(\"Sprig_ReplayResumed\", {\n timestamp: Date.now(),\n });\n};\n\n// TEARDOWN ACTIONS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nexport const isReplayRecording = () => replayState.isRecording;\n\nexport const teardownReplay = () => {\n if (replayState.stopRecording) {\n replayState.stopRecording();\n replayState.stopRecording = undefined;\n }\n replayState.isRecording = false;\n (\n [\"cleanupInterval\", \"inactivityInterval\", \"pendingCheckInterval\"] as const\n ).forEach((interval) => {\n if (replayState[interval]) {\n clearInterval(replayState[interval]);\n replayState[interval] = undefined;\n }\n });\n removeUserEventObserver();\n requestChildIframeTeardown();\n};\n\nconst errorsToNotReport = [\n \"did not allow mutations\",\n \"called in an invalid security context\",\n];\n\nconst shouldReportErrorAndClearDb = (errMessage: string) => {\n if (!errMessage) return true;\n for (const currMessage of errorsToNotReport) {\n if (errMessage.toLowerCase().includes(currMessage)) return false;\n }\n return true;\n};\n\nconst clearAndMarkDisabled = (\n message: string,\n error: unknown,\n {\n reportError = true,\n extraInfo = {},\n }: { reportError: boolean; extraInfo?: object },\n) => {\n if (isReplayRecordingDisabled() || !(error instanceof Error)) {\n return;\n }\n markReplayRecordingDisabled();\n if (error.name === \"VersionError\") {\n logger.error(\"VersionErr\", { message });\n replayStorage.deleteDB();\n return;\n }\n\n if (shouldReportErrorAndClearDb(error?.message)) {\n if (reportError) {\n window.UserLeap.reportError(message, error, extraInfo);\n }\n replayStorage.clearAll();\n }\n};\n\nexport const disableRecording = (\n message: string,\n err: unknown,\n { reportError } = { reportError: true },\n) => {\n teardownReplay();\n logger.error(\"ReplayErr\", {\n code: (err as DOMException).code,\n name: (err as DOMException).name,\n });\n clearAndMarkDisabled(message, err, { reportError });\n};\n\nexport const tryReplayAction = async (\n action: () => void | Promise<unknown>,\n errMessage: string,\n) => {\n try {\n return await action();\n } catch (err) {\n disableRecording(errMessage, err);\n }\n};\n\n/**\n * Calls rrweb takeFullSnapshot to provide a new checkpoint to start replays\n * from. This ensures replay will not capture excess data from lookback for\n * after replays and heatmaps.\n * @returns nothing - adds full snapshot to event queue\n */\nexport const recordFullSnapshot = () => {\n if (!replayState.isRecording) return;\n tryReplayAction(\n () => window.rrwebRecord?.takeFullSnapshot?.(true),\n \"Error recording full snapshot\",\n );\n requestChildIframeFullSnapshot();\n};\n\n// WINDOW SPRIG ACTIONS - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nexport const _completeSessionReplay = async ({\n surveyId,\n responseGroupUuid,\n eventDigest,\n headers,\n}: {\n surveyId: number;\n responseGroupUuid: string;\n eventDigest?: EventDigest[];\n headers: Config[\"headers\"];\n}) => {\n if (!surveyId || !responseGroupUuid) return false;\n\n const apiUrl = window.UserLeap._API_URL;\n\n const result = await markUploadComplete(\n {\n surveyId,\n responseGroupUuid,\n eventDigest,\n apiUrl,\n headers,\n },\n true,\n );\n if (result?.error) return false;\n return true;\n};\n","import { openDB, DBSchema, deleteDB, IDBPTransaction } from \"idb\";\n\nimport { disableRecording, idbExists, sessionId } from \"./replayStorageHelpers\";\nimport {\n RecordedEvent,\n ChunkUpload,\n PendingCapture,\n ChunkStatus,\n} from \"./types\";\nimport { sessionStorageHelper } from \"../../helpers/general\";\n\nconst DEFAULT_EXPIRED_AT_MINUTES = 30;\nconst VERSION = 1;\nlet outstandingTransactions = 0;\n\ninterface ReplayDBSchema extends DBSchema {\n events: {\n key: string; // uuid\n value: RecordedEvent;\n indexes: {\n timestamp: number;\n sessionId: string;\n \"[sessionId+timestamp]\": [string, number];\n };\n };\n chunkUploads: {\n key: string; // uuid\n value: ChunkUpload;\n indexes: {\n timestamp: number;\n sessionId: string;\n \"[sessionId+status]\": [string, string];\n \"[uploadId+status]\": [string, string];\n \"[sessionId+status+uploadId]\": [string, string, string];\n };\n };\n pendingCaptures: {\n key: string; // uuid\n value: PendingCapture;\n indexes: {\n sessionId: string;\n timestamp: number;\n \"[sessionId+targetTimestamp]\": [string, number];\n };\n };\n}\n\nexport type StoreName = \"events\" | \"chunkUploads\" | \"pendingCaptures\";\n\nconst deleteOldDbs = async () => {\n if (!idbExists()) return;\n void Promise.allSettled([\n deleteDB(\"replayStorage\"),\n deleteDB(\"sprig.replay\"),\n ]);\n};\n\n// Execute the cleanup\nvoid deleteOldDbs();\n\nclass ReplayIDB {\n openDB() {\n return openDB<ReplayDBSchema>(\"sprigReplay\", VERSION, {\n upgrade: (db, oldVersion, newVersion) => {\n // fresh version\n if (newVersion === 0) {\n // reset pending count since were starting with a clean slate\n sessionStorageHelper.setItem(\"sprig.pendingCount\", \"0\");\n }\n\n if (!db.objectStoreNames.contains(\"events\")) {\n const events = db.createObjectStore(\"events\", {\n keyPath: \"uuid\",\n });\n events.createIndex(\"sessionId\", \"sessionId\");\n events.createIndex(\"timestamp\", \"timestamp\");\n events.createIndex(\"[sessionId+timestamp]\", [\n \"sessionId\",\n \"timestamp\",\n ]);\n }\n\n if (!db.objectStoreNames.contains(\"chunkUploads\")) {\n const chunkUploads = db.createObjectStore(\"chunkUploads\", {\n keyPath: \"uuid\",\n });\n chunkUploads.createIndex(\"sessionId\", \"sessionId\");\n chunkUploads.createIndex(\"timestamp\", \"timestamp\");\n chunkUploads.createIndex(\"[sessionId+status]\", [\n \"sessionId\",\n \"status\",\n ]);\n chunkUploads.createIndex(\"[uploadId+status]\", [\"uploadId\", \"status\"]);\n chunkUploads.createIndex(\"[sessionId+status+uploadId]\", [\n \"sessionId\",\n \"status\",\n \"uploadId\",\n ]);\n }\n\n if (!db.objectStoreNames.contains(\"pendingCaptures\")) {\n const pendingCaptures = db.createObjectStore(\"pendingCaptures\", {\n keyPath: \"uuid\",\n });\n pendingCaptures.createIndex(\"sessionId\", \"sessionId\");\n pendingCaptures.createIndex(\"timestamp\", \"timestamp\");\n pendingCaptures.createIndex(\"[sessionId+targetTimestamp]\", [\n \"sessionId\",\n \"targetTimestamp\",\n ]);\n }\n },\n });\n }\n\n wrapTransactionWithCounter = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n transaction: IDBPTransaction<any, any, any>,\n ) => {\n const configuredLimit = window.Sprig?._config?.outstandingTransactionLimit;\n const transLimit = configuredLimit === undefined ? 100 : configuredLimit;\n if (transLimit && outstandingTransactions > transLimit) {\n const message = \"Too many outstanding transactions\";\n disableRecording(message, new Error(message), { reportError: false });\n }\n outstandingTransactions++;\n transaction.done.finally(() => {\n outstandingTransactions--;\n });\n };\n\n getTransaction = async <S extends StoreName>(storeName: S) => {\n const db = await this.openDB();\n const trans = db.transaction(storeName, \"readwrite\");\n this.wrapTransactionWithCounter(trans);\n return trans;\n };\n\n async deleteDB() {\n try {\n await deleteDB(\"sprigReplay\");\n } catch {\n // ignore\n }\n }\n\n async bulkAdd<S extends StoreName>(\n storeName: S,\n data: ReplayDBSchema[S][\"value\"][],\n ) {\n const tx = await this.getTransaction(storeName);\n return Promise.all([...data.map((d) => tx.store.add(d)), tx.done]);\n }\n\n async clearAll() {\n const tx = (await this.openDB()).transaction(\n [\"events\", \"chunkUploads\", \"pendingCaptures\"],\n \"readwrite\",\n );\n this.wrapTransactionWithCounter(tx);\n return Promise.all([\n tx.objectStore(\"events\").clear(),\n tx.objectStore(\"chunkUploads\").clear(),\n tx.objectStore(\"pendingCaptures\").clear(),\n ]);\n }\n\n async deleteBySessionId<S extends StoreName>(storeName: S, sid: string) {\n const range = IDBKeyRange.only(sid);\n const tx = await this.getTransaction(storeName);\n const index = tx.store.index(\"sessionId\");\n\n for await (const cursor of index.iterate(range)) {\n await cursor.delete();\n }\n await tx.done;\n }\n\n async updatePartial<S extends StoreName>(\n storeName: S,\n keyValue: ReplayDBSchema[S][\"key\"],\n data: Partial<ReplayDBSchema[S][\"value\"]>,\n ) {\n const tx = await this.getTransaction(storeName);\n\n const record = await tx.store.get(keyValue);\n if (record) await tx.store.put({ ...record, ...data });\n\n await tx.done;\n }\n\n // events\n async deleteRowsBefore<S extends StoreName>(\n storeName: S,\n time: number,\n shouldDelete: (item: ReplayDBSchema[S][\"value\"]) => boolean = () => true,\n ) {\n const range = IDBKeyRange.upperBound(time, true); // below but not including time\n const tx = await this.getTransaction(storeName);\n const index = tx.store.index(\"timestamp\");\n\n for await (const cursor of index.iterate(range)) {\n if (shouldDelete(cursor.value)) await cursor.delete();\n }\n await tx.done;\n }\n\n async getEventsBetween(start: number, end: number = Date.now()) {\n if (start >= end) return Promise.resolve([]);\n\n const range = IDBKeyRange.bound(\n [sessionId, start],\n [sessionId, end],\n false, // including start\n true, // not including end\n );\n\n return (await this.openDB()).getAllFromIndex(\n \"events\",\n \"[sessionId+timestamp]\",\n range,\n );\n }\n\n async updateEventsExpiredAt(\n start: number,\n end: number,\n expiredAtMinutes = DEFAULT_EXPIRED_AT_MINUTES,\n ) {\n const currentTime = new Date();\n const expiredAtValue = currentTime.setMinutes(\n currentTime.getMinutes() +\n (expiredAtMinutes ?? DEFAULT_EXPIRED_AT_MINUTES),\n );\n\n const tx = await this.getTransaction(\"events\");\n const index = tx.store.index(\"[sessionId+timestamp]\");\n\n const range = IDBKeyRange.bound(\n [sessionId, start],\n [sessionId, end],\n false, // including start\n true, // not including end\n );\n\n for await (const cursor of index.iterate(range)) {\n await cursor.update({ ...cursor.value, expiredAt: expiredAtValue });\n }\n await tx.done;\n }\n\n // chunk uploads\n async deleteChunkUploads(status: ChunkStatus, uploadId: string) {\n const range = IDBKeyRange.only([uploadId, status]);\n const tx = await this.getTransaction(\"chunkUploads\");\n const index = tx.store.index(\"[uploadId+status]\");\n\n let cursor = await index.openCursor(range);\n while (cursor) {\n cursor.delete();\n cursor = await cursor.continue();\n }\n\n await tx.done;\n }\n\n async getChunkUploadsByStatus({\n sessionId: sid,\n status,\n uploadId,\n }:\n | {\n sessionId?: never;\n status: ChunkStatus;\n uploadId: string;\n }\n | {\n sessionId: string;\n status: ChunkStatus;\n uploadId?: never;\n }) {\n const db = await this.openDB();\n const tx = db.transaction(\"chunkUploads\", \"readonly\");\n this.wrapTransactionWithCounter(tx);\n\n const index = uploadId\n ? tx.store.index(\"[uploadId+status]\")\n : tx.store.index(\"[sessionId+status]\");\n const range = uploadId\n ? IDBKeyRange.only([uploadId, status])\n : IDBKeyRange.only([sid, status]);\n\n return index.getAll(range);\n }\n\n // pending captures\n async getPendingCaptures(\n options: {\n beforePresent?: boolean;\n isHeatmap?: boolean;\n isBeforeType?: boolean;\n } = {},\n ) {\n const db = await this.openDB();\n const sessionIDs = await db.getAllFromIndex(\n \"pendingCaptures\",\n \"sessionId\",\n sessionId,\n );\n\n return sessionIDs\n .filter((p) => !options.beforePresent || p.targetTimestamp < Date.now())\n .filter(\n (p) =>\n !options.isBeforeType ||\n p.captureParams.replayParams.replayDurationType === \"before\",\n )\n .filter(\n (p) => !options.isHeatmap || (p.captureParams.isHeatmap ?? false),\n );\n }\n\n async markPendingCaptureToCanUpload(responseGroupId: string) {\n const tx = await this.getTransaction(\"pendingCaptures\");\n const index = tx.store.index(\"sessionId\");\n\n for await (const cursor of index.iterate(sessionId)) {\n const value = cursor.value;\n if (value.captureParams.responseGroupId === responseGroupId) {\n await cursor.update({ ...value, canUpload: true });\n }\n }\n\n await tx.done;\n }\n\n /**\n * Update pending heatmaps to upload the next time pendingCaptures is checked\n */\n async markPendingHeatmapsReady(uuids?: string[]) {\n const numCapturesPendingInt = parseInt(\n sessionStorageHelper.getItem(\"sprig.pendingCount\") ?? \"0\",\n );\n if (numCapturesPendingInt === 0) return null;\n const now = Date.now();\n\n const tx = await this.getTransaction(\"pendingCaptures\");\n const index = tx.store.index(\"sessionId\");\n\n for await (const cursor of index.iterate(sessionId)) {\n const value = cursor.value;\n if (\n value.captureParams.isHeatmap &&\n (!uuids || uuids.includes(value.uuid))\n ) {\n await cursor.update({\n ...value,\n targetTimestamp: now,\n captureParams: {\n ...value.captureParams,\n triggerTimestamp: now,\n replayParams: {\n ...value.captureParams.replayParams,\n replayDurationSeconds: Math.floor((now - value.timestamp) / 1000),\n },\n },\n });\n }\n }\n\n await tx.done;\n }\n}\n\nexport const replayStorage = new ReplayIDB();\n","import { EventType, IncrementalSource, type eventWithTime } from \"@rrweb/types\";\n\nimport { replayStorage } from \"./ReplayStorage\";\nimport { CustomEvent } from \"./replayStorageHelpers\";\nimport { breadcrumbsLogger as logger } from \"../../helpers/BreadcrumbsLogger\";\nimport { sprigFetch, Result, getHttpHeaders } from \"../../helpers/network\";\nimport { AppConfig } from \"../../types/config\";\nimport { sessionStorageHelper } from \"../../helpers/general\";\n\nconst UPLOAD_INTERVAL_MAX_MS = 35 * 1000;\nconst eventBuffer: eventWithTime[] = [];\nlet uploadUrls: string[] = [];\nlet disabled = false;\nlet alwaysOnMetadata: AlwaysOnMetadata;\nlet apiUrl: string;\nlet currentIndex = 0;\nlet isInit = false;\nlet inUnload = false;\nlet pendingUrlPromiseResolvers: ((url: string | undefined) => void)[] = [];\nlet isUrlRequestInflight = false;\nlet expirationTimestamp: number;\nlet maxDurationSeconds: number;\nlet triggerSnapshotAction: () => void;\nlet interval: number;\ntype AlwaysOnMetadata = Omit<AlwaysOnInitConfig, \"maxDurationSeconds\">;\n\ninterface MetaCustomEventPayload extends AlwaysOnMetadata {\n visitorId: string;\n timestamp: number;\n index: number;\n customMetadata?: AppConfig[\"customMetadata\"];\n}\n\nexport interface AlwaysOnInitConfig {\n responseGroupUuid: string;\n surveyId: number;\n userAgent: string;\n sdkVersion: string;\n maxDurationSeconds: number;\n}\n\ninterface StoredAlwaysOnInfo {\n disabled: boolean;\n metadata: AlwaysOnMetadata;\n uploadUrls: string[];\n currentIndex: number;\n expirationTimestamp: number;\n pendingEventTimestamp?: number;\n}\n\nexport const isAlwaysOnActive = () => {\n return isInit && !disabled && Date.now() <= expirationTimestamp;\n};\n\nexport const initAlwaysOn = ({\n apiUrl: sprigApiUrl,\n config,\n triggerSnapshot,\n forceInit = false,\n}: {\n apiUrl: string;\n config: AlwaysOnInitConfig;\n triggerSnapshot: () => void;\n forceInit?: boolean;\n}) => {\n if (isInit && !forceInit) return;\n if (!sessionStorageHelper.isStorageAvailable) {\n disabled = true;\n return;\n }\n uploadUrls = [];\n pendingUrlPromiseResolvers.splice(0);\n eventBuffer.splice(0);\n currentIndex = 0;\n triggerSnapshotAction = triggerSnapshot;\n apiUrl = sprigApiUrl;\n alwaysOnMetadata = {\n responseGroupUuid: config.responseGroupUuid,\n surveyId: config.surveyId,\n userAgent: config.userAgent,\n sdkVersion: config.sdkVersion,\n };\n maxDurationSeconds = config.maxDurationSeconds;\n\n // Read any stored session state, then fetch upload URLs if we have none\n readStoredAlwaysOnInfo();\n if (!isInit) {\n interval = window.setInterval(periodicActionCheck, 500);\n }\n isInit = true;\n};\n\nconst userInteractionSources: IncrementalSource[] = [\n IncrementalSource.Drag,\n IncrementalSource.Input,\n IncrementalSource.MediaInteraction,\n IncrementalSource.MouseInteraction,\n IncrementalSource.MouseMove,\n IncrementalSource.Scroll,\n IncrementalSource.Selection,\n IncrementalSource.TouchMove,\n];\n\nconst isEventUserInteraction = (e: eventWithTime) => {\n return (\n e.type === EventType.Custom ||\n (e.type === EventType.IncrementalSnapshot &&\n userInteractionSources.includes(e.data.source))\n );\n};\n\nconst shouldUploadEventBuffer = (events: eventWithTime[]) => {\n return events.some(isEventUserInteraction);\n};\n\n/**\n * This does two things\n * 1. Periodically checks if we need to request more urls\n *\n * 2. rrweb emits no events during inactivity, this means even the configured\n * periodic 30 second checkout will not happen until there is user activity of dom changes\n * AFTER 30 seconds.\n *\n * As a result we have to prompt it to do so as long as we have some content in the array buffer to\n * ensure periodic uploads.\n */\nconst periodicActionCheck = async () => {\n if (!isAlwaysOnActive()) {\n window.clearInterval(interval);\n return;\n }\n fetchUrlsIfNeeded();\n if (!shouldUploadEventBuffer(eventBuffer)) {\n // In this case the whole array is basically empty, it has no user actions or changes, just a meta event and full snapshot\n return;\n }\n const firstTimestamp = eventBuffer[0].timestamp;\n const timeSinceFirstEvent = Date.now() - firstTimestamp;\n if (timeSinceFirstEvent > UPLOAD_INTERVAL_MAX_MS) triggerSnapshotAction?.();\n};\n\n/**\n * Fetches more urls if we are out of them, and resolves any promises waiting for more\n */\nconst fetchUrlsIfNeeded = async () => {\n if (uploadUrls.length || isUrlRequestInflight) return;\n isUrlRequestInflight = true;\n const urls = await fetchUploadUrls();\n if (!urls) {\n disabled = true;\n return;\n }\n const promisesToFulfill = pendingUrlPromiseResolvers.splice(0, urls.length);\n promisesToFulfill.forEach((resolve) => resolve(urls.shift()));\n urls.forEach((u) => uploadUrls.push(u));\n isUrlRequestInflight = false;\n};\n\n/**\n * Reads always-on state from sessionStorage and initiates an upload\n * if the state shows that we had a pending upload\n */\nconst readStoredAlwaysOnInfo = () => {\n //TODO handle not being able to access sessionStorage\n const info = sessionStorageHelper.getItem(\"sprig.alwayson.info\");\n if (info) {\n logger.info(\"Read stored session state\", info);\n const storedState = JSON.parse(info) as StoredAlwaysOnInfo;\n disabled = storedState.disabled;\n alwaysOnMetadata = storedState.metadata;\n uploadUrls = storedState.uploadUrls;\n currentIndex = storedState.currentIndex;\n expirationTimestamp = storedState.expirationTimestamp;\n if (storedState.pendingEventTimestamp) {\n logger.info(\n `Uploading with pending timestamp: ${storedState.pendingEventTimestamp}`,\n );\n uploadPendingEventsFromTime(storedState.pendingEventTimestamp);\n }\n } else {\n expirationTimestamp = maxDurationSeconds * 1000 + Date.now();\n }\n};\n\n/**\n * Causes all events in IDB from the provided timestamp to Date.now() to\n * be uploaded as an always-on replay file\n */\nconst uploadPendingEventsFromTime = async (timestamp: number) => {\n const now = Date.now();\n const storedEvents = await replayStorage.getEventsBetween(timestamp, now);\n const parsedEvents: eventWithTime[] = storedEvents.map((e) =>\n JSON.parse(e.event),\n );\n if (!shouldUploadEventBuffer(parsedEvents)) return;\n insertMetaEvent(parsedEvents);\n const url = await getUploadUrl();\n if (!url) return;\n await uploadWithUrl(url, parsedEvents);\n};\n\n/**\n * Writes the current always-on state to sessionStorage.\n * To be done during page unload.\n */\nconst storeSessionInfo = () => {\n //TODO handle not being able to access sessionStorage\n let pendingEventTimestamp = undefined;\n if (eventBuffer.length) {\n pendingEventTimestamp = eventBuffer[0].timestamp;\n }\n const info: StoredAlwaysOnInfo = {\n disabled,\n metadata: alwaysOnMetadata,\n uploadUrls,\n currentIndex,\n pendingEventTimestamp,\n expirationTimestamp,\n };\n logger.info(\"Storing session state on unload\", info);\n sessionStorageHelper.setItem(\"sprig.alwayson.info\", JSON.stringify(info));\n};\n\n/**\n * Similar to logic in replayController for compressing an array of events and\n * encoding for upload to s3. Could probably be factored out to be shared\n */\nconst compressEventArray = async (events: eventWithTime[]) => {\n const encoder = new TextEncoder();\n const cs: CompressionStream = new CompressionStream(\"gzip\");\n const writer: WritableStreamDefaultWriter = cs.writable.getWriter();\n const bufferArray = encoder.encode(JSON.stringify(events));\n writer.write(bufferArray);\n writer.close();\n return new Uint8Array(await new Response(cs.readable).arrayBuffer());\n};\n\n/**\n * Helper that attempts the provided delegate, and if it throws disables Always-on replay\n * @param action The async action to atttempt\n * @param description Description that could show up in error messages in sentry\n * @returns\n */\nconst tryAndDisableOnFailure = async (\n action: () => Promise<Result>,\n description: string,\n) => {\n try {\n const result = await action();\n if (!result.ok) throw new Error(`Error ${description}`);\n return result;\n } catch (err) {\n disabled = true;\n }\n};\n\n/**\n * Compresses the provided event array and uplaods to the provided URL with a PUT request\n * @param url\n * @param events\n */\nconst uploadWithUrl = async (url: string, events: eventWithTime[]) => {\n if (!isAlwaysOnActive() || !url) return;\n const data = await compressEventArray(events);\n logger.info(\"Uploading always-on events with presigned url\");\n await tryAndDisableOnFailure(\n () =>\n sprigFetch(url, {\n body: data,\n method: \"PUT\",\n }),\n \"uploading always-on with presigned url\",\n );\n};\n\n/**\n * Fetches more presigned s3 upload urls from the API\n */\nconst fetchUploadUrls = async (): Promise<string[] | undefined> => {\n if (!isAlwaysOnActive()) return;\n const { surveyId, responseGroupUuid } = alwaysOnMetadata;\n const body = {\n responseGroupUuid,\n surveyId,\n index: currentIndex + 1,\n };\n logger.info(\"Fetching always-on upload urls\", body);\n const res = await tryAndDisableOnFailure(\n () =>\n sprigFetch(`${apiUrl}/sdk/1/replayUrls`, {\n method: \"POST\",\n body: JSON.stringify(body),\n headers: getHttpHeaders(window.UserLeap),\n }),\n \"fetching always-on signed urls\",\n );\n if (!res) return;\n const urls = res.json.signedUrls;\n logger.info(\"Fetched more always-on upload urls\", { body, urls });\n return urls;\n};\n\n/**\n * Gets an upload URL. If we have none buffered then make a request to the API for more\n * if a request is already inflight, just await it.\n * @returns a presigned upload url string for s3\n */\nconst getUploadUrl = async (): Promise<string | undefined> => {\n if (uploadUrls.length) return uploadUrls.shift();\n const promise = new Promise<string | undefined>((res) => {\n pendingUrlPromiseResolvers.push(res);\n });\n fetchUrlsIfNeeded();\n return promise;\n};\n\nconst uploadArray = async () => {\n const events = eventBuffer.splice(0);\n if (!shouldUploadEventBuffer(events)) return;\n logger.info(\"Capturing always-on event array to upload\");\n insertMetaEvent(events);\n const url = await getUploadUrl();\n if (!url) return;\n await uploadWithUrl(url, events);\n};\n\n/**\n * Inserts a custom meta event into the provided array. These meta\n * events are used to pass extra information about the replay to the lambda\n */\nconst insertMetaEvent = (array: eventWithTime[]) => {\n const timestamp = array.length\n ? array[array.length - 1].timestamp\n : Date.now();\n const index = currentIndex;\n const customMetadata =\n window.UserLeap?.config?.customMetadata ?? window.__cfg?.customMetadata;\n currentIndex++;\n array.push({\n timestamp,\n type: EventType.Custom,\n data: {\n tag: \"Sprig_Meta\" satisfies CustomEvent,\n payload: {\n ...alwaysOnMetadata,\n index,\n visitorId: window.UserLeap.visitorId ?? \"\",\n timestamp,\n customMetadata,\n } satisfies MetaCustomEventPayload,\n },\n });\n};\n\nconst handleUnload = async () => {\n inUnload = true;\n if (!isAlwaysOnActive()) return;\n logger.info(\"Always On handle page unload\");\n storeSessionInfo();\n};\n\nexport const handleEvent = (\n isValidFirstEvent: boolean,\n event: eventWithTime,\n) => {\n if (\n !isAlwaysOnActive() ||\n inUnload ||\n (!isValidFirstEvent && !eventBuffer.length)\n ) {\n return;\n }\n // Whenever we get a new full snapshot, upload the current buffer\n // This should happen every 30 seconds\n if (isValidFirstEvent && eventBuffer.length) {\n uploadArray();\n }\n eventBuffer.push(event);\n};\n\nwindow.addEventListener(\"beforeunload\", handleUnload);\n","import { PerformanceMetrics, registerMetric } from \"./metricsReporter\";\nimport { Metric } from \"./performanceMetric\";\n\nexport const timeAndReportAsyncAction = async <T>(\n action: () => Promise<T>,\n name: Metric,\n) => {\n const start = performance.now();\n let res: T;\n try {\n res = await action();\n } finally {\n const diff = performance.now() - start;\n let metric = PerformanceMetrics[name];\n if (!metric) {\n metric = registerMetric(name);\n }\n metric.report(diff / 1000.0); // convert to seconds\n }\n return res;\n};\n\nexport const timeAndReportAction = (action: () => void, name: Metric) => {\n const start = performance.now();\n try {\n action();\n } finally {\n const diff = performance.now() - start;\n let metric = PerformanceMetrics[name];\n if (!metric) {\n metric = registerMetric(name);\n }\n metric.report(diff / 1000.0); // convert to seconds\n }\n};\n","import { EventType } from \"@rrweb/types\";\nimport { v4 as uuid } from \"uuid\";\n\nimport {\n AlwaysOnInitConfig,\n handleEvent,\n initAlwaysOn,\n isAlwaysOnActive,\n} from \"./alwaysOnController\";\nimport { initIframeManager } from \"./iframeManager\";\nimport { initializeNetwork, markUploadComplete, uploadChunk } from \"./network\";\nimport { replayStorage } from \"./ReplayStorage\";\nimport {\n checkIDBNotSupported,\n disableRecording,\n isReplayRecordingDisabled,\n markReplayRecordingDisabled,\n recordCustomEvent,\n recordFullSnapshot,\n recordOrUpdateScrollEvent,\n RecordSurveyComplete,\n replayState,\n sessionId,\n teardownReplay,\n trackHeatmapInactivity,\n tryReplayAction,\n isReplayPaused,\n} from \"./replayStorageHelpers\";\nimport {\n ChunkUpload,\n ChunkUploadInfo,\n HeatmapCaptureParams,\n PendingCapture,\n RecordedEvent,\n ReplayCaptureParams,\n} from \"./types\";\nimport { initUserEventObserver } from \"./userEventObserver\";\nimport { SprigEvent } from \"../../constants/sprigEvents\";\nimport { breadcrumbsLogger as logger } from \"../../helpers/BreadcrumbsLogger\";\nimport eventEmitter from \"../../helpers/eventEmitter\";\nimport { sessionStorageHelper } from \"../../helpers/general\";\nimport { reportAndRegister } from \"../../helpers/metrics/metricsReporter\";\nimport {\n timeAndReportAction,\n timeAndReportAsyncAction,\n} from \"../../helpers/metrics/timedActionMetric\";\n\nlet replayTimeThreshold = 5000;\nlet replayBatchDuration = 60000;\nlet lastEventTimestamp = 0;\n\nconst REPLAY_LOOKBACK_BUFFER_SECONDS = 5;\nconst REPLAY_CHECKOUT_INTERVAL_SECONDS = 30;\nconst REPLAY_EVENT_LOOKBACK_SECONDS =\n REPLAY_CHECKOUT_INTERVAL_SECONDS + REPLAY_LOOKBACK_BUFFER_SECONDS;\n\nlet numCapturesPendingStr: string | null;\nlet awaitingThrottledEventInsert = false;\nlet eventsToInsert: RecordedEvent[] = [];\n\nexport const initializeReplay = async ({\n maxReplayDurationSeconds,\n maxInflightRequests = 2,\n replaySettings,\n teardownAfter = false,\n apiUrl,\n alwaysOnConfig,\n}: {\n maxReplayDurationSeconds: number;\n maxInflightRequests?: number;\n replaySettings?: {\n batchDuration?: number;\n minAvailableGb?: number;\n minDuration?: number;\n };\n teardownAfter?: boolean;\n apiUrl: string;\n alwaysOnConfig?: AlwaysOnInitConfig;\n}) => {\n if (alwaysOnConfig) {\n initAlwaysOn({\n apiUrl,\n config: alwaysOnConfig,\n triggerSnapshot: () => {\n recordFullSnapshot();\n },\n });\n }\n numCapturesPendingStr = sessionStorageHelper.getItem(\"sprig.pendingCount\");\n if (replayState.isRecording) return;\n if (teardownAfter)\n sessionStorageHelper.setItem(\"sprig.teardownAfterCapture\", \"true\");\n if (isReplayRecordingDisabled()) return logger.debug(\"ReplayDisabled\");\n\n if (await checkIDBNotSupported()) {\n logger.debug(\"IDBNotSupported\");\n return markReplayRecordingDisabled();\n }\n try {\n const db = await replayStorage.openDB();\n logger.info(\"DBVersion\", { version: db.version });\n } catch (err) {\n // Generally DomException would happen if a store already exists and you try to create it again, similar thing with indexes\n // Or with if there's a version error or if the disk is full\n /* c8 ignore start */\n logger.error(\"ReplayOpenErr\", { name: (err as DOMException).name });\n if ((err as DOMException).name === \"VersionError\") {\n replayStorage.deleteDB();\n }\n return markReplayRecordingDisabled();\n /* c8 ignore stop */\n }\n\n tryReplayAction(async () => {\n await uploadReadyPendingCaptures(true);\n }, \"Error uploading ready pending captures\");\n\n const alwaysOnLookback = isAlwaysOnActive()\n ? REPLAY_CHECKOUT_INTERVAL_SECONDS\n : 0;\n const recordingDuration = Math.max(\n maxReplayDurationSeconds ?? 0,\n alwaysOnLookback,\n );\n if (!recordingDuration) return logger.debug(\"MissingDuration\");\n\n logger.debug(\"ReplayInit\");\n await tryReplayAction(async () => {\n if (replaySettings?.minDuration)\n replayTimeThreshold = replaySettings.minDuration;\n\n if (replaySettings?.batchDuration)\n replayBatchDuration = replaySettings.batchDuration;\n\n initializeNetwork(maxInflightRequests);\n\n // Resume any uploads in progress\n uploadAllUnfinishedChunks();\n startPeriodicDataCleanup(\n recordingDuration + REPLAY_EVENT_LOOKBACK_SECONDS,\n 30 * 60,\n recordingDuration + REPLAY_EVENT_LOOKBACK_SECONDS,\n );\n intervalCheckForPendingCaptures();\n\n const replayLibraryUrl =\n window.UserLeap.replayLibraryURL ??\n `${import.meta.env.VITE_CDN}/dependencies/record-2.0.0-alpha.17.min.js`;\n\n /* c8 ignore start */\n if (!__NPM_BUNDLED___) {\n if (!window.rrwebRecord) {\n const { record } = await import(\n /* webpackIgnore: true */ /* @vite-ignore */\n replayLibraryUrl\n );\n window.rrwebRecord = record;\n }\n }\n const record = window.rrwebRecord;\n if (!record) return logger.error(\"RecordScriptFailed\");\n /* c8 ignore stop */\n\n let isFirstEvent = true;\n let lastMetaEventTimestamp = 0;\n const settings: Partial<Parameters<typeof record>[0]> = {\n checkoutEveryNms: REPLAY_CHECKOUT_INTERVAL_SECONDS * 1000,\n sampling: {\n input: \"last\",\n scroll: 250,\n media: 800,\n },\n ...replaySettings,\n };\n replayState.stopRecording = record({\n emit: (event, isCheckout) => {\n if (event.type === EventType.Custom) lastEventTimestamp = Date.now();\n\n if (isReplayRecordingDisabled() || isReplayPaused()) return;\n // Type 4 is a meta event\n if (isCheckout && event.type === EventType.Meta) {\n lastMetaEventTimestamp = performance.now();\n } else if (\n isCheckout &&\n lastMetaEventTimestamp &&\n event.type === EventType.FullSnapshot\n ) {\n const msElapsed = performance.now() - lastMetaEventTimestamp;\n reportAndRegister(\"sdk_replay_snapshot_seconds\", msElapsed / 1000.0);\n }\n const isValidStart =\n isFirstEvent || (!!isCheckout && event.type === EventType.Meta);\n isFirstEvent = false;\n handleEvent(isValidStart, event);\n throttledInsertEvents({\n uuid: uuid(),\n event: JSON.stringify(event),\n isValidStart,\n timestamp: Date.now(),\n });\n },\n ...settings,\n }) as () => void;\n\n // stopRecording will be undefined if the record function failed\n replayState.isRecording = !!replayState.stopRecording;\n\n // return early if recording has not yet started\n if (!replayState.isRecording) return;\n\n // listen for iframe load events and return the library url and settings\n initIframeManager(settings, replayLibraryUrl);\n\n eventEmitter.on(\"survey.complete\", (surveyId) => {\n RecordSurveyComplete({\n id: surveyId,\n userAgent: window.navigator.userAgent,\n });\n });\n initUserEventObserver(recordCustomEvent, recordOrUpdateScrollEvent);\n }, \"Error initializing replay\");\n};\n\nconst throttledInsertEvents = (event: RecordedEvent) => {\n if (event.event?.includes(\"Sprig_Scroll\")) {\n const xPath = JSON.parse(event.event)?.data?.payload?.xPath;\n if (!xPath) return;\n replayState.scrollEventUuids[xPath] = event.uuid;\n }\n eventsToInsert.push(event);\n if (!awaitingThrottledEventInsert) scheduleEventInsertion();\n};\n\nexport const batchStoreEvents = async (events: RecordedEvent[]) => {\n const populatedEvents = events.map((currEvent) => {\n return {\n ...currEvent,\n sessionId: currEvent.sessionId ?? sessionId,\n };\n });\n if (populatedEvents.length === 0) return;\n\n return tryReplayAction(\n () => replayStorage.bulkAdd(\"events\", populatedEvents),\n \"Error storing replay events\",\n );\n};\n\nconst scheduleEventInsertion = () => {\n awaitingThrottledEventInsert = true;\n setTimeout(async () => {\n if (isReplayRecordingDisabled() || isReplayPaused()) return;\n const events = eventsToInsert;\n eventsToInsert = [];\n awaitingThrottledEventInsert = false;\n timeAndReportAction(async () => {\n await batchStoreEvents(events);\n }, \"sdk_replay_add_event_batch_seconds\");\n }, 500);\n};\n\nconst startPeriodicDataCleanup = (\n cleanupEventSeconds: number,\n cleanupChunkSeconds: number,\n cleanupPendingCaptureSeconds: number,\n) => {\n replayState.cleanupInterval = window.setInterval(() => {\n const time = Date.now();\n\n timeAndReportAsyncAction(\n () =>\n tryReplayAction(async () => {\n if (isReplayRecordingDisabled()) return;\n await Promise.all([\n replayStorage.deleteRowsBefore(\n \"events\",\n time - cleanupEventSeconds * 1000,\n (item: RecordedEvent) =>\n item.expiredAt === undefined ||\n item.expiredAt < time - cleanupEventSeconds * 1000,\n ),\n replayStorage.deleteRowsBefore(\n \"chunkUploads\",\n time - cleanupChunkSeconds * 1000,\n ),\n replayStorage.deleteRowsBefore(\n \"pendingCaptures\",\n time - cleanupPendingCaptureSeconds * 1000,\n (item: PendingCapture) => !item.canUpload,\n ),\n ]);\n }, \"Error deleting table rows\"),\n \"sdk_replay_cleanup_seconds\",\n );\n logger.debug(\"CleanupComplete\");\n }, 30_000);\n};\n\nconst intervalCheckForPendingCaptures = () => {\n replayState.pendingCheckInterval = window.setInterval(async () => {\n tryReplayAction(async () => {\n await uploadReadyPendingCaptures();\n }, \"Error initiating pending captures\");\n }, 5000);\n};\n\nlet isCheckingPendingCaptures = false;\n\n// Get pending captures that have passed targetTimestamp, upload them, and remove from pendingCaptures\nexport const uploadReadyPendingCaptures = async (isBeforeType = false) => {\n if (isCheckingPendingCaptures) {\n return;\n }\n try {\n isCheckingPendingCaptures = true;\n const numCapturesPendingInt = parseInt(numCapturesPendingStr ?? \"0\");\n if (numCapturesPendingInt === 0) return;\n\n // get pending captures that are ready to be upload when time exceed capture time and has marked can upload\n const readyCaptures = await replayStorage.getPendingCaptures({\n beforePresent: true,\n isBeforeType,\n });\n\n const db = await replayStorage.openDB();\n await Promise.all(\n readyCaptures.map(async (c) => {\n await db.delete(\"pendingCaptures\", c.uuid);\n return scheduleOrCaptureReplay(c.captureParams, c.canUpload);\n }),\n );\n numCapturesPendingStr = (\n numCapturesPendingInt - readyCaptures.length\n ).toString();\n sessionStorageHelper.setItem(\"sprig.pendingCount\", numCapturesPendingStr);\n } finally {\n isCheckingPendingCaptures = false;\n }\n};\n\nconst getEventsBatch = async (\n start: number,\n targetBeginning: number,\n targetEnd: number,\n validStartFound: boolean,\n batchDuration: number,\n) => {\n const end = Math.min(start + batchDuration, targetEnd);\n const events = await timeAndReportAsyncAction(\n () => replayStorage.getEventsBetween(start, end),\n \"sdk_replay_get_events_between_seconds\",\n );\n\n if (!events?.length) {\n logger.debug(\"NoEventsFound\");\n return { validStartFound, events: [] };\n }\n if (!validStartFound) {\n logger.debug(\"ValidStartSearch\");\n let replayStartIndex = -1;\n events?.forEach((ev, index) => {\n if (!ev.isValidStart) return;\n const isBeforeTargetBeginning = ev.timestamp <= targetBeginning;\n if (replayStartIndex < 0 || isBeforeTargetBeginning) {\n replayStartIndex = index;\n }\n });\n if (replayStartIndex < 0) {\n logger.debug(\"ValidStartNotFound\");\n return { validStartFound, events: [] };\n }\n return { validStartFound: true, events: events?.slice(replayStartIndex) };\n }\n return { validStartFound, events };\n};\n\nconst getFileChunks = (\n fileData: Uint8Array,\n minChunkSizeMb: number,\n numAllocatedChunks: number,\n) => {\n const fileSizeBytes = fileData.length;\n // This is the minimum chunk size supported by s3 in bytes\n const minChunkBytes = minChunkSizeMb * 1024 * 1024;\n // This would be the chunk size if the file size were divided evenly between the preallocated chunk urls\n const equallyDividedChunkSize = Math.ceil(fileSizeBytes / numAllocatedChunks);\n // Our target chunk size is the max of these values\n const chunkSizeBytes = Math.max(minChunkBytes, equallyDividedChunkSize);\n\n const chunks = [];\n let index = 0;\n while (index < fileSizeBytes) {\n chunks.push(fileData.slice(index, index + chunkSizeBytes));\n index += chunkSizeBytes;\n }\n return chunks;\n};\n\nconst uploadChunks = (chunks: ChunkUpload[]) => {\n return Promise.all(\n chunks.map(async (chunk) => {\n const etag = await uploadChunk(chunk);\n\n await replayStorage.updatePartial(\"chunkUploads\", chunk.uuid, {\n data: null,\n etag: etag,\n status: \"UploadComplete\",\n });\n\n return chunk.uploadId;\n }),\n );\n};\n\nconst markUploadCompleteIfFinished = async (uploadId: string) => {\n const chunksForUpload = await replayStorage.getChunkUploadsByStatus({\n status: \"UploadComplete\",\n uploadId,\n });\n if (!chunksForUpload?.length) {\n logger.info(\"NoChunksForUpload\", { uploadId });\n return;\n }\n\n // prevent potential chunks with duplicate chunkIndex/partNumber\n const dedupedChunks = chunksForUpload.reduce((acc, curr) => {\n if (!acc.find((e) => e.chunkIndex === curr.chunkIndex)) {\n acc.push(curr);\n }\n return acc;\n }, [] as ChunkUpload[]);\n dedupedChunks.sort((c1, c2) => c1.chunkIndex - c2.chunkIndex);\n\n const etags = dedupedChunks\n .map((c) => ({ ETag: c.etag, PartNumber: c.chunkIndex }))\n .filter((c): c is ChunkUploadInfo => c.ETag !== null);\n const chunk = dedupedChunks[0];\n\n await markUploadComplete({\n apiUrl: chunk.apiUrl,\n surveyId: chunk.surveyId,\n uploadId,\n responseGroupUuid: chunk.responseGroupId,\n etags,\n headers: chunk.completeUploadHeaders,\n replayDuration: chunk.replayDuration,\n });\n\n await replayStorage.deleteChunkUploads(\"UploadComplete\", uploadId);\n};\n\nconst uploadAllUnfinishedChunks = () => {\n tryReplayAction(async () => {\n const unfinishedChunks = await replayStorage.getChunkUploadsByStatus({\n sessionId,\n status: \"ReadyForUpload\",\n });\n\n if (!unfinishedChunks?.length) return;\n const finishedUploadIds = await uploadChunks(unfinishedChunks);\n\n if (finishedUploadIds?.length) {\n await Promise.all(\n finishedUploadIds.map((id) => {\n if (id) return markUploadCompleteIfFinished(id);\n }),\n );\n }\n }, \"Error uploading unfinished chunks\");\n};\n\nconst uploadChunksAndMarkComplete = async (\n uploadIds: string[],\n chunks: ChunkUpload[],\n) => {\n await uploadChunks(chunks);\n await Promise.all(uploadIds.map((id) => markUploadCompleteIfFinished(id)));\n};\n\nconst getEvents = async (targetBeginning: number, targetEnd: number) => {\n const encoder = new TextEncoder();\n let fileData: Uint8Array | null = null;\n const cs: CompressionStream = new CompressionStream(\"gzip\");\n const writer: WritableStreamDefaultWriter = cs.writable.getWriter();\n let written = false;\n let validStartFound = false;\n let [firstEventTime, lastEventTime] = [0, 0];\n const eventsStart = targetBeginning - REPLAY_EVENT_LOOKBACK_SECONDS * 1000;\n let events: RecordedEvent[] = [];\n\n for (\n let start = eventsStart;\n start < targetEnd;\n start += replayBatchDuration\n ) {\n ({ validStartFound, events } = await getEventsBatch(\n start,\n targetBeginning,\n targetEnd,\n validStartFound,\n replayBatchDuration,\n ));\n\n if (!events?.length) {\n logger.debug(\"NoEventsFound\");\n continue;\n }\n if (firstEventTime === 0) {\n firstEventTime = events[0].timestamp;\n }\n lastEventTime = events[events.length - 1].timestamp;\n\n const eventStrs = events.map((e: RecordedEvent) => e.event);\n eventStrs.push(`{\"timestamp\":${targetEnd}}`);\n const combinedJson = `${written ? \",\" : \"[\"}${eventStrs}`;\n\n const bufferArray = encoder.encode(combinedJson);\n timeAndReportAction(() => {\n writer.write(bufferArray);\n }, \"sdk_replay_compression_seconds\");\n written = true;\n }\n\n if (lastEventTime - firstEventTime < replayTimeThreshold) {\n logger.debug(\"ReplayTooShort\");\n return null;\n }\n\n const encodedCloseBrace = encoder.encode(\"]\");\n writer.write(encodedCloseBrace);\n writer.close();\n fileData = new Uint8Array(await new Response(cs.readable).arrayBuffer());\n return fileData;\n};\n\nconst getFileData = async (replayDuration: number, end?: number) => {\n const targetEnd = end ?? Date.now();\n const targetBeginning = targetEnd - replayDuration;\n\n return getEvents(targetBeginning, targetEnd);\n};\n\nconst getFileChunkAndUpload = async (args: ReplayCaptureParams) => {\n const {\n surveyId,\n responseGroupId,\n visitorId,\n apiUrl,\n completeUploadHeaders,\n replayParams,\n triggerTimestamp,\n } = args;\n const fileData = await getFileData(\n replayParams.replayDurationSeconds * 1000,\n triggerTimestamp,\n );\n if (!fileData?.length) {\n logger.info(\"FileDataEmpty\", { surveyId });\n return;\n }\n const chunks = getFileChunks(\n fileData,\n replayParams.minimumChunkSizeMb,\n replayParams.signedUrls.length,\n );\n\n const chunksToUpload = await Promise.all(\n chunks.map(async (chunk, index) => {\n const id = uuid();\n const chunkToUpload: ChunkUpload = {\n apiUrl,\n chunkIndex: index + 1,\n completeUploadHeaders,\n etag: null,\n responseGroupId,\n status: \"ReadyForUpload\",\n surveyId,\n timestamp: triggerTimestamp,\n totalChunks: chunks.length,\n data: chunk,\n uploadId: replayParams.uploadId,\n uploadUrl: replayParams.signedUrls[index].url,\n uuid: id,\n visitorId,\n };\n\n const db = await replayStorage.openDB();\n await db.add(\"chunkUploads\", {\n ...chunkToUpload,\n sessionId: chunkToUpload.sessionId ?? sessionId,\n });\n return chunkToUpload;\n }),\n );\n\n await uploadChunksAndMarkComplete([replayParams.uploadId], chunksToUpload);\n};\n\n// also used when displaying questions in the top level controller\nexport const scheduleOrCaptureReplay = async (\n args: ReplayCaptureParams,\n canUpload?: boolean,\n) => {\n if (isReplayRecordingDisabled())\n return logger.debug(\"ReplayDisabled-ScheduleOrCapture\");\n\n const {\n isHeatmap,\n isStandalone,\n replayParams,\n triggerTimestamp,\n responseGroupId,\n } = args;\n\n // set up listener to listen for question being answered for after, before/after capture\n // question may be answered prior to after capture finishing so the other listener never gets initiated to wait.\n const callback = async () => {\n setTimeout(\n () => eventEmitter.removeListener(SprigEvent.QuestionAnswered, callback),\n 0,\n );\n tryReplayAction(async () => {\n if (replayParams.replayDurationType === \"before\") {\n await getFileChunkAndUpload(args);\n } else {\n await replayStorage.markPendingCaptureToCanUpload(responseGroupId);\n }\n }, \"Error in schedule/capture callback\");\n };\n\n tryReplayAction(async () => {\n if (\n replayParams.replayDurationType === \"after\" ||\n replayParams.replayDurationType === \"beforeAndAfter\"\n ) {\n const hasIPS = !isStandalone && !isHeatmap;\n if (hasIPS) {\n eventEmitter.on(SprigEvent.QuestionAnswered, callback);\n }\n await scheduleCapture(args);\n return;\n }\n\n const hasUploadableData = isStandalone || isHeatmap || canUpload;\n if (hasUploadableData) {\n await getFileChunkAndUpload(args);\n if (isHeatmap) {\n handleHeatmapCleanup();\n }\n } else {\n // is IPS && replayDurationType === ReplayDurationType.Before\n const bufferTime =\n REPLAY_EVENT_LOOKBACK_SECONDS + replayParams.replayDurationSeconds;\n // mark rows with expiredAt\n const start = triggerTimestamp - bufferTime * 1000;\n const end = triggerTimestamp;\n\n await replayStorage.updateEventsExpiredAt(\n start,\n end,\n replayParams.expirationTimeLimitMinutes,\n );\n eventEmitter.on(SprigEvent.QuestionAnswered, callback);\n }\n }, \"Error in scheduling/capturing replay\");\n};\n\nconst handleHeatmapCleanup = async () => {\n if (!parseInt(numCapturesPendingStr ?? \"0\")) {\n sessionStorageHelper.removeItem(\"sprig.isCapturingHeatmap\");\n }\n if (sessionStorageHelper.getItem(\"sprig.teardownAfterCapture\")) {\n teardownReplay();\n clearUserReplayData();\n sessionStorageHelper.removeItem(\"sprig.teardownAfterCapture\");\n }\n};\n\nexport const clearUserReplayData = async () => {\n if (isReplayRecordingDisabled())\n return logger.debug(\"ReplayDisabled-ClearData\");\n\n return Promise.all([\n replayStorage.deleteBySessionId(\"events\", sessionId),\n replayStorage.deleteBySessionId(\"pendingCaptures\", sessionId),\n ]).catch((err) => {\n disableRecording(\"Error clearing user replay data\", err);\n });\n};\n\n// also used when displaying questions in the top level controller\nexport const scheduleCapture = async (\n args: ReplayCaptureParams | HeatmapCaptureParams,\n) => {\n if (isReplayRecordingDisabled()) return;\n const { isHeatmap, surveyId } = args;\n const currPending = await replayStorage.getPendingCaptures();\n const pendingForSurvey = currPending?.filter(\n (curr) => curr.captureParams.surveyId === surveyId,\n );\n if (pendingForSurvey?.length) {\n logger.info(\"PendingCaptureExists\", { surveyId });\n return;\n }\n if (isHeatmap) {\n // ensure heatmap replay starts right after trigger\n recordFullSnapshot();\n sessionStorageHelper.setItem(\"sprig.isCapturingHeatmap\", \"true\");\n\n lastEventTimestamp = Date.now();\n if (!replayState.inactivityInterval) {\n replayState.inactivityInterval = window.setInterval(() => {\n trackHeatmapInactivity(lastEventTimestamp);\n }, 1000);\n }\n }\n const argsCopy = { ...args, replayParams: { ...args.replayParams } };\n if (args.replayParams.replayDurationType === \"beforeAndAfter\") {\n argsCopy.replayParams.replayDurationSeconds *= 2;\n }\n\n argsCopy.replayParams.replayDurationType = \"before\";\n const targetTimestamp =\n args.triggerTimestamp + args.replayParams.replayDurationSeconds * 1000;\n\n argsCopy.triggerTimestamp = targetTimestamp;\n\n // update pending count for session\n numCapturesPendingStr = (\n parseInt(numCapturesPendingStr ?? \"0\") + 1\n ).toString();\n sessionStorageHelper.setItem(\"sprig.pendingCount\", numCapturesPendingStr);\n\n const db = await replayStorage.openDB();\n await db.add(\"pendingCaptures\", {\n canUpload: false,\n captureParams: argsCopy,\n sessionId,\n targetTimestamp,\n timestamp: Date.now(),\n uuid: uuid(),\n });\n};\n","import { registerReplay } from \"../src/modules/moduleRegistry\";\nimport * as replayModule from \"../src/modules/replay\";\n\nregisterReplay(replayModule);\n","import { createUpload } from \"@mux/upchunk\";\nimport { record } from \"@rrweb/record\";\n\nwindow.UpChunk = {\n createUpload: createUpload,\n};\nwindow.rrwebRecord = record;\n\nexport * from \"../sprig-browser/index\";\n"],"names":["xe","Object","create","q","defineProperty","Ue","getOwnPropertyDescriptor","Fe","getOwnPropertyNames","Ne","getPrototypeOf","De","prototype","hasOwnProperty","R","t","e","exports","Ce","Rt","ye","T","window","global","self","Se","Tt","Ee","ot","call","setTimeout","alert","confirm","prompt","toString","ve","zt","ke","M","replace","lt","n","split","r","length","i","a","indexOf","o","slice","toLowerCase","s","push","Re","Pt","we","arguments","ct","_e","_t","X","Te","pt","dt","ft","ze","uri","callback","C","Pe","Error","S","P","Be","u","response","responseText","responseType","responseXML","documentElement","nodeName","$","JSON","parse","clearTimeout","L","statusCode","V","h","useXDR","status","body","method","d","headers","url","p","rawRequest","getAllResponseHeaders","xhr","cors","XDomainRequest","XMLHttpRequest","c","y","data","f","I","sync","json","accept","Accept","stringify","onreadystatechange","readyState","onload","onerror","onprogress","onabort","ontimeout","open","username","password","withCredentials","timeout","abort","code","setRequestHeader","beforeSend","send","default","toUpperCase","D","TypeError","ie","se","String","m","globalThis","g","this","message","Y","stack","console","warn","je","We","$e","Ve","qe","Ge","B","K","b","Z","J","AT_TARGET","Q","ee","value","enumerable","N","set","type","bubbles","Boolean","cancelable","composed","target","currentTarget","stopPropagationFlag","stopImmediatePropagationFlag","canceledFlag","inPassiveListenerFlag","dispatchFlag","timeStamp","Date","now","l","srcElement","eventPhase","stopPropagation","cancelBubble","stopImmediatePropagation","te","WeakMap","get","x","Event","setPrototypeOf","v","ne","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","HIERARCHY_REQUEST_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","NOT_FOUND_ERR","NOT_SUPPORTED_ERR","INUSE_ATTRIBUTE_ERR","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","VALIDATION_ERR","TYPE_MISMATCH_ERR","SECURITY_ERR","NETWORK_ERR","ABORT_ERR","URL_MISMATCH_ERR","QUOTA_EXCEEDED_ERR","TIMEOUT_ERR","INVALID_NODE_TYPE_ERR","DATA_CLONE_ERR","re","keys","configurable","w","ue","super","defaultPrevented","preventDefault","oe","original","le","E","returnValue","_","bind","ce","flags","he","pe","Qe","et","handleEvent","dispatchEvent","ErrorEvent","error","process","emit","de","listeners","fe","me","signal","removeEventListener","signalListener","cow","filter","splice","k","constructor","ge","U","capture","once","passive","be","aborted","attrCallback","attrListener","addEventListener","wrap","DOMException","ae","captureStackTrace","defineProperties","name","F","EventTarget","_a","Ae","__esModule","A","O","H","minChunkSize","maxChunkSize","j","W","readableStream","defaultChunkSize","_chunkSize","chunkSize","Symbol","asyncIterator","getReader","done","read","Uint8Array","Blob","size","chunkByteSize","releaseLock","Ct","Ie","Le","includes","St","attemptCount","attempts","retryCodes","z","endpoint","file","delayBeforeAttempt","dynamicChunkSize","maxFileBytes","maxFileSize","chunkCount","offline","_paused","success","nextChunkRangeStart","chunkedStreamIterable","stream","chunkedStreamIterator","totalChunks","Math","ceil","eventTarget","validateOptions","getEndpoint","then","sendChunks","dispatch","totalChunkSize","pause","currentXhr","CustomEvent","detail","File","endpointValue","Promise","resolve","upload","loaded","total","min","chunkNumber","xhrPromise","lastChunkStart","sendChunk","async","getTime","chunk","timeInterval","max","attemptsLeft","pendingChunk","sendChunkWithRetries","next","It","createUpload","__defProp","__publicField","obj","key","writable","__defProp$1","__publicField$1","NodeType$2","NodeType2","testableAccessors$1","Node","ShadowRoot","Element","MutationObserver","testableMethods$1","untaintedBasePrototype$1","getUntaintedPrototype$1","defaultObj","defaultPrototype","accessorNames","isUntaintedAccessors","every","accessor","_a2","_b","methodNames","isUntaintedMethods","iframeEl","document","createElement","appendChild","win","contentWindow","untaintedObject","removeChild","untaintedAccessorCache$1","getUntaintedAccessor$1","instance","cacheKey","untaintedPrototype","untaintedAccessor","untaintedMethodCache$1","getUntaintedMethod$1","untaintedMethod","index$1","childNodes","n2","parentNode","parentElement","textContent","contains","other","getRootNode","host","styleSheets","shadowRoot","querySelector","selectors","querySelectorAll","mutationObserver","isElement","nodeType","ELEMENT_NODE","isShadowRoot","hostEl","isNativeShadowDom","shadowRoot2","stringifyStylesheet","s2","rules2","rules","cssRules","cssText","Array","from","rule2","stringifyRule","href","join","sheetHref","importStringified","styleSheet","statement","layerName","supportsText","media","mediaText","absolutifyURLs","ruleStringified","selectorText","cssStringified","regex","Mirror","Map","getMeta","id","idNodeMap","nodeMetaMap","getId","delete","forEach","childNode","removeNodeFromMap","has","node2","meta","oldNode","getNode","maskInputValue","element","maskInputOptions","tagName","maskInputFn","text","actualType","repeat","str","ORIGINAL_ATTRIBUTE_NAME","getInputType","hasAttribute","extractFileExtension","path","baseURL","URL","location","err","match","pathname","URL_IN_CSS_REF","URL_PROTOCOL_MATCH","URL_WWW_MATCH","DATA_URI","origin","quote1","path1","quote2","path2","path3","filePath","maybeQuote","test","parts","pop","part","_id","tagNameRegex","RegExp","genId","canvasService","canvasCtx","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","cachedDocument","absoluteToDoc","doc","attributeValue","trim","getHref","isSVGElement","el","ownerSVGElement","customHref","a2","startsWith","setAttribute","transformAttribute","pos","collectCharacters","regEx","chars2","exec","substring","output","descriptorsStr","inParens","c2","charAt","ignoreAttribute","_value","classMatchesRegex","checkAncestors","eIndex","classList","className","needMaskingText","maskTextClass","maskTextSelector","closest","matches","serializeNode","options","mirror","mirror2","blockClass","blockSelector","needsMask","inlineStylesheet","maskTextFn","dataURLOptions","inlineImages","recordCanvas","keepIframeSrcFn","newlyAddedElement","rootId","hasNode","docId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","HTMLFormElement","processedTagName","attributes","len","i2","attr","stylesheet","find","rel","_cssText","sheet","innerText","checked","selected","rr_open_mode","__context","canvas","ctx","getContext","x2","width","height","getImageData","originalGetImageData","Uint32Array","buffer","some","pixel","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image","imageSrc","currentSrc","getAttribute","priorCrossOrigin","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","drawImage","complete","removeAttribute","mediaAttributes","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","rr_mediaPlaybackRate","playbackRate","rr_mediaMuted","muted","rr_mediaLoop","loop","rr_mediaVolume","volume","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","getBoundingClientRect","class","rr_width","rr_height","src","contentDocument","rr_src","isCustomElement","customElements","isSVG","isCustom","TEXT_NODE","parent","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","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","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","serializedNode","assign","add","recordChild","shadowRootEl","isShadowHost","headWhitespace","bypassOptions","childN","serializedChildNode","isShadow","listener","fired","timer","blankUrl","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","serializedLinkNode","getDefaultExportFromCjs$1","getAugmentedNamespace$1","f2","a22","Reflect","construct","apply","picocolors_browser$1","x$1","create$1","isColorSupported","reset","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","__proto__","toStringTag","pico$1","terminalHighlight$1$1","CssSyntaxError$3$1","CssSyntaxError","line","column","source","plugin22","reason","plugin","endLine","endColumn","setMessage","color","css","mark","aside","lines","start","end","maxWidth","map","index2","number","gutter","spacing","showSourceCode","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","params","rawValue","raws","afterName","nodes","block","between","detect","raw","buf","depth","step","last","child","before","left","right","string","prop","important","own","first","root2","root","rawCache","beforeAfter","walk","walkComments","walkDecls","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","clone","append","postcssNode","input","insertAfter","overrides","insertBefore","keepBetween","opts","rangeBy","getProxyProcessor","toProxy","markDirty","index","stringRepresentation","positionInside","word","endIndex","defaultType","bookmark","foundSelf","remove","result2","inputs","fixed","emitInputs","inputsNextIndex","toJSON","inputId","input2","proxyCache","Proxy","stringifier2","node","node$1","Node$3$1","Declaration$4$1","declaration$1","nonSecure$1","nanoid","random","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","prev","loadMap","mapFile","consumerCache","decodeURIComponent","substr","lastMatch","Buffer","atob","encoding","sourceMapString","mappings","_mappings","sections","comments","lastIndexOf","getAnnotationURL","fromSourceMap","isMap","prevPath","loadFile","decodeInline","consumer","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","offset","fromOffset","col","lastLine","lineToIndex","prevIndex","l2","mid","sourceRoot","to","fromUrl","originalPositionFor","protocol","sourceContentFor","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","content","isInline","toBase64","outputFile","eol","previous","toUrl","applySourceMap","clearAnnotation","generateMap","generateString","ignoreInvalidMapping","addMapping","generated","isSourcesContent","setSourcesContent","applyPrevMaps","isAnnotation","addAnnotation","noSource","mapping","sourcePath","withContent","charCodeAt","cached","previousMaps","already","toFileUrl","setSourceContent","btoa","unescape","encodeURIComponent","fileURL","encodeURI","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","proxyOf","Container$7$1","Container","children","normalize","cleanRaws","iterator","getIterator","indexes","condition","lastEach","args","cb","exist","existIndex","reverse","sample","selector","rebuild","unshift","pattern","decl","props","fast","each","e2","addToError","registerParse","dependant","registerRule","registerAtRule","registerRoot","container$1","LazyResult$4$1","Processor$3$1","Container$6$1","Document$3$1","registerLazyResult","registerProcessor","document$1$1","Warning$2$1","range","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","prepend","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","values","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","position","Comment$2$1","AtRule$2$1","Root$4$1","Rule$2$1","SAFE_COMMENT_NEIGHBOR$1","empty","parser$1","spaces","createTokenizer","shift","unnamedAtrule","init","brackets","tokenizer","getPosition","spacesAndCommentsFromEnd","spacesAndCommentsFromStart","tokens","founded","entries","doubleColon","customProperty","unknownWord","firstSpaces","precheckMissedSemicolon","stringFrom","spacesFromEnd","cache","concat","checkMissedSemicolon","unexpectedClose","unclosedBlock","bracket","rule","unclosedBracket","freeSemicolon","atrule","emptyRule","endFile","clean","reduce","all","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","isPromise$1","getEvents$1","toStack$1","events","eventIndex","visitorIndex","visitors","cleanMarks$1","postcss$2$1","LazyResult$2$1","LazyResult","stringified","processed","syntax","parser","result","helpers","postcss","plugins","reject","processing","runAsync","onRejected","catch","onFinally","postcssVersion","event","version","hasListener","promise","runOnRoot","handleError","prepareVisitors","visitTick","visitor","roots","subRoot","stringifier","generate","getAsyncError","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","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","list","atRule","Processor","Warning","Result","Input","postcss_1$1","postcss$1$1","__defProp2","__publicField2","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","cloneNode","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","removeAll","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","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","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","childNodes2","childIterator","firstChild","ownerDocument","_newChild","_refChild","_node","testableAccessors","testableMethods","untaintedBasePrototype","getUntaintedPrototype","untaintedAccessorCache","getUntaintedAccessor","untaintedMethodCache","getUntaintedMethod","mutationObserverCtor","on","fn","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","wait","leading","remaining","context","trailing","hookSetter","isRevoked","patch","replacement","wrapped","__rrweb_original__","receiver","nowTimestamp","getWindowScroll","_c","_d","scrollingElement","pageXOffset","top","pageYOffset","getWindowHeight","innerHeight","clientHeight","getWindowWidth","innerWidth","clientWidth","closestElementOfNode","isBlocked","isIgnored","headTitleMutations","isAncestorRemoved","legacy_isTouchEvent","changedTouches","isSerializedIframe","isSerializedStylesheet","hasShadowRoot","StyleSheetMirror","styleIDMap","newId","idStyleMap","getShadowHost","shadowHost","DOCUMENT_FRAGMENT_NODE","shadowHostInDom","rootShadowHost","inDom","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","PointerTypes","PointerTypes2","CanvasContext","CanvasContext2","MediaInteractions","MediaInteractions2","isNodeInLinkedList","DoubleLinkedList","head","__ln","tail","moveKey","parentId","MutationBuffer","Set","mutations","processMutation","frozen","locked","adds","addedIds","addList","getNextId","ns","nextId","pushAdd","addNode","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","mapRemoves","movedSet","isParentRemoved","removes","addedSet","isAncestorInSet","droppedSet","candidate","tailNode","unhandledNode","removeNode","payload","texts","genTextAreaValueMutation","attribute","style","diffAsStr","styleDiff","unchangedAsStr","_unchangedStyles","attributeMap","movedMap","mutationCb","textarea","item","cn","oldValue","attributeName","unattachedDoc","implementation","createHTMLDocument","old","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","nodeId","deepDelete","processedNodeManager","inOtherBuffer","targetId","canvasManager","unfreeze","lock","unlock","addsSet","r2","_isAncestorInSet","errorHandler","callbackWrapper","rest","mutationBuffers","getEventTarget","composedPath","initMutationObserver","rootEl","mutationBuffer","observer","processMutations","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initMouseInteractionObserver","mouseInteractionCb","sampling","mouseInteraction","disableMap","handlers","currentPointerType","Number","isNaN","endsWith","eventKey","eventName","handler","pointerType","thisEventKey","Mouse","Touch","Pen","MouseDown","MouseUp","Click","clientX","clientY","PointerEvent","TouchStart","TouchEnd","initScrollObserver","scrollCb","evt","defaultView","scrollLeftTop","scroll","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","hasNestedCSSRule","parentRule","CSSGroupingRule","CSSMediaRule","CSSSupportsRule","CSSConditionRule","parentStyleSheet","getIdAndStyleId","styleMirror","styleId","ownerNode","initAdoptedStyleSheetObserver","host2","hostId","patchTarget","originalPropertyDescriptor","_a3","sheets","adoptStyleSheets","initObservers","o2","hooks","currentWindow","mousemoveCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","customElementCb","mutation","mousemove","viewportResize","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","customElement","recordDOM","mousemoveHandler","threshold","callbackThreshold","mousemoveCallback","timeBaseline","positions","wrappedCb","totalOffset","timeOffset","updatePosition","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","mouseInteractionHandler","scrollHandler","viewportResizeHandler","lastH","lastW","inputHandler","ignoreClass","ignoreSelector","userTriggeredOnInput","eventHandler","userTriggered","isTrusted","isChecked","cbWithDedup","text2","v2","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","mediaInteractionHandler","Play","Pause","Seeked","VolumeChange","RateChange","styleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","fontObserver","CSSStyleSheet","insertRule","thisArg","argumentsList","addRule","styleBlock","deleteRule","replaceSync","removeRule","supportedNestedCSSRuleTypes","canMonkeyPatchNestedCSSRule","unmodifiedFunctions","typeKey","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","priority","removeProperty","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","restoreHandler","fonts","selectionObserver","param","collapsed","updateSelection","getSelection","isCollapsed","ranges","count","rangeCount","getRangeAt","startContainer","startOffset","endContainer","endOffset","customElementObserver","define","pluginHandlers","plugin3","disconnect","CrossOriginIframeMirror","generateIdFn","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","ids","getRemoteId","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","IframeManager","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","generateId","handleMessage","iframes","crossOriginIframeMap","loadListener","isAttachIframe","adoptedStyleSheets","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","getIds","ShadowDomManager","WeakSet","patchAttachShadow","shadowDoms","restoreHandlers","iframeElement","manager","option","sRoot","chars","lookup","i$1","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list2","ctor","contextMap","serializeArg","arg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","ArrayBuffer","base64","arraybuffer","bytes","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","initCanvasContextObserver","setPreserveDrawingBufferToTrue","contextType","ctxName","contextAttributes","preserveDrawingBuffer","patchGLPrototype","recordArgs","hookHandler","setter","encodedJs","blob","WorkerWrapper","objURL","webkitURL","createObjectURL","worker","Worker","revokeObjectURL","CanvasManager","latestId","invokeId","rafStamps","pendingCanvasMutations","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","canvasContextReset","snapshotInProgressMap","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","COLOR_BUFFER_BIT","bitmap","createImageBitmap","postMessage","requestAnimationFrame","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","flushPendingCanvasMutations","setLatestRAFTimestamp","_values","flushPendingCanvasMutationFor","valuesWithType","type2","StylesheetManager","adoptedStyleSheetCb","linkEl","trackedLinkElements","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","_linkEl","ProcessedNodeManager","thisBuffer","buffers","nodeMap","active","takeFullSnapshot$1","recording","cleanFrame","debug","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","recordAfter","errorHandler2","inEmittingFrame","passEmitsToParent","date","email","month","search","tel","time","week","select","lastFullSnapshotEvent","NodeList","DOMTokenList","polyfill$1","incrementalSnapshotCount","eventProcessor","isFrozen","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","initialOffset","CustomElement","addLoadListener","destroy","t2","addCustomEvent","tag","freezePage","takeFullSnapshot","NotStarted","Running","Stopped","DismissReason","SprigEvent","EVENTS","FEEDBACK_BUTTON_LOADED","SDK_READY","SURVEY_APPEARED","SURVEY_CLOSED","SURVEY_DIMENSIONS","SURVEY_FADING_OUT","SURVEY_HEIGHT","SURVEY_WIDTH","SURVEY_PRESENTED","SURVEY_LIFE_CYCLE","SURVEY_WILL_CLOSE","SURVEY_WILL_PRESENT","QUESTION_ANSWERED","REPLAY_CAPTURE","CLOSE_SURVEY_ON_OVERLAY_CLICK","VISITOR_ID_UPDATED","DATA","DISMISS_REASONS","API","CLOSED","COMPLETE","PAGE_CHANGE","OVERRIDE","SURVEY_ID","getRandomValues","rnds8","rng","crypto","byteToHex","native","randomUUID","v4","rnds","arr","breadcrumbsLogger","breadcrumbs","toISOString","breadcrumb","category","addBreadcrumb","level","getTimeStamp","getIntercom","Intercom","widgets","ul_wasVisible","hide_default_launcher","ConflictingWidgets","disable","enable","MemoryLeakError","emitter","_Emitter","listenerCount","maxListeners","defaultMaxListeners","hasWarnedAboutPotentialMemoryLeak","internalEventName","onceListener","removeListener","_getListeners","_emitInternalEvent","nextListeners","memoryLeakWarning","addListener","_wrapOnceListener","prependListener","_removeListener","Emitter","eventEmitter","delay","ms","res","shouldDirectEmbed","platform","UserLeap","forceDirectEmbed","StorageHelper","storage","tempStorage","isStorageAvailable","setItem","removeItem","reportError","getItem","stringifiedObject","sessionStorageHelper","localStorageHelper","Deferred","modules","replay","getModuleHeaders","headerValue","NETWORK_CONFIG","killswitch","killswitchReason","isRateLimited","isViolatingCspPolicy","pendingRequestQueue","getInstallationMethodHeader","Sprig","_config","installationMethod","_gtm","_segment","cspViolationHandler","blockedURI","_API_URL","killNetworkRequests","getHttpHeaders","envId","userId","visitorId","partnerAnonymousId","mobileHeadersJSON","mobileHeaders","locale","previewMode","dropOrQueueRequest","shouldDropOnRateLimit","requestInfo","deferredRequest","sprigFetch","_options","retries","shouldRetryRequest","killswitchResponse","ok","info","fetch","rateLimitResetTime","resolveRequest","newAttempt","pow","VIEW_TAG","MOBILE_PLATFORM_HEADERS","PATH_VISITOR","PATH_ENV","authenticatedFetch","results","authHeader","tokenPieces","headerToken","envUuidMap","getItemObject","setItemObject","widgetSetLocalStorageCredentialsValue","VisitorIDUpdated","logMessage","field","savedIds","widgetGetVID","apiUrl","fillPaths","components","displayQuestions","responseJson","trackPageViewUrl","initializedHeatmapPrivacySettings","forceBrandedLogo","endCard","isFeedback","heatmap","productConfig","questions","responseGroupUid","surveyId","uuid","vid","sessionReplay","studyType","isMobileWebview","calculateIsMobileWebview","useMobileStyling","calculateUseMobileStyling","ReplayCapture","hasQuestions","uploadId","replayType","replayDurationType","seconds","replayDurationSeconds","generateVideoUploadUrlPayload","mediaRecordingUid","uuidv4","mediaType","questionId","updatedAt","isReplay","surveyState","scheduleOrCaptureReplay","responseGroupId","replayParams","completeUploadHeaders","triggerTimestamp","isStandalone","eventId","heatmapSurveyId","initializeReplay","maxReplayDurationSeconds","maxInflightRequests","maxInflightReplayRequests","teardownAfter","replaySettings","tryReplayAction","scheduleCapture","isHeatmap","logger","hasVideoVoiceQuestion","RecordSurveyShown","userAgent","navigator","SurveyWillPresent","frameId","contentWinDocHead","hasOverlay","containerFrame","verifyViewVersion","viewSdkVersion","removeContainer","platformIsWeb","shouldCreateDirectEmbedContainer","createContainer","removeContainerOnClose","SurveyLifeCycle","state","SurveyPresented","createFrame","config","apiURL","cards","configureExitOnOverlayClick","exit","CloseSurveyOnOverlayClick","eventEmitFn","fontFamily","fontFamilyURL","frame","mobileSDKVersion","previewKey","framePosition","desktopDisplay","placement","startingQuestionIdx","styleNonce","tabTitle","title","ulEvents","upchunkLibraryURL","viewDocument","viewWindow","visitorAttributes","externalUserId","viewStyles","feedbackCustomStyles","customStyles","__cfg","frameSrc","viewSDKURL","existingScript","getElementById","frameScript","scriptTag","nonce","makeSafeScriptTag","updateContainerDisplay","display","view","require","configure","HTMLScriptElement","surveyStatusPayload","isMobileSDK","windowWidth","windowDimensions","FRAME_ID","MARGIN","isFeedbackSlider","dataset","studyId","loadingContainer","getLoadingContainer","initiator","removeIFrameEventListeners","SurveyClosed","parseInt","SurveyWillClose","removeAllListeners","configureFrame","defaultFrameStyle","bottom","border","backgroundColor","zIndex","transition","styleConfig","showFeedbackCenter","framePositionStyle","maxHeight","overlayStyleMobile","setCenterModalPosition","margin","containerStyle","overflow","overlayStyleConfig","overlayStyle","setupIFrameEventListeners","firedHeight","setHeight","SurveyHeight","contentFrameHeight","firedWidth","setWidth","SurveyWidth","contentFrameWidth","exitOnOverlayClickMobile","exitOnOverlayClick","onclick","contentWinDoc","write","close","iframeBody","alignItems","eventListeners","SurveyFadingOut","off","MATCHERS_BY_TYPE","notContains","exactly","notExactly","legacy","checkUrlMatch","matchType","matcher","doesUrlMatch","checkUrlStillMatching","pageUrlEvents","currEvent","isHTMLElement","isTargetElement","HTMLElement","SVGElement","setSurveyStyles","elementId","styleString","styleTag","newStyleTag","getMinHeight","calculatedHeight","questionBody","scrollableHeight","scrollHeight","getHorizontalPaddingAndMargin","getComputedStyle","parseFloat","paddingLeft","paddingRight","marginLeft","marginRight","borderLeftWidth","borderRightWidth","calculateFrameDimensions","isDesktopWeb","isDirectEmbed","app","containerHeight","containerWidth","scrollableMinHeight","matrixGrid","setAppWidth","mainCard","mainContent","footer","topContainer","additional","containerStyles","marginHeight","marginTop","marginBottom","borderTopWidth","borderBottomWidth","scrollWidth","getFeedbackContainer","getLoadingSpinner","isSurveyOpen","isCenterModal","feedbackButton","loadingSurvey","currEventId","feedbackPlacement","FEEDBACK_PLACEMENTS","isFeedbackSurveyOpen","isErrorState","getFeedbackContainerWidth","moveFeedbackContainer","getWholeContainer","closeLoadingContainer","SurveyAppeared","hideLoadingAnimation","constructLoadingContainer","loadingAnimationDiv","disabled","getLoadingSpinnerContainer","loadingSpinner","role","innerHTML","openLoadingContainer","createFeedbackButton","feedbackButtonOptions","previewQuestionsJson","buttonTheme","feedbackLabel","surveyUuid","feedbackContainer","verticalPlacement","horizontalPlacement","feedbackButtonLabel","errorState","SurveyCloseRequested","FeedbackClosed","feedbackStudyInfo","createErrorState","feedbackErrorState","FeedbackButtonLoaded","feedbackLoading","isOnQuestionsTab","paragraph","ldIntegration","_ldData","optimizely","_optimizelyData","isOverride","experiments","exp","variation","newKey","transformExperimentId","experimentId","getAndSetWebOptimizelyExperiments","getExperimentStates","isActive","transformExperiments","expId","setOptimizelyExperiment","SprigQueue","ul","queue","flush","action","Function","actionName","actionFunc","enabled","disableChecking","WebMetricNames","onThresholdTripped","thresholdsByMetric","MetricsReporter","_isWebMetric","findExceededThreshold","collect","thresholds","valueExceedsThreshold","PerformanceMetrics","registerMetric","metric","reportAndRegister","report","initPerformanceReporting","reportingIntervalSeconds","postMetrics","setInterval","domSizeMetric","htmlCharsMetric","calcNumberOfDomNodes","firstElementChild","nextElementSibling","measureEventQueueLatency","intervalMs","reporter","performance","latency","nodeAddedMetric","nodeRemovedMetric","attributeChangeMetric","charDataMetric","countMap","countNodesRecursive","countNodeListRecursive","handleMutation","handleMutations","interval","initMetrics","isWeb","thresholdTrippedAction","isReplayRecording","disableRecording","metricName","initMutationMetrics","APP_MODES","dismissOnPageChangeEventTypes","sessionProvidedAttributes","EMAIL_ATTRIBUTE_KEY","PAGE_URL_EVENT_NAME","prevUrl","locationChangeHandler","interactiveEvents","dismissOnPageChange","navigation","localStorageUrl","loadCredentials","trackedUrl","trackPageView","removeInteractiveEventListener","addInteractiveEventListeners","checkPendingHeatmapsUrl","uploadReadyPendingCaptures","PageChange","INTERACTIVE_LISTENER_OPTIONS","handlersForActiveEvents","properties","combinedHandler","interactiveEventsHandler","envIdCredMap","fallbackToAnonVisitor","anonVisitorId","showSurveyCallback","calledFromApi","documentDescription","RecordPageView","description","referrer","pageTitle","shouldTrackPage","debugMode","metadata","_queue","bindTrackingEvents","historyRef","Backbone","history","pushState","ret","replaceState","getQuestions","submitAnswers","mode","searchParams","isMobile","previewLanguage","surveyid","surveytemplateid","surveyTemplateId","widgetInitialize","mute","currentIndex","randomIndex","floor","tmp","__enableUserLeapAPIActions","identifyAndTrackHelper","anonymousId","requireUserIdForTracking","trackStartUrl","optimizelyEnabled","OptimizelyIntegration","getAllOptimizelyExperiments","launchDarklyEnabled","LaunchDarklyIntegration","getAllLaunchDarklyVariations","eventProperties","RecordEvent","delayingSurvey","errorMessage","responseBody","invalidPreviewKey","shouldShowSurvey","trackStartUrlString","startUrl","currentURL","hostname","overrideSurveyStyles","apiActions","Override","_previewSurvey","_reviewSurvey","unmute","unpause","Closed","trackHistory","setAttributes","identifyAndSetAttributes","putUserBody","addSurveyListener","removeSurveyListener","clearUserReplayData","setPartnerAnonymousId","applyFeedbackStyles","button","parsedWidth","parsedHeight","SurveyDimensions","isPaused","_Sprig","jsonData","client","notificationCenter","addNotificationListener","experiment","insertExperiment","setLDFlagsVariations","setVisitorAttribute","setEmail","uploadEndpoint","uploadResponse","responseGroupUuid","eventDigest","_completeSessionReplay","pauseReplayRecording","isReplayPaused","recordReplayPaused","resumeReplayRecording","recordReplayResumed","recordFullSnapshot","extraInfo","bodyInfo","pde","screenWidth","screen","screenHeight","language","sprigInitializer","SprigLoggerCallback","URLSearchParams","load","outstandingTransactionLimit","appId","credentials","sampleRate","sampled","queueItems","cachedToken","remoteConfig","metricsReportingEnabled","mobileMetricsReportingEnabled","metricsReportingIntervalSeconds","metricThresholds","alwaysOnConfig","alwaysOnReplay","sdkVersion","maxDurationSeconds","SDKReady","metricsReportingInterval","metricsThresholds","maxMobileReplayDurationSeconds","mobileReplaySettings","UPDATES","attachEvent","SprigAPI","logoutUser","teardown","sprig","environmentId","apiMethodName","instanceOfAny","object","constructors","idbProxyableTypes","cursorAdvanceMethods","transactionDoneMap","transformCache","reverseTransformCache","idbProxyTraps","IDBTransaction","objectStoreNames","objectStore","replaceTraps","wrapFunction","IDBCursor","advance","continue","continuePrimaryKey","unwrap","request","transformCachableValue","tx","oncomplete","IDBDatabase","IDBObjectStore","IDBIndex","IDBRequest","onsuccess","deleteDB","blocked","indexedDB","deleteDatabase","onblocked","oldVersion","readMethods","writeMethods","cachedMethods","getMethod","targetFuncName","useIndex","isWrite","storeName","transaction","store","oldTraps","advanceMethodProps","methodMap","advanceResults","ittrProxiedCursorToOriginalProxy","cursorIteratorTraps","cachedFunc","iterate","cursor","openCursor","proxiedCursor","isIteratorProp","IframeMessages","semaphore","capacity","awaitingResolvers","activeCount","acquire","resolver","release","limit","markUploadComplete","etags","replayDuration","Attr","curNode","getXPath","comps","ownerElement","comp","ATTRIBUTE_NODE","PROCESSING_INSTRUCTION_NODE","cleanupText","userListenerOptions","interestingTagnames","interestingKeys","observerInitialized","recordCustomEvent","handleScroll","getElementAttributes","elementAttrs","getTargetElementAttributes","mergedAttributes","parentAttrs","handleClickEvent","ev","pointerDownTarget","elementAttributes","windowHeight","rect","xPath","handleKeydown","recordReloadIfUsed","getEntriesByType","nav","currentPageTitle","recordBackIfUsed","curUrl","debouncedScrollListener","scrollTarget","targetScrollWidth","targetClientWidth","targetScrollHeight","targetClientHeight","leftClickListener","rightClickListener","pointerDownListener","replayState","isRecording","scrollEventUuids","stopRecording","idbExists","IDBKeyRange","CompressionStream","sessionId","savedSessionId","generateUuid","getOrGenerateSessionId","markReplayRecordingDisabled","isReplayRecordingDisabled","rrwebRecord","recordOrUpdateScrollEvent","newX","newY","scrollEventUuid","db","replayStorage","openDB","scrollRecord","eventJson","newXGreater","newYGreater","put","teardownReplay","clearInterval","targetOrigin","errorsToNotReport","clearAndMarkDisabled","errMessage","currMessage","clearAll","outstandingTransactions","allSettled","wrapTransactionWithCounter","configuredLimit","transLimit","finally","getTransaction","trans","upgrade","blocking","terminated","openPromise","onupgradeneeded","newVersion","onclose","onversionchange","createObjectStore","keyPath","createIndex","chunkUploads","pendingCaptures","sid","only","keyValue","deleteRowsBefore","shouldDelete","upperBound","bound","getAllFromIndex","updateEventsExpiredAt","expiredAtMinutes","expiredAtValue","setMinutes","getMinutes","update","expiredAt","deleteChunkUploads","getAll","beforePresent","targetTimestamp","isBeforeType","captureParams","canUpload","uuids","eventBuffer","alwaysOnMetadata","expirationTimestamp","triggerSnapshotAction","uploadUrls","isInit","inUnload","pendingUrlPromiseResolvers","isUrlRequestInflight","isAlwaysOnActive","initAlwaysOn","sprigApiUrl","triggerSnapshot","forceInit","readStoredAlwaysOnInfo","periodicActionCheck","userInteractionSources","isEventUserInteraction","shouldUploadEventBuffer","fetchUrlsIfNeeded","firstTimestamp","urls","fetchUploadUrls","storedState","pendingEventTimestamp","uploadPendingEventsFromTime","parsedEvents","getEventsBetween","insertMetaEvent","getUploadUrl","uploadWithUrl","tryAndDisableOnFailure","encoder","TextEncoder","cs","writer","getWriter","bufferArray","encode","Response","readable","arrayBuffer","signedUrls","customMetadata","isValidFirstEvent","uploadArray","storeSessionInfo","timeAndReportAsyncAction","diff","timeAndReportAction","replayTimeThreshold","replayBatchDuration","lastEventTimestamp","numCapturesPendingStr","awaitingThrottledEventInsert","eventsToInsert","throttledInsertEvents","scheduleEventInsertion","populatedEvents","bulkAdd","startPeriodicDataCleanup","cleanupEventSeconds","cleanupChunkSeconds","cleanupPendingCaptureSeconds","cleanupInterval","intervalCheckForPendingCaptures","pendingCheckInterval","isCheckingPendingCaptures","numCapturesPendingInt","readyCaptures","getPendingCaptures","getEventsBatch","targetBeginning","targetEnd","validStartFound","batchDuration","replayStartIndex","isValidStart","isBeforeTargetBeginning","uploadChunks","chunks","etag","execute","chunkIndex","uploadUrl","http","status_code","statusText","updatePartial","markUploadCompleteIfFinished","chunksForUpload","getChunkUploadsByStatus","dedupedChunks","acc","curr","sort","c1","ETag","PartNumber","uploadAllUnfinishedChunks","unfinishedChunks","finishedUploadIds","getFileData","fileData","written","firstEventTime","lastEventTime","REPLAY_EVENT_LOOKBACK_SECONDS","eventStrs","combinedJson","encodedCloseBrace","getFileChunkAndUpload","minChunkSizeMb","numAllocatedChunks","fileSizeBytes","minChunkBytes","equallyDividedChunkSize","chunkSizeBytes","minimumChunkSizeMb","chunksToUpload","chunkToUpload","uploadIds","QuestionAnswered","markPendingCaptureToCanUpload","handleHeatmapCleanup","bufferTime","REPLAY_CHECKOUT_INTERVAL_SECONDS","expirationTimeLimitMinutes","deleteBySessionId","currPending","pendingForSurvey","inactivityInterval","markPendingHeatmapsReady","argsCopy","uuidsToMarkComplete","pendingCapture","estimate","quota","usage","availableGb","alwaysOnLookback","recordingDuration","limitInflightRequests","minDuration","setLimit","replayLibraryUrl","replayLibraryURL","isFirstEvent","lastMetaEventTimestamp","settings","recordEvent","msElapsed","replayModule","UpChunk","cardsGroup","groupId","card"],"mappings":"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","x_google_ignoreList":[0,1,3,4,5,6,10,35,36]}