@betterbugs/rrweb 2.0.0-alpha.21 → 2.0.0-alpha.22

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.
@@ -152,7 +152,7 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
152
152
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
153
153
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
154
154
  PERFORMANCE OF THIS SOFTWARE.
155
- ***************************************************************************** */function Sn(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var s,i,a=r.call(e),l=[];try{for(;(t===void 0||t-- >0)&&!(s=a.next()).done;)l.push(s.value)}catch(u){i={error:u}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(i)throw i.error}}return l}var He;(function(e){e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped"})(He||(He={}));var Co={type:"xstate.init"};function Kr(e){return e===void 0?[]:[].concat(e)}function ze(e){return{type:"xstate.assign",assignment:e}}function Cn(e,t){return typeof(e=typeof e=="string"&&t&&t[e]?t[e]:e)=="string"?{type:e}:typeof e=="function"?{type:e.name,exec:e}:e}function _t(e){return function(t){return e===t}}function Eo(e){return typeof e=="string"?{type:e}:e}function En(e,t){return{value:e,context:t,actions:[],changed:!1,matches:_t(e)}}function xn(e,t,r){var s=t,i=!1;return[e.filter(function(a){if(a.type==="xstate.assign"){i=!0;var l=Object.assign({},s);return typeof a.assignment=="function"?l=a.assignment(s,r):Object.keys(a.assignment).forEach(function(u){l[u]=typeof a.assignment[u]=="function"?a.assignment[u](s,r):a.assignment[u]}),s=l,!1}return!0}),s,i]}function xo(e,t){t===void 0&&(t={});var r=Sn(xn(Kr(e.states[e.initial].entry).map(function(l){return Cn(l,t.actions)}),e.context,Co),2),s=r[0],i=r[1],a={config:e,_options:t,initialState:{value:e.initial,actions:s,context:i,matches:_t(e.initial)},transition:function(l,u){var o,c,n=typeof l=="string"?{value:l,context:e.context}:l,d=n.value,h=n.context,f=Eo(u),m=e.states[d];if(m.on){var p=Kr(m.on[f.type]);try{for(var g=function(k){var J=typeof Symbol=="function"&&Symbol.iterator,te=J&&k[J],Z=0;if(te)return te.call(k);if(k&&typeof k.length=="number")return{next:function(){return k&&Z>=k.length&&(k=void 0),{value:k&&k[Z++],done:!k}}};throw new TypeError(J?"Object is not iterable.":"Symbol.iterator is not defined.")}(p),w=g.next();!w.done;w=g.next()){var b=w.value;if(b===void 0)return En(d,h);var y=typeof b=="string"?{target:b}:b,C=y.target,v=y.actions,S=v===void 0?[]:v,E=y.cond,R=E===void 0?function(){return!0}:E,I=C===void 0,N=C!=null?C:d,F=e.states[N];if(R(h,f)){var T=Sn(xn((I?Kr(S):[].concat(m.exit,S,F.entry).filter(function(k){return k})).map(function(k){return Cn(k,a._options.actions)}),h,f),3),x=T[0],ue=T[1],ae=T[2],V=C!=null?C:d;return{value:V,context:ue,actions:x,changed:C!==d||x.length>0||ae,matches:_t(V)}}}}catch(k){o={error:k}}finally{try{w&&!w.done&&(c=g.return)&&c.call(g)}finally{if(o)throw o.error}}}return En(d,h)}};return a}var Rn=function(e,t){return e.actions.forEach(function(r){var s=r.exec;return s&&s(e.context,t)})};function Ro(e){var t=e.initialState,r=He.NotStarted,s=new Set,i={_machine:e,send:function(a){r===He.Running&&(t=e.transition(t,a),Rn(t,Eo(a)),s.forEach(function(l){return l(t)}))},subscribe:function(a){return s.add(a),a(t),{unsubscribe:function(){return s.delete(a)}}},start:function(a){if(a){var l=typeof a=="object"?a:{context:e.config.context,value:a};t={value:l.value,actions:[],context:l.context,matches:_t(l.value)}}return r=He.Running,Rn(t,Co),i},stop:function(){return r=He.Stopped,s.clear(),i},get state(){return t},get status(){return r}};return i}function Tu(e,t){for(let r=e.length-1;r>=0;r--){const s=e[r];if(s.type===_.Meta&&s.timestamp<=t)return e.slice(r)}return e}function _u(e,{getCastFn:t,applyEventsSynchronously:r,emitter:s}){const i=xo({id:"player",context:e,initial:"paused",states:{playing:{on:{PAUSE:{target:"paused",actions:["pause"]},CAST_EVENT:{target:"playing",actions:"castEvent"},END:{target:"paused",actions:["resetLastPlayedEvent","pause"]},ADD_EVENT:{target:"playing",actions:["addEvent"]}}},paused:{on:{PLAY:{target:"playing",actions:["recordTimeOffset","play"]},CAST_EVENT:{target:"paused",actions:"castEvent"},TO_LIVE:{target:"live",actions:["startLive"]},ADD_EVENT:{target:"paused",actions:["addEvent"]}}},live:{on:{ADD_EVENT:{target:"live",actions:["addEvent"]},CAST_EVENT:{target:"live",actions:["castEvent"]}}}}},{actions:{castEvent:ze({lastPlayedEvent:(a,l)=>l.type==="CAST_EVENT"?l.payload.event:a.lastPlayedEvent}),recordTimeOffset:ze((a,l)=>{let u=a.timeOffset;return"payload"in l&&"timeOffset"in l.payload&&(u=l.payload.timeOffset),se(P({},a),{timeOffset:u,baselineTime:a.events[0].timestamp+u})}),play(a){var l;const{timer:u,events:o,baselineTime:c,lastPlayedEvent:n}=a;u.clear();for(const m of o)vn(m,c);const d=Tu(o,c);let h=n==null?void 0:n.timestamp;(n==null?void 0:n.type)===_.IncrementalSnapshot&&n.data.source===A.MouseMove&&(h=n.timestamp+((l=n.data.positions[0])==null?void 0:l.timeOffset)),c<(h||0)&&s.emit(z.PlayBack);const f=new Array;for(const m of d)if(!(h&&h<c&&(m.timestamp<=h||m===n)))if(m.timestamp<c)f.push(m);else{const p=t(m,!1);u.addAction({doAction:()=>{p()},delay:m.delay})}r(f),s.emit(z.Flush),u.start()},pause(a){a.timer.clear()},resetLastPlayedEvent:ze(a=>se(P({},a),{lastPlayedEvent:null})),startLive:ze({baselineTime:(a,l)=>(a.timer.start(),l.type==="TO_LIVE"&&l.payload.baselineTime?l.payload.baselineTime:Date.now())}),addEvent:ze((a,l)=>{const{baselineTime:u,timer:o,events:c}=a;if(l.type==="ADD_EVENT"){const{event:n}=l.payload;vn(n,u);let d=c.length-1;if(!c[d]||c[d].timestamp<=n.timestamp)c.push(n);else{let m=-1,p=0;for(;p<=d;){const g=Math.floor((p+d)/2);c[g].timestamp<=n.timestamp?p=g+1:d=g-1}m===-1&&(m=p),c.splice(m,0,n)}const h=n.timestamp<u,f=t(n,h);h?f():o.isActive()&&o.addAction({doAction:()=>{f()},delay:n.delay})}return se(P({},a),{events:c})})}});return Ro(i)}function ku(e){const t=xo({id:"speed",context:e,initial:"normal",states:{normal:{on:{FAST_FORWARD:{target:"skipping",actions:["recordSpeed","setSpeed"]},SET_SPEED:{target:"normal",actions:["setSpeed"]}}},skipping:{on:{BACK_TO_NORMAL:{target:"normal",actions:["restoreSpeed"]},SET_SPEED:{target:"normal",actions:["setSpeed"]}}}}},{actions:{setSpeed:(r,s)=>{"payload"in s&&r.timer.setSpeed(s.payload.speed)},recordSpeed:ze({normalSpeed:r=>r.timer.speed}),restoreSpeed:r=>{r.timer.setSpeed(r.normalSpeed)}}});return Ro(t)}const Pu=e=>[`.${e} { background: currentColor }`,"noscript { display: none !important; }"],Mn=new Map;function Mo(e,t){let r=Mn.get(e);return r||(r=new Map,Mn.set(e,r)),r.has(t)||r.set(t,[]),r.get(t)}function De(e,t,r){return async s=>{if(s&&typeof s=="object"&&"rr_type"in s)if(r&&(r.isUnchanged=!1),s.rr_type==="ImageBitmap"&&"args"in s){const i=await De(e,t,r)(s.args);return await createImageBitmap.apply(null,i)}else if("index"in s){if(r||t===null)return s;const{rr_type:i,index:a}=s;return Mo(t,i)[a]}else if("args"in s){const{rr_type:i,args:a}=s,l=window[i];return new l(...await Promise.all(a.map(De(e,t,r))))}else{if("base64"in s)return vu(s.base64);if("src"in s){const i=e.get(s.src);if(i)return i;{const a=new Image;return a.src=s.src,e.set(s.src,a),a}}else if("data"in s&&s.rr_type==="Blob"){const i=await Promise.all(s.data.map(De(e,t,r)));return new Blob(i,{type:s.type})}}else if(Array.isArray(s))return await Promise.all(s.map(De(e,t,r)));return s}}function Lu(e,t){try{return t===Ce.WebGL?e.getContext("webgl")||e.getContext("experimental-webgl"):e.getContext("webgl2")}catch(r){return null}}const Fu=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject"];function Uu(e,t){if(!(t!=null&&t.constructor))return;const{name:r}=t.constructor;if(!Fu.includes(r))return;const s=Mo(e,r);s.includes(t)||s.push(t)}async function Bu({mutation:e,target:t,type:r,imageMap:s,errorHandler:i}){try{const a=Lu(t,r);if(!a)return;if(e.setter){a[e.property]=e.args[0];return}const l=a[e.property],u=await Promise.all(e.args.map(De(s,a))),o=l.apply(a,u);Uu(a,o);const c=!1}catch(a){i(e,a)}}async function $u({event:e,mutations:t,target:r,imageMap:s,errorHandler:i}){const a=r.getContext("2d");if(!a){i(t[0],new Error("Canvas context is null"));return}const l=t.map(async o=>Promise.all(o.args.map(De(s,a))));(await Promise.all(l)).forEach((o,c)=>{const n=t[c];try{if(n.setter){a[n.property]=n.args[0];return}const d=a[n.property];n.property==="drawImage"&&typeof n.args[0]=="string"?(s.get(e),d.apply(a,n.args)):d.apply(a,o)}catch(d){i(n,d)}})}async function os({event:e,mutation:t,target:r,imageMap:s,canvasEventMap:i,errorHandler:a}){try{const l=i.get(e)||t,u="commands"in l?l.commands:[l];if([Ce.WebGL,Ce.WebGL2].includes(t.type)){for(let o=0;o<u.length;o++){const c=u[o];await Bu({mutation:c,type:t.type,target:r,imageMap:s,errorHandler:a})}return}await $u({event:e,mutations:u,target:r,imageMap:s,errorHandler:a})}catch(l){a(t,l)}}class Wu{constructor(t){M(this,"mediaMap",new Map),M(this,"warn"),M(this,"service"),M(this,"speedService"),M(this,"emitter"),M(this,"getCurrentTime"),M(this,"metadataCallbackMap",new Map),this.warn=t.warn,this.service=t.service,this.speedService=t.speedService,this.emitter=t.emitter,this.getCurrentTime=t.getCurrentTime,this.emitter.on(z.Start,this.start.bind(this)),this.emitter.on(z.SkipStart,this.start.bind(this)),this.emitter.on(z.Pause,this.pause.bind(this)),this.emitter.on(z.Finish,this.pause.bind(this)),this.speedService.subscribe(()=>{this.syncAllMediaElements()})}syncAllMediaElements(t={pause:!1}){this.mediaMap.forEach((r,s)=>{this.syncTargetWithState(s),t.pause&&s.pause()})}start(){this.syncAllMediaElements()}pause(){this.syncAllMediaElements({pause:!0})}seekTo({time:t,target:r,mediaState:s}){if(s.isPlaying){const a=(t-s.lastInteractionTimeOffset)/1e3*s.playbackRate,l="duration"in r&&r.duration;if(Number.isNaN(l)){this.waitForMetadata(r);return}let u=s.currentTimeAtLastInteraction+a;r.loop&&l!==!1&&(u=u%l),r.currentTime=u}else r.pause(),r.currentTime=s.currentTimeAtLastInteraction}waitForMetadata(t){if(this.metadataCallbackMap.has(t)||!("addEventListener"in t))return;const r=()=>{this.metadataCallbackMap.delete(t);const s=this.mediaMap.get(t);s&&this.seekTo({time:this.getCurrentTime(),target:t,mediaState:s})};this.metadataCallbackMap.set(t,r),t.addEventListener("loadedmetadata",r,{once:!0})}getMediaStateFromMutation({target:t,timeOffset:r,mutation:s}){var f,m,p,g,w;const i=this.mediaMap.get(t),{type:a,playbackRate:l,currentTime:u,muted:o,volume:c,loop:n}=s;return{isPlaying:a===Oe.Play||a!==Oe.Pause&&((i==null?void 0:i.isPlaying)||t.getAttribute("autoplay")!==null),currentTimeAtLastInteraction:(f=u!=null?u:i==null?void 0:i.currentTimeAtLastInteraction)!=null?f:0,lastInteractionTimeOffset:r,playbackRate:(m=l!=null?l:i==null?void 0:i.playbackRate)!=null?m:1,volume:(p=c!=null?c:i==null?void 0:i.volume)!=null?p:1,muted:(g=o!=null?o:i==null?void 0:i.muted)!=null?g:t.getAttribute("muted")===null,loop:(w=n!=null?n:i==null?void 0:i.loop)!=null?w:t.getAttribute("loop")===null}}syncTargetWithState(t){const r=this.mediaMap.get(t);if(!r)return;const{muted:s,loop:i,volume:a,isPlaying:l}=r,u=this.service.state.matches("paused"),o=r.playbackRate*this.speedService.state.context.timer.speed;try{this.seekTo({time:this.getCurrentTime(),target:t,mediaState:r}),t.volume!==a&&(t.volume=a),t.muted=s,t.loop=i,t.playbackRate!==o&&(t.playbackRate=o),l&&!u?t.play():t.pause()}catch(c){this.warn(`Failed to replay media interactions: ${c.message||c}`)}}addMediaElements(t,r,s){if(!["AUDIO","VIDEO"].includes(t.nodeName))return;const i=t,a=s.getMeta(i);if(!a||!("attributes"in a))return;const l=this.service.state.matches("paused"),u=a.attributes;let o=!1;u.rr_mediaState?o=u.rr_mediaState==="played":o=i.getAttribute("autoplay")!==null,o&&l&&i.pause();let c=1;typeof u.rr_mediaPlaybackRate=="number"&&(c=u.rr_mediaPlaybackRate);let n=!1;typeof u.rr_mediaMuted=="boolean"?n=u.rr_mediaMuted:n=i.getAttribute("muted")!==null;let d=!1;typeof u.rr_mediaLoop=="boolean"?d=u.rr_mediaLoop:d=i.getAttribute("loop")!==null;let h=1;typeof u.rr_mediaVolume=="number"&&(h=u.rr_mediaVolume);let f=0;typeof u.rr_mediaCurrentTime=="number"&&(f=u.rr_mediaCurrentTime),this.mediaMap.set(i,{isPlaying:o,currentTimeAtLastInteraction:f,lastInteractionTimeOffset:r,playbackRate:c,volume:h,muted:n,loop:d}),this.syncTargetWithState(i)}mediaMutation({target:t,timeOffset:r,mutation:s}){this.mediaMap.set(t,this.getMediaStateFromMutation({target:t,timeOffset:r,mutation:s})),this.syncTargetWithState(t)}isSupportedMediaElement(t){return["AUDIO","VIDEO"].includes(t.nodeName)}reset(){this.mediaMap.clear()}}function vt(e,t){if(e.nodeName!=="DIALOG"||e instanceof ye)return;const r=e,s=r.open,i=s&&r.matches("dialog:modal"),a=r.getAttribute("rr_open_mode"),l=typeof(t==null?void 0:t.attributes.open)=="string"||typeof r.getAttribute("open")=="string",u=a==="modal";if(!(s&&!(i&&a==="non-modal"||!i&&u))){if(!r.isConnected){console.warn("dialog is not attached to the dom",r);return}s&&r.close(),l&&(u?r.showModal():r.show())}}function zu(e,t){if(e.nodeName!=="DIALOG"||e instanceof ye)return;const r=e;if(!r.isConnected){console.warn("dialog is not attached to the dom",r);return}t.attributes.open===null&&(r.removeAttribute("open"),r.removeAttribute("rr_open_mode"))}const qu=5*1e3,Vu=Iu,Nn="[replayer]",es={duration:500,lineCap:"round",lineWidth:3,strokeStyle:"red"};function On(e){return e.type==_.IncrementalSnapshot&&(e.data.source==A.TouchMove||e.data.source==A.MouseInteraction&&e.data.type==q.TouchStart)}class ju{constructor(t,r){if(M(this,"wrapper"),M(this,"iframe"),M(this,"service"),M(this,"speedService"),M(this,"config"),M(this,"usingVirtualDom",!1),M(this,"virtualDom",new Xe),M(this,"mouse"),M(this,"mouseTail",null),M(this,"tailPositions",[]),M(this,"emitter",Vu()),M(this,"nextUserInteractionEvent"),M(this,"legacy_missingNodeRetryMap",{}),M(this,"cache",Ii()),M(this,"imageMap",new Map),M(this,"canvasEventMap",new Map),M(this,"mirror",An()),M(this,"styleMirror",new Bs),M(this,"mediaManager"),M(this,"firstFullSnapshot",null),M(this,"newDocumentQueue",[]),M(this,"mousePos",null),M(this,"touchActive",null),M(this,"lastMouseDownEvent",null),M(this,"lastHoveredRootNode"),M(this,"lastSelectionData",null),M(this,"constructedStyleMutations",[]),M(this,"adoptedStyleSheets",[]),M(this,"handleResize",u=>{this.iframe.style.display="inherit";for(const o of[this.mouseTail,this.iframe])o&&(o.setAttribute("width",String(u.width)),o.setAttribute("height",String(u.height)))}),M(this,"applyEventsSynchronously",u=>{for(const o of u){switch(o.type){case _.DomContentLoaded:case _.Load:case _.Custom:continue;case _.FullSnapshot:case _.Meta:case _.Plugin:case _.IncrementalSnapshot:break}this.getCastFn(o,!0)()}}),M(this,"getCastFn",(u,o=!1)=>{let c;switch(u.type){case _.DomContentLoaded:case _.Load:break;case _.Custom:c=()=>{this.emitter.emit(z.CustomEvent,u)};break;case _.Meta:c=()=>this.emitter.emit(z.Resize,{width:u.data.width,height:u.data.height});break;case _.FullSnapshot:c=()=>{var d;if(this.firstFullSnapshot){if(this.firstFullSnapshot===u){this.firstFullSnapshot=!0;return}}else this.firstFullSnapshot=!0;this.mediaManager.reset(),this.styleMirror.reset(),this.rebuildFullSnapshot(u,o),(d=this.iframe.contentWindow)==null||d.scrollTo(u.data.initialOffset)};break;case _.IncrementalSnapshot:c=()=>{if(this.applyIncremental(u,o),!o&&(u===this.nextUserInteractionEvent&&(this.nextUserInteractionEvent=null,this.backToNormal()),this.config.skipInactive&&!this.nextUserInteractionEvent)){for(const d of this.service.state.context.events)if(!(d.timestamp<=u.timestamp)&&this.isUserInteraction(d)){d.delay-u.delay>this.config.inactivePeriodThreshold*this.speedService.state.context.timer.speed&&(this.nextUserInteractionEvent=d);break}if(this.nextUserInteractionEvent){const d=this.nextUserInteractionEvent.delay-u.delay,h={speed:Math.min(Math.round(d/qu),this.config.maxSpeed)};this.speedService.send({type:"FAST_FORWARD",payload:h}),this.emitter.emit(z.SkipStart,h)}}};break}return()=>{c&&c();for(const h of this.config.plugins||[])h.handler&&h.handler(u,o,{replayer:this});this.service.send({type:"CAST_EVENT",payload:{event:u}});const d=this.service.state.context.events.length-1;if(!this.config.liveMode&&u===this.service.state.context.events[d]){const h=()=>{d<this.service.state.context.events.length-1||(this.backToNormal(),this.service.send("END"),this.emitter.emit(z.Finish))};let f=50;u.type===_.IncrementalSnapshot&&u.data.source===A.MouseMove&&u.data.positions.length&&(f+=Math.max(0,-u.data.positions[0].timeOffset)),setTimeout(h,f)}this.emitter.emit(z.EventCast,u)}}),!(r!=null&&r.liveMode)&&t.length<2)throw new Error("Replayer need at least 2 events.");const s={speed:1,maxSpeed:360,root:document.body,loadTimeout:5e3,skipInactive:!1,inactivePeriodThreshold:10*1e3,showWarning:!0,showDebug:!1,blockClass:"rr-block",liveMode:!1,insertStyleRules:[],triggerFocus:!0,UNSAFE_replayCanvas:!1,pauseAnimation:!0,mouseTail:es,useVirtualDom:!0,logger:console};this.config=Object.assign({},s,r),this.handleResize=this.handleResize.bind(this),this.getCastFn=this.getCastFn.bind(this),this.applyEventsSynchronously=this.applyEventsSynchronously.bind(this),this.emitter.on(z.Resize,this.handleResize),this.setupDom();for(const u of this.config.plugins||[])u.getMirror&&u.getMirror({nodeMirror:this.mirror});this.emitter.on(z.Flush,()=>{if(this.usingVirtualDom){const u={mirror:this.mirror,applyCanvas:(o,c,n)=>{os({event:o,mutation:c,target:n,imageMap:this.imageMap,canvasEventMap:this.canvasEventMap,errorHandler:this.warnCanvasMutationFailed.bind(this)})},applyInput:this.applyInput.bind(this),applyScroll:this.applyScroll.bind(this),applyStyleSheetMutation:(o,c)=>{o.source===A.StyleSheetRule?this.applyStyleSheetRule(o,c):o.source===A.StyleDeclaration&&this.applyStyleDeclaration(o,c)},afterAppend:(o,c)=>{for(const n of this.config.plugins||[])n.onBuild&&n.onBuild(o,{id:c,replayer:this})}};if(this.iframe.contentDocument)try{Ot(this.iframe.contentDocument,this.virtualDom,u,this.virtualDom.mirror)}catch(o){console.warn(o)}if(this.virtualDom.destroyTree(),this.usingVirtualDom=!1,Object.keys(this.legacy_missingNodeRetryMap).length)for(const o in this.legacy_missingNodeRetryMap)try{const c=this.legacy_missingNodeRetryMap[o],n=It(c.node,this.mirror,this.virtualDom.mirror);Ot(n,c.node,u,this.virtualDom.mirror),c.node=n}catch(c){this.warn(c)}this.constructedStyleMutations.forEach(o=>{this.applyStyleSheetMutation(o)}),this.constructedStyleMutations=[],this.adoptedStyleSheets.forEach(o=>{this.applyAdoptedStyleSheet(o)}),this.adoptedStyleSheets=[]}if(this.mousePos&&(this.moveAndHover(this.mousePos.x,this.mousePos.y,this.mousePos.id,!0,this.mousePos.debugData),this.mousePos=null),this.touchActive===!0?this.mouse.classList.add("touch-active"):this.touchActive===!1&&this.mouse.classList.remove("touch-active"),this.touchActive=null,this.lastMouseDownEvent){const[u,o]=this.lastMouseDownEvent;u.dispatchEvent(o)}this.lastMouseDownEvent=null,this.lastSelectionData&&(this.applySelection(this.lastSelectionData),this.lastSelectionData=null)}),this.emitter.on(z.PlayBack,()=>{this.firstFullSnapshot=null,this.mirror.reset(),this.styleMirror.reset(),this.mediaManager.reset()});const i=new Au([],{speed:this.config.speed});this.service=_u({events:t.map(u=>r&&r.unpackFn?r.unpackFn(u):u).sort((u,o)=>u.timestamp-o.timestamp),timer:i,timeOffset:0,baselineTime:0,lastPlayedEvent:null},{getCastFn:this.getCastFn,applyEventsSynchronously:this.applyEventsSynchronously,emitter:this.emitter}),this.service.start(),this.service.subscribe(u=>{this.emitter.emit(z.StateChange,{player:u})}),this.speedService=ku({normalSpeed:-1,timer:i}),this.speedService.start(),this.speedService.subscribe(u=>{this.emitter.emit(z.StateChange,{speed:u})}),this.mediaManager=new Wu({warn:this.warn.bind(this),service:this.service,speedService:this.speedService,emitter:this.emitter,getCurrentTime:this.getCurrentTime.bind(this)});const a=this.service.state.context.events.find(u=>u.type===_.Meta),l=this.service.state.context.events.find(u=>u.type===_.FullSnapshot);if(a){const{width:u,height:o}=a.data;setTimeout(()=>{this.emitter.emit(z.Resize,{width:u,height:o})},0)}l&&setTimeout(()=>{var u;this.firstFullSnapshot||(this.firstFullSnapshot=l,this.rebuildFullSnapshot(l),(u=this.iframe.contentWindow)==null||u.scrollTo(l.data.initialOffset))},1),this.service.state.context.events.find(On)&&this.mouse.classList.add("touch-device")}get timer(){return this.service.state.context.timer}on(t,r){return this.emitter.on(t,r),this}off(t,r){return this.emitter.off(t,r),this}setConfig(t){Object.keys(t).forEach(r=>{t[r],this.config[r]=t[r]}),this.config.skipInactive||this.backToNormal(),typeof t.speed!="undefined"&&this.speedService.send({type:"SET_SPEED",payload:{speed:t.speed}}),typeof t.mouseTail!="undefined"&&(t.mouseTail===!1?this.mouseTail&&(this.mouseTail.style.display="none"):(this.mouseTail||(this.mouseTail=document.createElement("canvas"),this.mouseTail.width=Number.parseFloat(this.iframe.width),this.mouseTail.height=Number.parseFloat(this.iframe.height),this.mouseTail.classList.add("replayer-mouse-tail"),this.wrapper.insertBefore(this.mouseTail,this.iframe)),this.mouseTail.style.display="inherit"))}getMetaData(){const t=this.service.state.context.events[0],r=this.service.state.context.events[this.service.state.context.events.length-1];return{startTime:t.timestamp,endTime:r.timestamp,totalTime:r.timestamp-t.timestamp}}getCurrentTime(){return this.timer.timeOffset+this.getTimeOffset()}getTimeOffset(){const{baselineTime:t,events:r}=this.service.state.context;return t-r[0].timestamp}getMirror(){return this.mirror}play(t=0){var r,s;this.service.state.matches("paused")?this.service.send({type:"PLAY",payload:{timeOffset:t}}):(this.service.send({type:"PAUSE"}),this.service.send({type:"PLAY",payload:{timeOffset:t}})),(s=(r=this.iframe.contentDocument)==null?void 0:r.getElementsByTagName("html")[0])==null||s.classList.remove("rrweb-paused"),this.emitter.emit(z.Start)}pause(t){var r,s;t===void 0&&this.service.state.matches("playing")&&this.service.send({type:"PAUSE"}),typeof t=="number"&&(this.play(t),this.service.send({type:"PAUSE"})),(s=(r=this.iframe.contentDocument)==null?void 0:r.getElementsByTagName("html")[0])==null||s.classList.add("rrweb-paused"),this.emitter.emit(z.Pause)}resume(t=0){this.warn("The 'resume' was deprecated in 1.0. Please use 'play' method which has the same interface."),this.play(t),this.emitter.emit(z.Resume)}destroy(){this.pause(),this.mirror.reset(),this.styleMirror.reset(),this.mediaManager.reset(),this.config.root.removeChild(this.wrapper),this.emitter.emit(z.Destroy)}startLive(t){this.service.send({type:"TO_LIVE",payload:{baselineTime:t}})}addEvent(t){const r=this.config.unpackFn?this.config.unpackFn(t):t;On(r)&&this.mouse.classList.add("touch-device"),Promise.resolve().then(()=>this.service.send({type:"ADD_EVENT",payload:{event:r}}))}enableInteract(){this.iframe.setAttribute("scrolling","auto"),this.iframe.style.pointerEvents="auto"}disableInteract(){this.iframe.setAttribute("scrolling","no"),this.iframe.style.pointerEvents="none"}resetCache(){this.cache=Ii()}setupDom(){this.wrapper=document.createElement("div"),this.wrapper.classList.add("replayer-wrapper"),this.config.root.appendChild(this.wrapper),this.mouse=document.createElement("div"),this.mouse.classList.add("replayer-mouse"),this.wrapper.appendChild(this.mouse),this.config.mouseTail!==!1&&(this.mouseTail=document.createElement("canvas"),this.mouseTail.classList.add("replayer-mouse-tail"),this.mouseTail.style.display="inherit",this.wrapper.appendChild(this.mouseTail)),this.iframe=document.createElement("iframe");const t=["allow-same-origin"];this.config.UNSAFE_replayCanvas&&t.push("allow-scripts"),this.iframe.style.display="none",this.iframe.setAttribute("sandbox",t.join(" ")),this.disableInteract(),this.wrapper.appendChild(this.iframe),this.iframe.contentWindow&&this.iframe.contentDocument&&(Du(this.iframe.contentWindow,this.iframe.contentDocument),Ps(this.iframe.contentWindow))}rebuildFullSnapshot(t,r=!1){if(!this.iframe.contentDocument)return this.warn("Looks like your replayer has been destroyed.");Object.keys(this.legacy_missingNodeRetryMap).length&&this.warn("Found unresolved missing node map",this.legacy_missingNodeRetryMap),this.legacy_missingNodeRetryMap={};const s=[],i=new Set,a=(o,c)=>{if(o.nodeName==="DIALOG"&&i.add(o),this.collectIframeAndAttachDocument(s,o),this.mediaManager.isSupportedMediaElement(o)){const{events:n}=this.service.state.context;this.mediaManager.addMediaElements(o,t.timestamp-n[0].timestamp,this.mirror)}for(const n of this.config.plugins||[])n.onBuild&&n.onBuild(o,{id:c,replayer:this})};this.usingVirtualDom&&(this.virtualDom.destroyTree(),this.usingVirtualDom=!1),this.mirror.reset(),Ha(t.data.node,{doc:this.iframe.contentDocument,afterAppend:a,cache:this.cache,mirror:this.mirror}),a(this.iframe.contentDocument,t.data.node.id);for(const{mutationInQueue:o,builtNode:c}of s)this.attachDocumentToIframe(o,c),this.newDocumentQueue=this.newDocumentQueue.filter(n=>n!==o);const{documentElement:l,head:u}=this.iframe.contentDocument;this.insertStyleRules(l,u),i.forEach(o=>vt(o)),this.service.state.matches("playing")||this.iframe.contentDocument.getElementsByTagName("html")[0].classList.add("rrweb-paused"),this.emitter.emit(z.FullsnapshotRebuilded,t),r||this.waitForStylesheetLoad(),this.config.UNSAFE_replayCanvas&&this.preloadAllImages()}insertStyleRules(t,r){var s;const i=Pu(this.config.blockClass).concat(this.config.insertStyleRules);if(this.config.pauseAnimation&&i.push("html.rrweb-paused *, html.rrweb-paused *:before, html.rrweb-paused *:after { animation-play-state: paused !important; }"),!!i.length)if(this.usingVirtualDom){const a=this.virtualDom.createElement("style");this.virtualDom.mirror.add(a,no(a,this.virtualDom.unserializedId)),t.insertBefore(a,r),a.rules.push({source:A.StyleSheetRule,adds:i.map((l,u)=>({rule:l,index:u}))})}else{const a=document.createElement("style");t.insertBefore(a,r);for(let l=0;l<i.length;l++)(s=a.sheet)==null||s.insertRule(i[l],l)}}attachDocumentToIframe(t,r){const s=this.usingVirtualDom?this.virtualDom.mirror:this.mirror,i=[],a=new Set,l=(u,o)=>{u.nodeName==="DIALOG"&&a.add(u),this.collectIframeAndAttachDocument(i,u);const c=s.getMeta(u);if((c==null?void 0:c.type)===Se.Element&&(c==null?void 0:c.tagName.toUpperCase())==="HTML"){const{documentElement:n,head:d}=r.contentDocument;this.insertStyleRules(n,d)}if(!this.usingVirtualDom)for(const n of this.config.plugins||[])n.onBuild&&n.onBuild(u,{id:o,replayer:this})};tt(t.node,{doc:r.contentDocument,mirror:s,hackCss:!0,skipChild:!1,afterAppend:l,cache:this.cache}),l(r.contentDocument,t.node.id);for(const{mutationInQueue:u,builtNode:o}of i)this.attachDocumentToIframe(u,o),this.newDocumentQueue=this.newDocumentQueue.filter(c=>c!==u);a.forEach(u=>vt(u))}collectIframeAndAttachDocument(t,r){if(Ye(r,this.mirror)){const s=this.newDocumentQueue.find(i=>i.parentId===this.mirror.getId(r));s&&t.push({mutationInQueue:s,builtNode:r})}}waitForStylesheetLoad(){var t;const r=(t=this.iframe.contentDocument)==null?void 0:t.head;if(r){const s=new Set;let i,a=this.service.state;const l=()=>{a=this.service.state};this.emitter.on(z.Start,l),this.emitter.on(z.Pause,l);const u=()=>{this.emitter.off(z.Start,l),this.emitter.off(z.Pause,l)};r.querySelectorAll('link[rel="stylesheet"]').forEach(o=>{if(!o.sheet){s.add(o);const c=()=>{s.delete(o),s.size===0&&i!==-1&&(a.matches("playing")&&this.play(this.getCurrentTime()),this.emitter.emit(z.LoadStylesheetEnd),i&&clearTimeout(i),u())};o.addEventListener("load",c),o.addEventListener("error",c)}}),s.size>0&&(this.service.send({type:"PAUSE"}),this.emitter.emit(z.LoadStylesheetStart),i=setTimeout(()=>{a.matches("playing")&&this.play(this.getCurrentTime()),i=-1,u()},this.config.loadTimeout))}}async preloadAllImages(){const t=[];for(const r of this.service.state.context.events)r.type===_.IncrementalSnapshot&&r.data.source===A.CanvasMutation&&(t.push(this.deserializeAndPreloadCanvasEvents(r.data,r)),("commands"in r.data?r.data.commands:[r.data]).forEach(i=>{this.preloadImages(i,r)}));return Promise.all(t)}preloadImages(t,r){if(t.property==="drawImage"&&typeof t.args[0]=="string"&&!this.imageMap.has(r)){const s=document.createElement("canvas"),i=s.getContext("2d"),a=i==null?void 0:i.createImageData(s.width,s.height);i==null||i.putImageData(a,0,0)}}async deserializeAndPreloadCanvasEvents(t,r){if(!this.canvasEventMap.has(r)){const s={isUnchanged:!0};if("commands"in t){const i=await Promise.all(t.commands.map(async a=>{const l=await Promise.all(a.args.map(De(this.imageMap,null,s)));return se(P({},a),{args:l})}));s.isUnchanged===!1&&this.canvasEventMap.set(r,se(P({},t),{commands:i}))}else{const i=await Promise.all(t.args.map(De(this.imageMap,null,s)));s.isUnchanged===!1&&this.canvasEventMap.set(r,se(P({},t),{args:i}))}}}applyIncremental(t,r){var s,i,a;const{data:l}=t;switch(l.source){case A.Mutation:{try{this.applyMutation(l,r)}catch(u){this.warn(`Exception in mutation ${u.message||u}`,l)}break}case A.Drag:case A.TouchMove:case A.MouseMove:if(r){const u=l.positions[l.positions.length-1];this.mousePos={x:u.x,y:u.y,id:u.id,debugData:l}}else l.positions.forEach(u=>{const o={doAction:()=>{this.moveAndHover(u.x,u.y,u.id,r,l)},delay:u.timeOffset+t.timestamp-this.service.state.context.baselineTime};this.timer.addAction(o)}),this.timer.addAction({doAction(){},delay:t.delay-((s=l.positions[0])==null?void 0:s.timeOffset)});break;case A.MouseInteraction:{if(l.id===-1)break;const u=new Event(Ae(q[l.type])),o=this.mirror.getNode(l.id);if(!o)return this.debugNodeNotFound(l,l.id);this.emitter.emit(z.MouseInteraction,{type:l.type,target:o});const{triggerFocus:c}=this.config;switch(l.type){case q.Blur:"blur"in o&&o.blur();break;case q.Focus:c&&o.focus&&o.focus({preventScroll:!0});break;case q.Click:case q.TouchStart:case q.TouchEnd:case q.MouseDown:case q.MouseUp:r?(l.type===q.TouchStart?this.touchActive=!0:l.type===q.TouchEnd&&(this.touchActive=!1),l.type===q.MouseDown?this.lastMouseDownEvent=[o,u]:l.type===q.MouseUp&&(this.lastMouseDownEvent=null),this.mousePos={x:l.x||0,y:l.y||0,id:l.id,debugData:l}):(l.type===q.TouchStart&&(this.tailPositions.length=0),this.moveAndHover(l.x||0,l.y||0,l.id,r,l),l.type===q.Click?(this.mouse.classList.remove("active"),this.mouse.offsetWidth,this.mouse.classList.add("active")):l.type===q.TouchStart?(this.mouse.offsetWidth,this.mouse.classList.add("touch-active")):l.type===q.TouchEnd?this.mouse.classList.remove("touch-active"):o.dispatchEvent(u));break;case q.TouchCancel:r?this.touchActive=!1:this.mouse.classList.remove("touch-active");break;default:o.dispatchEvent(u)}break}case A.Scroll:{if(l.id===-1)break;if(this.usingVirtualDom){const u=this.virtualDom.mirror.getNode(l.id);if(!u)return this.debugNodeNotFound(l,l.id);u.scrollData=l;break}this.applyScroll(l,r);break}case A.ViewportResize:this.emitter.emit(z.Resize,{width:l.width,height:l.height});break;case A.Input:{if(l.id===-1)break;if(this.usingVirtualDom){const u=this.virtualDom.mirror.getNode(l.id);if(!u)return this.debugNodeNotFound(l,l.id);u.inputData=l;break}this.applyInput(l);break}case A.MediaInteraction:{const u=this.usingVirtualDom?this.virtualDom.mirror.getNode(l.id):this.mirror.getNode(l.id);if(!u)return this.debugNodeNotFound(l,l.id);const o=u,{events:c}=this.service.state.context;this.mediaManager.mediaMutation({target:o,timeOffset:t.timestamp-c[0].timestamp,mutation:l});break}case A.StyleSheetRule:case A.StyleDeclaration:{this.usingVirtualDom?l.styleId?this.constructedStyleMutations.push(l):l.id&&((i=this.virtualDom.mirror.getNode(l.id))==null||i.rules.push(l)):this.applyStyleSheetMutation(l);break}case A.CanvasMutation:{if(!this.config.UNSAFE_replayCanvas)return;if(this.usingVirtualDom){const u=this.virtualDom.mirror.getNode(l.id);if(!u)return this.debugNodeNotFound(l,l.id);u.canvasMutations.push({event:t,mutation:l})}else{const u=this.mirror.getNode(l.id);if(!u)return this.debugNodeNotFound(l,l.id);os({event:t,mutation:l,target:u,imageMap:this.imageMap,canvasEventMap:this.canvasEventMap,errorHandler:this.warnCanvasMutationFailed.bind(this)})}break}case A.Font:{try{const u=new FontFace(l.family,l.buffer?new Uint8Array(JSON.parse(l.fontSource)):l.fontSource,l.descriptors);(a=this.iframe.contentDocument)==null||a.fonts.add(u)}catch(u){this.warn(u)}break}case A.Selection:{if(r){this.lastSelectionData=l;break}this.applySelection(l);break}case A.AdoptedStyleSheet:{this.usingVirtualDom?this.adoptedStyleSheets.push(l):this.applyAdoptedStyleSheet(l);break}}}applyMutation(t,r){if(this.config.useVirtualDom&&!this.usingVirtualDom&&r&&(this.usingVirtualDom=!0,Pl(this.iframe.contentDocument,this.mirror,this.virtualDom),Object.keys(this.legacy_missingNodeRetryMap).length))for(const c in this.legacy_missingNodeRetryMap)try{const n=this.legacy_missingNodeRetryMap[c],d=io(n.node,this.virtualDom,this.mirror);d&&(n.node=d)}catch(n){this.warn(n)}const s=this.usingVirtualDom?this.virtualDom.mirror:this.mirror;t.removes=t.removes.filter(c=>s.getNode(c.id)?!0:(this.warnNodeNotFound(t,c.id),!1)),t.removes.forEach(c=>{var n;const d=s.getNode(c.id);if(!d)return;let h=s.getNode(c.parentId);if(!h)return this.warnNodeNotFound(t,c.parentId);if(c.isShadow&&Ie(h)&&(h=h.shadowRoot),s.removeNodeFromMap(d),h)try{h.removeChild(d),this.usingVirtualDom&&d.nodeName==="#text"&&h.nodeName==="STYLE"&&((n=h.rules)==null?void 0:n.length)>0&&(h.rules=[])}catch(f){if(f instanceof DOMException)this.warn("parent could not remove child in mutation",h,d,t);else throw f}});const i=P({},this.legacy_missingNodeRetryMap),a=[],l=c=>{let n=null;return c.nextId&&(n=s.getNode(c.nextId)),c.nextId!==null&&c.nextId!==void 0&&c.nextId!==-1&&!n},u=c=>{var n,d;if(!this.iframe.contentDocument)return this.warn("Looks like your replayer has been destroyed.");let h=s.getNode(c.parentId);if(!h)return c.node.type===Se.Document?this.newDocumentQueue.push(c):a.push(c);c.node.isShadow&&(Ie(h)||h.attachShadow({mode:"open"}),h=h.shadowRoot);let f=null,m=null;if(c.previousId&&(f=s.getNode(c.previousId)),c.nextId&&(m=s.getNode(c.nextId)),l(c))return a.push(c);if(c.node.rootId&&!s.getNode(c.node.rootId))return;const p=c.node.rootId?s.getNode(c.node.rootId):this.usingVirtualDom?this.virtualDom:this.iframe.contentDocument;if(Ye(h,s)){this.attachDocumentToIframe(c,h);return}const g=(y,C)=>{if(!this.usingVirtualDom){vt(y);for(const v of this.config.plugins||[])v.onBuild&&v.onBuild(y,{id:C,replayer:this})}},w=tt(c.node,{doc:p,mirror:s,skipChild:!0,hackCss:!0,cache:this.cache,afterAppend:g});if(c.previousId===-1||c.nextId===-1){i[c.node.id]={node:w,mutation:c};return}const b=s.getMeta(h);if(b&&b.type===Se.Element&&c.node.type===Se.Text){const y=Array.isArray(h.childNodes)?h.childNodes:Array.from(h.childNodes);if(b.tagName==="textarea")for(const C of y)C.nodeType===h.TEXT_NODE&&h.removeChild(C);else if(b.tagName==="style"&&y.length===1)for(const C of y)C.nodeType===h.TEXT_NODE&&!s.hasNode(C)&&(w.textContent=C.textContent,h.removeChild(C))}else if((b==null?void 0:b.type)===Se.Document){const y=h;c.node.type===Se.DocumentType&&((n=y.childNodes[0])==null?void 0:n.nodeType)===Node.DOCUMENT_TYPE_NODE&&y.removeChild(y.childNodes[0]),w.nodeName==="HTML"&&y.documentElement&&y.removeChild(y.documentElement)}if(f&&f.nextSibling&&f.nextSibling.parentNode?h.insertBefore(w,f.nextSibling):m&&m.parentNode?h.contains(m)?h.insertBefore(w,m):h.insertBefore(w,null):h.appendChild(w),g(w,c.node.id),this.usingVirtualDom&&w.nodeName==="#text"&&h.nodeName==="STYLE"&&((d=h.rules)==null?void 0:d.length)>0&&(h.rules=[]),Ye(w,this.mirror)){const y=this.mirror.getId(w),C=this.newDocumentQueue.find(v=>v.parentId===y);C&&(this.attachDocumentToIframe(C,w),this.newDocumentQueue=this.newDocumentQueue.filter(v=>v!==C))}(c.previousId||c.nextId)&&this.legacy_resolveMissingNode(i,h,w,c)};t.adds.forEach(c=>{u(c)});const o=Date.now();for(;a.length;){const c=uo(a);if(a.length=0,Date.now()-o>500){this.warn("Timeout in the loop, please check the resolve tree data:",c);break}for(const n of c)s.getNode(n.value.parentId)?Ls(n,h=>{u(h)}):this.debug("Drop resolve tree since there is no parent for the root node.",n)}Object.keys(i).length&&Object.assign(this.legacy_missingNodeRetryMap,i),co(t.texts).forEach(c=>{var n;const d=s.getNode(c.id);if(!d)return t.removes.find(f=>f.id===c.id)?void 0:this.warnNodeNotFound(t,c.id);const h=d.parentElement;if(c.value&&h&&h.tagName==="STYLE"?d.textContent=Bt(c.value,this.cache):d.textContent=c.value,this.usingVirtualDom){const f=d.parentNode;((n=f==null?void 0:f.rules)==null?void 0:n.length)>0&&(f.rules=[])}}),t.attributes.forEach(c=>{var n;const d=s.getNode(c.id);if(!d)return t.removes.find(h=>h.id===c.id)?void 0:this.warnNodeNotFound(t,c.id);for(const h in c.attributes)if(typeof h=="string"){const f=c.attributes[h];if(f===null)d.removeAttribute(h),h==="open"&&zu(d,c);else if(typeof f=="string")try{if(h==="_cssText"&&(d.nodeName==="LINK"||d.nodeName==="STYLE"))try{const m=s.getMeta(d),p=tt(se(P({},m),{attributes:P(P({},m.attributes),c.attributes)}),{doc:d.ownerDocument,mirror:s,skipChild:!0,hackCss:!0,cache:this.cache});Object.assign(m.attributes,c.attributes);const g=d.nextSibling,w=d.parentNode;if(p&&w){w.removeChild(d),w.insertBefore(p,g),s.replace(c.id,p);break}}catch(m){}if(h==="value"&&d.nodeName==="TEXTAREA"){const m=d;m.childNodes.forEach(g=>m.removeChild(g));const p=(n=d.ownerDocument)==null?void 0:n.createTextNode(f);p&&m.appendChild(p)}else d.setAttribute(h,f);h==="rr_open_mode"&&d.nodeName==="DIALOG"&&vt(d,c)}catch(m){this.warn("An error occurred may due to the checkout feature.",m)}else if(h==="style"){const m=f,p=d;for(const g in m)if(m[g]===!1)p.style.removeProperty(g);else if(m[g]instanceof Array){const w=m[g];p.style.setProperty(g,w[0],w[1])}else{const w=m[g];p.style.setProperty(g,w)}}}})}applyScroll(t,r){var s,i;const a=this.mirror.getNode(t.id);if(!a)return this.debugNodeNotFound(t,t.id);const l=this.mirror.getMeta(a);if(a===this.iframe.contentDocument)(s=this.iframe.contentWindow)==null||s.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"});else if((l==null?void 0:l.type)===Se.Document)(i=a.defaultView)==null||i.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"});else try{a.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"})}catch(u){}}applyInput(t){const r=this.mirror.getNode(t.id);if(!r)return this.debugNodeNotFound(t,t.id);try{r.checked=t.isChecked,r.value=t.text}catch(s){}}applySelection(t){try{const r=new Set,s=t.ranges.map(({start:i,startOffset:a,end:l,endOffset:u})=>{const o=this.mirror.getNode(i),c=this.mirror.getNode(l);if(!o||!c)return;const n=new Range;n.setStart(o,a),n.setEnd(c,u);const d=o.ownerDocument,h=d==null?void 0:d.getSelection();return h&&r.add(h),{range:n,selection:h}});r.forEach(i=>i.removeAllRanges()),s.forEach(i=>{var a;return i&&((a=i.selection)==null?void 0:a.addRange(i.range))})}catch(r){}}applyStyleSheetMutation(t){var r;let s=null;t.styleId?s=this.styleMirror.getStyle(t.styleId):t.id&&(s=((r=this.mirror.getNode(t.id))==null?void 0:r.sheet)||null),s&&(t.source===A.StyleSheetRule?this.applyStyleSheetRule(t,s):t.source===A.StyleDeclaration&&this.applyStyleDeclaration(t,s))}applyStyleSheetRule(t,r){var s,i,a,l;if((s=t.adds)==null||s.forEach(({rule:u,index:o})=>{try{if(Array.isArray(o)){const{positions:c,index:n}=is(o),d=je(r.cssRules,c);d==null||d.insertRule(u,n)}else{const c=o===void 0?void 0:Math.min(o,r.cssRules.length);r==null||r.insertRule(u,c)}}catch(c){}}),(i=t.removes)==null||i.forEach(({index:u})=>{try{if(Array.isArray(u)){const{positions:o,index:c}=is(u),n=je(r.cssRules,o);n==null||n.deleteRule(c||0)}else r==null||r.deleteRule(u)}catch(o){}}),typeof t.replace=="string")try{(a=r.replace)==null||a.call(r,t.replace)}catch(u){}if(typeof t.replaceSync=="string")try{(l=r.replaceSync)==null||l.call(r,t.replaceSync)}catch(u){}}applyStyleDeclaration(t,r){if(t.set){const s=je(r.rules,t.index);s!=null&&s.style&&s.style.setProperty(t.set.property,t.set.value,t.set.priority)}if(t.remove){const s=je(r.rules,t.index);s!=null&&s.style&&s.style.removeProperty(t.remove.property)}}applyAdoptedStyleSheet(t){var r;const s=this.mirror.getNode(t.id);if(!s)return;(r=t.styles)==null||r.forEach(u=>{var o;let c=null,n=null;if(Ie(s)?n=((o=s.ownerDocument)==null?void 0:o.defaultView)||null:s.nodeName==="#document"&&(n=s.defaultView),!!n)try{c=new n.CSSStyleSheet,this.styleMirror.add(c,u.styleId),this.applyStyleSheetRule({source:A.StyleSheetRule,adds:u.rules},c)}catch(d){}});const i=10;let a=0;const l=(u,o)=>{const c=o.map(n=>this.styleMirror.getStyle(n)).filter(n=>n!==null);Ie(u)?u.shadowRoot.adoptedStyleSheets=c:u.nodeName==="#document"&&(u.adoptedStyleSheets=c),c.length!==o.length&&a<i&&(setTimeout(()=>l(u,o),0+100*a),a++)};l(s,t.styleIds)}legacy_resolveMissingNode(t,r,s,i){const{previousId:a,nextId:l}=i,u=a&&t[a],o=l&&t[l];if(u){const{node:c,mutation:n}=u;r.insertBefore(c,s),delete t[n.node.id],delete this.legacy_missingNodeRetryMap[n.node.id],(n.previousId||n.nextId)&&this.legacy_resolveMissingNode(t,r,c,n)}if(o){const{node:c,mutation:n}=o;r.insertBefore(c,s.nextSibling),delete t[n.node.id],delete this.legacy_missingNodeRetryMap[n.node.id],(n.previousId||n.nextId)&&this.legacy_resolveMissingNode(t,r,c,n)}}moveAndHover(t,r,s,i,a){const l=this.mirror.getNode(s);if(!l)return this.debugNodeNotFound(a,s);const u=Us(l,this.iframe),o=t*u.absoluteScale+u.x,c=r*u.absoluteScale+u.y;this.mouse.style.left=`${o}px`,this.mouse.style.top=`${c}px`,i||this.drawMouseTail({x:o,y:c}),this.hoverElements(l)}drawMouseTail(t){if(!this.mouseTail)return;const{lineCap:r,lineWidth:s,strokeStyle:i,duration:a}=this.config.mouseTail===!0?es:Object.assign({},es,this.config.mouseTail),l=()=>{if(!this.mouseTail)return;const u=this.mouseTail.getContext("2d");!u||!this.tailPositions.length||(u.clearRect(0,0,this.mouseTail.width,this.mouseTail.height),u.beginPath(),u.lineWidth=s,u.lineCap=r,u.strokeStyle=i,u.moveTo(this.tailPositions[0].x,this.tailPositions[0].y),this.tailPositions.forEach(o=>u.lineTo(o.x,o.y)),u.stroke())};this.tailPositions.push(t),l(),setTimeout(()=>{this.tailPositions=this.tailPositions.filter(u=>u!==t),l()},a/this.speedService.state.context.timer.speed)}hoverElements(t){var r;(r=this.lastHoveredRootNode||this.iframe.contentDocument)==null||r.querySelectorAll(".\\:hover").forEach(i=>{i.classList.remove(":hover")}),this.lastHoveredRootNode=t.getRootNode();let s=t;for(;s;)s.classList&&s.classList.add(":hover"),s=s.parentElement}isUserInteraction(t){return t.type!==_.IncrementalSnapshot?!1:t.data.source>A.Mutation&&t.data.source<=A.Input}backToNormal(){this.nextUserInteractionEvent=null,!this.speedService.state.matches("normal")&&(this.speedService.send({type:"BACK_TO_NORMAL"}),this.emitter.emit(z.SkipEnd,{speed:this.speedService.state.context.normalSpeed}))}warnNodeNotFound(t,r){this.warn(`Node with id '${r}' not found. `,t)}warnCanvasMutationFailed(t,r){this.warn("Has error on canvas update",r,"canvas mutation:",t)}debugNodeNotFound(t,r){this.debug(`Node with id '${r}' not found. `,t)}warn(...t){this.config.showWarning&&this.config.logger.warn(Nn,...t)}debug(...t){this.config.showDebug&&this.config.logger.log(Nn,...t)}}const{addCustomEvent:Gu}=Te,{freezePage:Hu}=Te,{takeFullSnapshot:Yu}=Te;exports.EventType=_;exports.IncrementalSource=A;exports.MouseInteractions=q;exports.Replayer=ju;exports.ReplayerEvents=z;exports.addCustomEvent=Gu;exports.canvasMutation=os;exports.freezePage=Hu;exports.record=Te;exports.takeFullSnapshot=Yu;exports.utils=Ql;
155
+ ***************************************************************************** */function Sn(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var s,i,a=r.call(e),l=[];try{for(;(t===void 0||t-- >0)&&!(s=a.next()).done;)l.push(s.value)}catch(u){i={error:u}}finally{try{s&&!s.done&&(r=a.return)&&r.call(a)}finally{if(i)throw i.error}}return l}var He;(function(e){e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped"})(He||(He={}));var Co={type:"xstate.init"};function Kr(e){return e===void 0?[]:[].concat(e)}function ze(e){return{type:"xstate.assign",assignment:e}}function Cn(e,t){return typeof(e=typeof e=="string"&&t&&t[e]?t[e]:e)=="string"?{type:e}:typeof e=="function"?{type:e.name,exec:e}:e}function _t(e){return function(t){return e===t}}function Eo(e){return typeof e=="string"?{type:e}:e}function En(e,t){return{value:e,context:t,actions:[],changed:!1,matches:_t(e)}}function xn(e,t,r){var s=t,i=!1;return[e.filter(function(a){if(a.type==="xstate.assign"){i=!0;var l=Object.assign({},s);return typeof a.assignment=="function"?l=a.assignment(s,r):Object.keys(a.assignment).forEach(function(u){l[u]=typeof a.assignment[u]=="function"?a.assignment[u](s,r):a.assignment[u]}),s=l,!1}return!0}),s,i]}function xo(e,t){t===void 0&&(t={});var r=Sn(xn(Kr(e.states[e.initial].entry).map(function(l){return Cn(l,t.actions)}),e.context,Co),2),s=r[0],i=r[1],a={config:e,_options:t,initialState:{value:e.initial,actions:s,context:i,matches:_t(e.initial)},transition:function(l,u){var o,c,n=typeof l=="string"?{value:l,context:e.context}:l,d=n.value,h=n.context,f=Eo(u),m=e.states[d];if(m.on){var p=Kr(m.on[f.type]);try{for(var g=function(k){var J=typeof Symbol=="function"&&Symbol.iterator,te=J&&k[J],Z=0;if(te)return te.call(k);if(k&&typeof k.length=="number")return{next:function(){return k&&Z>=k.length&&(k=void 0),{value:k&&k[Z++],done:!k}}};throw new TypeError(J?"Object is not iterable.":"Symbol.iterator is not defined.")}(p),w=g.next();!w.done;w=g.next()){var b=w.value;if(b===void 0)return En(d,h);var y=typeof b=="string"?{target:b}:b,C=y.target,v=y.actions,S=v===void 0?[]:v,E=y.cond,R=E===void 0?function(){return!0}:E,I=C===void 0,N=C!=null?C:d,F=e.states[N];if(R(h,f)){var T=Sn(xn((I?Kr(S):[].concat(m.exit,S,F.entry).filter(function(k){return k})).map(function(k){return Cn(k,a._options.actions)}),h,f),3),x=T[0],ue=T[1],ae=T[2],V=C!=null?C:d;return{value:V,context:ue,actions:x,changed:C!==d||x.length>0||ae,matches:_t(V)}}}}catch(k){o={error:k}}finally{try{w&&!w.done&&(c=g.return)&&c.call(g)}finally{if(o)throw o.error}}}return En(d,h)}};return a}var Rn=function(e,t){return e.actions.forEach(function(r){var s=r.exec;return s&&s(e.context,t)})};function Ro(e){var t=e.initialState,r=He.NotStarted,s=new Set,i={_machine:e,send:function(a){r===He.Running&&(t=e.transition(t,a),Rn(t,Eo(a)),s.forEach(function(l){return l(t)}))},subscribe:function(a){return s.add(a),a(t),{unsubscribe:function(){return s.delete(a)}}},start:function(a){if(a){var l=typeof a=="object"?a:{context:e.config.context,value:a};t={value:l.value,actions:[],context:l.context,matches:_t(l.value)}}return r=He.Running,Rn(t,Co),i},stop:function(){return r=He.Stopped,s.clear(),i},get state(){return t},get status(){return r}};return i}function Tu(e,t){for(let r=e.length-1;r>=0;r--){const s=e[r];if(s.type===_.Meta&&s.timestamp<=t)return e.slice(r)}return e}function _u(e,{getCastFn:t,applyEventsSynchronously:r,emitter:s}){const i=xo({id:"player",context:e,initial:"paused",states:{playing:{on:{PAUSE:{target:"paused",actions:["pause"]},CAST_EVENT:{target:"playing",actions:"castEvent"},END:{target:"paused",actions:["resetLastPlayedEvent","pause"]},ADD_EVENT:{target:"playing",actions:["addEvent"]}}},paused:{on:{PLAY:{target:"playing",actions:["recordTimeOffset","play"]},CAST_EVENT:{target:"paused",actions:"castEvent"},TO_LIVE:{target:"live",actions:["startLive"]},ADD_EVENT:{target:"paused",actions:["addEvent"]}}},live:{on:{ADD_EVENT:{target:"live",actions:["addEvent"]},CAST_EVENT:{target:"live",actions:["castEvent"]}}}}},{actions:{castEvent:ze({lastPlayedEvent:(a,l)=>l.type==="CAST_EVENT"?l.payload.event:a.lastPlayedEvent}),recordTimeOffset:ze((a,l)=>{let u=a.timeOffset;return"payload"in l&&"timeOffset"in l.payload&&(u=l.payload.timeOffset),se(P({},a),{timeOffset:u,baselineTime:a.events[0].timestamp+u})}),play(a){var l;const{timer:u,events:o,baselineTime:c,lastPlayedEvent:n}=a;u.clear();for(const m of o)vn(m,c);const d=Tu(o,c);let h=n==null?void 0:n.timestamp;(n==null?void 0:n.type)===_.IncrementalSnapshot&&n.data.source===A.MouseMove&&(h=n.timestamp+((l=n.data.positions[0])==null?void 0:l.timeOffset)),c<(h||0)&&s.emit(z.PlayBack);const f=new Array;for(const m of d)if(!(h&&h<c&&(m.timestamp<=h||m===n)))if(m.timestamp<c)f.push(m);else{const p=t(m,!1);u.addAction({doAction:()=>{p()},delay:m.delay})}r(f),s.emit(z.Flush),u.start()},pause(a){a.timer.clear()},resetLastPlayedEvent:ze(a=>se(P({},a),{lastPlayedEvent:null})),startLive:ze({baselineTime:(a,l)=>(a.timer.start(),l.type==="TO_LIVE"&&l.payload.baselineTime?l.payload.baselineTime:Date.now())}),addEvent:ze((a,l)=>{const{baselineTime:u,timer:o,events:c}=a;if(l.type==="ADD_EVENT"){const{event:n}=l.payload;vn(n,u);let d=c.length-1;if(!c[d]||c[d].timestamp<=n.timestamp)c.push(n);else{let m=-1,p=0;for(;p<=d;){const g=Math.floor((p+d)/2);c[g].timestamp<=n.timestamp?p=g+1:d=g-1}m===-1&&(m=p),c.splice(m,0,n)}const h=n.timestamp<u,f=t(n,h);h?f():o.isActive()&&o.addAction({doAction:()=>{f()},delay:n.delay})}return se(P({},a),{events:c})})}});return Ro(i)}function ku(e){const t=xo({id:"speed",context:e,initial:"normal",states:{normal:{on:{FAST_FORWARD:{target:"skipping",actions:["recordSpeed","setSpeed"]},SET_SPEED:{target:"normal",actions:["setSpeed"]}}},skipping:{on:{BACK_TO_NORMAL:{target:"normal",actions:["restoreSpeed"]},SET_SPEED:{target:"normal",actions:["setSpeed"]}}}}},{actions:{setSpeed:(r,s)=>{"payload"in s&&r.timer.setSpeed(s.payload.speed)},recordSpeed:ze({normalSpeed:r=>r.timer.speed}),restoreSpeed:r=>{r.timer.setSpeed(r.normalSpeed)}}});return Ro(t)}const Pu=e=>[`.${e} { background: currentColor }`,"noscript { display: none !important; }"],Mn=new Map;function Mo(e,t){let r=Mn.get(e);return r||(r=new Map,Mn.set(e,r)),r.has(t)||r.set(t,[]),r.get(t)}function De(e,t,r){return async s=>{if(s&&typeof s=="object"&&"rr_type"in s)if(r&&(r.isUnchanged=!1),s.rr_type==="ImageBitmap"&&"args"in s){const i=await De(e,t,r)(s.args);return await createImageBitmap.apply(null,i)}else if("index"in s){if(r||t===null)return s;const{rr_type:i,index:a}=s;return Mo(t,i)[a]}else if("args"in s){const{rr_type:i,args:a}=s,l=window[i];return new l(...await Promise.all(a.map(De(e,t,r))))}else{if("base64"in s)return vu(s.base64);if("src"in s){const i=e.get(s.src);if(i)return i;{const a=new Image;return a.src=s.src,e.set(s.src,a),a}}else if("data"in s&&s.rr_type==="Blob"){const i=await Promise.all(s.data.map(De(e,t,r)));return new Blob(i,{type:s.type})}}else if(Array.isArray(s))return await Promise.all(s.map(De(e,t,r)));return s}}function Lu(e,t){try{return t===Ce.WebGL?e.getContext("webgl")||e.getContext("experimental-webgl"):e.getContext("webgl2")}catch(r){return null}}const Fu=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject"];function Uu(e,t){if(!(t!=null&&t.constructor))return;const{name:r}=t.constructor;if(!Fu.includes(r))return;const s=Mo(e,r);s.includes(t)||s.push(t)}async function Bu({mutation:e,target:t,type:r,imageMap:s,errorHandler:i}){try{const a=Lu(t,r);if(!a)return;if(e.setter){a[e.property]=e.args[0];return}const l=a[e.property],u=await Promise.all(e.args.map(De(s,a))),o=l.apply(a,u);Uu(a,o);const c=!1}catch(a){i(e,a)}}async function $u({event:e,mutations:t,target:r,imageMap:s,errorHandler:i}){const a=r.getContext("2d");if(!a){i(t[0],new Error("Canvas context is null"));return}const l=t.map(async o=>Promise.all(o.args.map(De(s,a))));(await Promise.all(l)).forEach((o,c)=>{const n=t[c];try{if(n.setter){a[n.property]=n.args[0];return}const d=a[n.property];n.property==="drawImage"&&typeof n.args[0]=="string"?(s.get(e),d.apply(a,n.args)):d.apply(a,o)}catch(d){i(n,d)}})}async function os({event:e,mutation:t,target:r,imageMap:s,canvasEventMap:i,errorHandler:a}){try{const l=i.get(e)||t,u="commands"in l?l.commands:[l];if([Ce.WebGL,Ce.WebGL2].includes(t.type)){for(let o=0;o<u.length;o++){const c=u[o];await Bu({mutation:c,type:t.type,target:r,imageMap:s,errorHandler:a})}return}await $u({event:e,mutations:u,target:r,imageMap:s,errorHandler:a})}catch(l){a(t,l)}}class Wu{constructor(t){M(this,"mediaMap",new Map),M(this,"warn"),M(this,"service"),M(this,"speedService"),M(this,"emitter"),M(this,"getCurrentTime"),M(this,"metadataCallbackMap",new Map),this.warn=t.warn,this.service=t.service,this.speedService=t.speedService,this.emitter=t.emitter,this.getCurrentTime=t.getCurrentTime,this.emitter.on(z.Start,this.start.bind(this)),this.emitter.on(z.SkipStart,this.start.bind(this)),this.emitter.on(z.Pause,this.pause.bind(this)),this.emitter.on(z.Finish,this.pause.bind(this)),this.speedService.subscribe(()=>{this.syncAllMediaElements()})}syncAllMediaElements(t={pause:!1}){this.mediaMap.forEach((r,s)=>{this.syncTargetWithState(s),t.pause&&s.pause()})}start(){this.syncAllMediaElements()}pause(){this.syncAllMediaElements({pause:!0})}seekTo({time:t,target:r,mediaState:s}){if(s.isPlaying){const a=(t-s.lastInteractionTimeOffset)/1e3*s.playbackRate,l="duration"in r&&r.duration;if(Number.isNaN(l)){this.waitForMetadata(r);return}let u=s.currentTimeAtLastInteraction+a;r.loop&&l!==!1&&(u=u%l),r.currentTime=u}else r.pause(),r.currentTime=s.currentTimeAtLastInteraction}waitForMetadata(t){if(this.metadataCallbackMap.has(t)||!("addEventListener"in t))return;const r=()=>{this.metadataCallbackMap.delete(t);const s=this.mediaMap.get(t);s&&this.seekTo({time:this.getCurrentTime(),target:t,mediaState:s})};this.metadataCallbackMap.set(t,r),t.addEventListener("loadedmetadata",r,{once:!0})}getMediaStateFromMutation({target:t,timeOffset:r,mutation:s}){var f,m,p,g,w;const i=this.mediaMap.get(t),{type:a,playbackRate:l,currentTime:u,muted:o,volume:c,loop:n}=s;return{isPlaying:a===Oe.Play||a!==Oe.Pause&&((i==null?void 0:i.isPlaying)||t.getAttribute("autoplay")!==null),currentTimeAtLastInteraction:(f=u!=null?u:i==null?void 0:i.currentTimeAtLastInteraction)!=null?f:0,lastInteractionTimeOffset:r,playbackRate:(m=l!=null?l:i==null?void 0:i.playbackRate)!=null?m:1,volume:(p=c!=null?c:i==null?void 0:i.volume)!=null?p:1,muted:(g=o!=null?o:i==null?void 0:i.muted)!=null?g:t.getAttribute("muted")===null,loop:(w=n!=null?n:i==null?void 0:i.loop)!=null?w:t.getAttribute("loop")===null}}syncTargetWithState(t){const r=this.mediaMap.get(t);if(!r)return;const{muted:s,loop:i,volume:a,isPlaying:l}=r,u=this.service.state.matches("paused"),o=r.playbackRate*this.speedService.state.context.timer.speed;try{this.seekTo({time:this.getCurrentTime(),target:t,mediaState:r}),t.volume!==a&&(t.volume=a),t.muted=s,t.loop=i,t.playbackRate!==o&&(t.playbackRate=o),l&&!u?t.play():t.pause()}catch(c){this.warn(`Failed to replay media interactions: ${c.message||c}`)}}addMediaElements(t,r,s){if(!["AUDIO","VIDEO"].includes(t.nodeName))return;const i=t,a=s.getMeta(i);if(!a||!("attributes"in a))return;const l=this.service.state.matches("paused"),u=a.attributes;let o=!1;u.rr_mediaState?o=u.rr_mediaState==="played":o=i.getAttribute("autoplay")!==null,o&&l&&i.pause();let c=1;typeof u.rr_mediaPlaybackRate=="number"&&(c=u.rr_mediaPlaybackRate);let n=!1;typeof u.rr_mediaMuted=="boolean"?n=u.rr_mediaMuted:n=i.getAttribute("muted")!==null;let d=!1;typeof u.rr_mediaLoop=="boolean"?d=u.rr_mediaLoop:d=i.getAttribute("loop")!==null;let h=1;typeof u.rr_mediaVolume=="number"&&(h=u.rr_mediaVolume);let f=0;typeof u.rr_mediaCurrentTime=="number"&&(f=u.rr_mediaCurrentTime),this.mediaMap.set(i,{isPlaying:o,currentTimeAtLastInteraction:f,lastInteractionTimeOffset:r,playbackRate:c,volume:h,muted:n,loop:d}),this.syncTargetWithState(i)}mediaMutation({target:t,timeOffset:r,mutation:s}){this.mediaMap.set(t,this.getMediaStateFromMutation({target:t,timeOffset:r,mutation:s})),this.syncTargetWithState(t)}isSupportedMediaElement(t){return["AUDIO","VIDEO"].includes(t.nodeName)}reset(){this.mediaMap.clear()}}function vt(e,t){if(e.nodeName!=="DIALOG"||e instanceof ye)return;const r=e,s=r.open,i=s&&r.matches("dialog:modal"),a=r.getAttribute("rr_open_mode"),l=typeof(t==null?void 0:t.attributes.open)=="string"||typeof r.getAttribute("open")=="string",u=a==="modal";if(!(s&&!(i&&a==="non-modal"||!i&&u))){if(!r.isConnected){console.warn("dialog is not attached to the dom",r);return}s&&r.close(),l&&(u?r.showModal():r.show())}}function zu(e,t){if(e.nodeName!=="DIALOG"||e instanceof ye)return;const r=e;if(!r.isConnected){console.warn("dialog is not attached to the dom",r);return}t.attributes.open===null&&(r.removeAttribute("open"),r.removeAttribute("rr_open_mode"))}const qu=5*1e3,Vu=Iu,Nn="[replayer]",es={duration:500,lineCap:"round",lineWidth:3,strokeStyle:"red"};function On(e){return e.type==_.IncrementalSnapshot&&(e.data.source==A.TouchMove||e.data.source==A.MouseInteraction&&e.data.type==q.TouchStart)}class ju{constructor(t,r){if(M(this,"wrapper"),M(this,"iframe"),M(this,"service"),M(this,"speedService"),M(this,"config"),M(this,"usingVirtualDom",!1),M(this,"virtualDom",new Xe),M(this,"mouse"),M(this,"mouseTail",null),M(this,"tailPositions",[]),M(this,"emitter",Vu()),M(this,"nextUserInteractionEvent"),M(this,"legacy_missingNodeRetryMap",{}),M(this,"cache",Ii()),M(this,"imageMap",new Map),M(this,"canvasEventMap",new Map),M(this,"mirror",An()),M(this,"styleMirror",new Bs),M(this,"mediaManager"),M(this,"firstFullSnapshot",null),M(this,"newDocumentQueue",[]),M(this,"mousePos",null),M(this,"touchActive",null),M(this,"lastMouseDownEvent",null),M(this,"lastHoveredRootNode"),M(this,"lastSelectionData",null),M(this,"constructedStyleMutations",[]),M(this,"adoptedStyleSheets",[]),M(this,"handleResize",u=>{this.iframe.style.display="inherit";for(const o of[this.mouseTail,this.iframe])o&&(o.setAttribute("width",String(u.width)),o.setAttribute("height",String(u.height)))}),M(this,"applyEventsSynchronously",u=>{for(const o of u){switch(o.type){case _.DomContentLoaded:case _.Load:case _.Custom:continue;case _.FullSnapshot:case _.Meta:case _.Plugin:case _.IncrementalSnapshot:break}this.getCastFn(o,!0)()}}),M(this,"getCastFn",(u,o=!1)=>{let c;switch(u.type){case _.DomContentLoaded:case _.Load:break;case _.Custom:c=()=>{this.emitter.emit(z.CustomEvent,u)};break;case _.Meta:c=()=>this.emitter.emit(z.Resize,{width:u.data.width,height:u.data.height});break;case _.FullSnapshot:c=()=>{var d;if(this.firstFullSnapshot){if(this.firstFullSnapshot===u){this.firstFullSnapshot=!0;return}}else this.firstFullSnapshot=!0;this.mediaManager.reset(),this.styleMirror.reset(),this.rebuildFullSnapshot(u,o),(d=this.iframe.contentWindow)==null||d.scrollTo(u.data.initialOffset)};break;case _.IncrementalSnapshot:c=()=>{if(this.applyIncremental(u,o),!o&&(u===this.nextUserInteractionEvent&&(this.nextUserInteractionEvent=null,this.backToNormal()),this.config.skipInactive&&!this.nextUserInteractionEvent)){for(const d of this.service.state.context.events)if(!(d.timestamp<=u.timestamp)&&this.isUserInteraction(d)){d.delay-u.delay>this.config.inactivePeriodThreshold*this.speedService.state.context.timer.speed&&(this.nextUserInteractionEvent=d);break}if(this.nextUserInteractionEvent){const d=this.nextUserInteractionEvent.delay-u.delay,h={speed:Math.min(Math.round(d/qu),this.config.maxSpeed)};this.speedService.send({type:"FAST_FORWARD",payload:h}),this.emitter.emit(z.SkipStart,h)}}};break}return()=>{c&&c();for(const h of this.config.plugins||[])h.handler&&h.handler(u,o,{replayer:this});this.service.send({type:"CAST_EVENT",payload:{event:u}});const d=this.service.state.context.events.length-1;if(!this.config.liveMode&&u===this.service.state.context.events[d]){const h=()=>{d<this.service.state.context.events.length-1||(this.backToNormal(),this.service.send("END"),this.emitter.emit(z.Finish))};let f=50;u.type===_.IncrementalSnapshot&&u.data.source===A.MouseMove&&u.data.positions.length&&(f+=Math.max(0,-u.data.positions[0].timeOffset)),setTimeout(h,f)}this.emitter.emit(z.EventCast,u)}}),!(r!=null&&r.liveMode)&&t.length<2)throw new Error("Replayer need at least 2 events.");const s={speed:1,maxSpeed:360,root:document.body,loadTimeout:0,skipInactive:!1,inactivePeriodThreshold:10*1e3,showWarning:!0,showDebug:!1,blockClass:"rr-block",liveMode:!1,insertStyleRules:[],triggerFocus:!0,UNSAFE_replayCanvas:!1,pauseAnimation:!0,mouseTail:es,useVirtualDom:!0,logger:console};this.config=Object.assign({},s,r),this.handleResize=this.handleResize.bind(this),this.getCastFn=this.getCastFn.bind(this),this.applyEventsSynchronously=this.applyEventsSynchronously.bind(this),this.emitter.on(z.Resize,this.handleResize),this.setupDom();for(const u of this.config.plugins||[])u.getMirror&&u.getMirror({nodeMirror:this.mirror});this.emitter.on(z.Flush,()=>{if(this.usingVirtualDom){const u={mirror:this.mirror,applyCanvas:(o,c,n)=>{os({event:o,mutation:c,target:n,imageMap:this.imageMap,canvasEventMap:this.canvasEventMap,errorHandler:this.warnCanvasMutationFailed.bind(this)})},applyInput:this.applyInput.bind(this),applyScroll:this.applyScroll.bind(this),applyStyleSheetMutation:(o,c)=>{o.source===A.StyleSheetRule?this.applyStyleSheetRule(o,c):o.source===A.StyleDeclaration&&this.applyStyleDeclaration(o,c)},afterAppend:(o,c)=>{for(const n of this.config.plugins||[])n.onBuild&&n.onBuild(o,{id:c,replayer:this})}};if(this.iframe.contentDocument)try{Ot(this.iframe.contentDocument,this.virtualDom,u,this.virtualDom.mirror)}catch(o){console.warn(o)}if(this.virtualDom.destroyTree(),this.usingVirtualDom=!1,Object.keys(this.legacy_missingNodeRetryMap).length)for(const o in this.legacy_missingNodeRetryMap)try{const c=this.legacy_missingNodeRetryMap[o],n=It(c.node,this.mirror,this.virtualDom.mirror);Ot(n,c.node,u,this.virtualDom.mirror),c.node=n}catch(c){this.warn(c)}this.constructedStyleMutations.forEach(o=>{this.applyStyleSheetMutation(o)}),this.constructedStyleMutations=[],this.adoptedStyleSheets.forEach(o=>{this.applyAdoptedStyleSheet(o)}),this.adoptedStyleSheets=[]}if(this.mousePos&&(this.moveAndHover(this.mousePos.x,this.mousePos.y,this.mousePos.id,!0,this.mousePos.debugData),this.mousePos=null),this.touchActive===!0?this.mouse.classList.add("touch-active"):this.touchActive===!1&&this.mouse.classList.remove("touch-active"),this.touchActive=null,this.lastMouseDownEvent){const[u,o]=this.lastMouseDownEvent;u.dispatchEvent(o)}this.lastMouseDownEvent=null,this.lastSelectionData&&(this.applySelection(this.lastSelectionData),this.lastSelectionData=null)}),this.emitter.on(z.PlayBack,()=>{this.firstFullSnapshot=null,this.mirror.reset(),this.styleMirror.reset(),this.mediaManager.reset()});const i=new Au([],{speed:this.config.speed});this.service=_u({events:t.map(u=>r&&r.unpackFn?r.unpackFn(u):u).sort((u,o)=>u.timestamp-o.timestamp),timer:i,timeOffset:0,baselineTime:0,lastPlayedEvent:null},{getCastFn:this.getCastFn,applyEventsSynchronously:this.applyEventsSynchronously,emitter:this.emitter}),this.service.start(),this.service.subscribe(u=>{this.emitter.emit(z.StateChange,{player:u})}),this.speedService=ku({normalSpeed:-1,timer:i}),this.speedService.start(),this.speedService.subscribe(u=>{this.emitter.emit(z.StateChange,{speed:u})}),this.mediaManager=new Wu({warn:this.warn.bind(this),service:this.service,speedService:this.speedService,emitter:this.emitter,getCurrentTime:this.getCurrentTime.bind(this)});const a=this.service.state.context.events.find(u=>u.type===_.Meta),l=this.service.state.context.events.find(u=>u.type===_.FullSnapshot);if(a){const{width:u,height:o}=a.data;setTimeout(()=>{this.emitter.emit(z.Resize,{width:u,height:o})},0)}l&&setTimeout(()=>{var u;this.firstFullSnapshot||(this.firstFullSnapshot=l,this.rebuildFullSnapshot(l),(u=this.iframe.contentWindow)==null||u.scrollTo(l.data.initialOffset))},1),this.service.state.context.events.find(On)&&this.mouse.classList.add("touch-device")}get timer(){return this.service.state.context.timer}on(t,r){return this.emitter.on(t,r),this}off(t,r){return this.emitter.off(t,r),this}setConfig(t){Object.keys(t).forEach(r=>{t[r],this.config[r]=t[r]}),this.config.skipInactive||this.backToNormal(),typeof t.speed!="undefined"&&this.speedService.send({type:"SET_SPEED",payload:{speed:t.speed}}),typeof t.mouseTail!="undefined"&&(t.mouseTail===!1?this.mouseTail&&(this.mouseTail.style.display="none"):(this.mouseTail||(this.mouseTail=document.createElement("canvas"),this.mouseTail.width=Number.parseFloat(this.iframe.width),this.mouseTail.height=Number.parseFloat(this.iframe.height),this.mouseTail.classList.add("replayer-mouse-tail"),this.wrapper.insertBefore(this.mouseTail,this.iframe)),this.mouseTail.style.display="inherit"))}getMetaData(){const t=this.service.state.context.events[0],r=this.service.state.context.events[this.service.state.context.events.length-1];return{startTime:t.timestamp,endTime:r.timestamp,totalTime:r.timestamp-t.timestamp}}getCurrentTime(){return this.timer.timeOffset+this.getTimeOffset()}getTimeOffset(){const{baselineTime:t,events:r}=this.service.state.context;return t-r[0].timestamp}getMirror(){return this.mirror}play(t=0){var r,s;this.service.state.matches("paused")?this.service.send({type:"PLAY",payload:{timeOffset:t}}):(this.service.send({type:"PAUSE"}),this.service.send({type:"PLAY",payload:{timeOffset:t}})),(s=(r=this.iframe.contentDocument)==null?void 0:r.getElementsByTagName("html")[0])==null||s.classList.remove("rrweb-paused"),this.emitter.emit(z.Start)}pause(t){var r,s;t===void 0&&this.service.state.matches("playing")&&this.service.send({type:"PAUSE"}),typeof t=="number"&&(this.play(t),this.service.send({type:"PAUSE"})),(s=(r=this.iframe.contentDocument)==null?void 0:r.getElementsByTagName("html")[0])==null||s.classList.add("rrweb-paused"),this.emitter.emit(z.Pause)}resume(t=0){this.warn("The 'resume' was deprecated in 1.0. Please use 'play' method which has the same interface."),this.play(t),this.emitter.emit(z.Resume)}destroy(){this.pause(),this.mirror.reset(),this.styleMirror.reset(),this.mediaManager.reset(),this.config.root.removeChild(this.wrapper),this.emitter.emit(z.Destroy)}startLive(t){this.service.send({type:"TO_LIVE",payload:{baselineTime:t}})}addEvent(t){const r=this.config.unpackFn?this.config.unpackFn(t):t;On(r)&&this.mouse.classList.add("touch-device"),Promise.resolve().then(()=>this.service.send({type:"ADD_EVENT",payload:{event:r}}))}enableInteract(){this.iframe.setAttribute("scrolling","auto"),this.iframe.style.pointerEvents="auto"}disableInteract(){this.iframe.setAttribute("scrolling","no"),this.iframe.style.pointerEvents="none"}resetCache(){this.cache=Ii()}setupDom(){this.wrapper=document.createElement("div"),this.wrapper.classList.add("replayer-wrapper"),this.config.root.appendChild(this.wrapper),this.mouse=document.createElement("div"),this.mouse.classList.add("replayer-mouse"),this.wrapper.appendChild(this.mouse),this.config.mouseTail!==!1&&(this.mouseTail=document.createElement("canvas"),this.mouseTail.classList.add("replayer-mouse-tail"),this.mouseTail.style.display="inherit",this.wrapper.appendChild(this.mouseTail)),this.iframe=document.createElement("iframe");const t=["allow-same-origin"];this.config.UNSAFE_replayCanvas&&t.push("allow-scripts"),this.iframe.style.display="none",this.iframe.setAttribute("sandbox",t.join(" ")),this.disableInteract(),this.wrapper.appendChild(this.iframe),this.iframe.contentWindow&&this.iframe.contentDocument&&(Du(this.iframe.contentWindow,this.iframe.contentDocument),Ps(this.iframe.contentWindow))}rebuildFullSnapshot(t,r=!1){if(!this.iframe.contentDocument)return this.warn("Looks like your replayer has been destroyed.");Object.keys(this.legacy_missingNodeRetryMap).length&&this.warn("Found unresolved missing node map",this.legacy_missingNodeRetryMap),this.legacy_missingNodeRetryMap={};const s=[],i=new Set,a=(o,c)=>{if(o.nodeName==="DIALOG"&&i.add(o),this.collectIframeAndAttachDocument(s,o),this.mediaManager.isSupportedMediaElement(o)){const{events:n}=this.service.state.context;this.mediaManager.addMediaElements(o,t.timestamp-n[0].timestamp,this.mirror)}for(const n of this.config.plugins||[])n.onBuild&&n.onBuild(o,{id:c,replayer:this})};this.usingVirtualDom&&(this.virtualDom.destroyTree(),this.usingVirtualDom=!1),this.mirror.reset(),Ha(t.data.node,{doc:this.iframe.contentDocument,afterAppend:a,cache:this.cache,mirror:this.mirror}),a(this.iframe.contentDocument,t.data.node.id);for(const{mutationInQueue:o,builtNode:c}of s)this.attachDocumentToIframe(o,c),this.newDocumentQueue=this.newDocumentQueue.filter(n=>n!==o);const{documentElement:l,head:u}=this.iframe.contentDocument;this.insertStyleRules(l,u),i.forEach(o=>vt(o)),this.service.state.matches("playing")||this.iframe.contentDocument.getElementsByTagName("html")[0].classList.add("rrweb-paused"),this.emitter.emit(z.FullsnapshotRebuilded,t),r||this.waitForStylesheetLoad(),this.config.UNSAFE_replayCanvas&&this.preloadAllImages()}insertStyleRules(t,r){var s;const i=Pu(this.config.blockClass).concat(this.config.insertStyleRules);if(this.config.pauseAnimation&&i.push("html.rrweb-paused *, html.rrweb-paused *:before, html.rrweb-paused *:after { animation-play-state: paused !important; }"),!!i.length)if(this.usingVirtualDom){const a=this.virtualDom.createElement("style");this.virtualDom.mirror.add(a,no(a,this.virtualDom.unserializedId)),t.insertBefore(a,r),a.rules.push({source:A.StyleSheetRule,adds:i.map((l,u)=>({rule:l,index:u}))})}else{const a=document.createElement("style");t.insertBefore(a,r);for(let l=0;l<i.length;l++)(s=a.sheet)==null||s.insertRule(i[l],l)}}attachDocumentToIframe(t,r){const s=this.usingVirtualDom?this.virtualDom.mirror:this.mirror,i=[],a=new Set,l=(u,o)=>{u.nodeName==="DIALOG"&&a.add(u),this.collectIframeAndAttachDocument(i,u);const c=s.getMeta(u);if((c==null?void 0:c.type)===Se.Element&&(c==null?void 0:c.tagName.toUpperCase())==="HTML"){const{documentElement:n,head:d}=r.contentDocument;this.insertStyleRules(n,d)}if(!this.usingVirtualDom)for(const n of this.config.plugins||[])n.onBuild&&n.onBuild(u,{id:o,replayer:this})};tt(t.node,{doc:r.contentDocument,mirror:s,hackCss:!0,skipChild:!1,afterAppend:l,cache:this.cache}),l(r.contentDocument,t.node.id);for(const{mutationInQueue:u,builtNode:o}of i)this.attachDocumentToIframe(u,o),this.newDocumentQueue=this.newDocumentQueue.filter(c=>c!==u);a.forEach(u=>vt(u))}collectIframeAndAttachDocument(t,r){if(Ye(r,this.mirror)){const s=this.newDocumentQueue.find(i=>i.parentId===this.mirror.getId(r));s&&t.push({mutationInQueue:s,builtNode:r})}}waitForStylesheetLoad(){var t;const r=(t=this.iframe.contentDocument)==null?void 0:t.head;if(r){const s=new Set;let i,a=this.service.state;const l=()=>{a=this.service.state};this.emitter.on(z.Start,l),this.emitter.on(z.Pause,l);const u=()=>{this.emitter.off(z.Start,l),this.emitter.off(z.Pause,l)};r.querySelectorAll('link[rel="stylesheet"]').forEach(o=>{if(!o.sheet){s.add(o);const c=()=>{s.delete(o),s.size===0&&i!==-1&&(a.matches("playing")&&this.play(this.getCurrentTime()),this.emitter.emit(z.LoadStylesheetEnd),i&&clearTimeout(i),u())};o.addEventListener("load",c),o.addEventListener("error",c)}}),s.size>0&&(this.service.send({type:"PAUSE"}),this.emitter.emit(z.LoadStylesheetStart),i=setTimeout(()=>{a.matches("playing")&&this.play(this.getCurrentTime()),i=-1,u()},this.config.loadTimeout))}}async preloadAllImages(){const t=[];for(const r of this.service.state.context.events)r.type===_.IncrementalSnapshot&&r.data.source===A.CanvasMutation&&(t.push(this.deserializeAndPreloadCanvasEvents(r.data,r)),("commands"in r.data?r.data.commands:[r.data]).forEach(i=>{this.preloadImages(i,r)}));return Promise.all(t)}preloadImages(t,r){if(t.property==="drawImage"&&typeof t.args[0]=="string"&&!this.imageMap.has(r)){const s=document.createElement("canvas"),i=s.getContext("2d"),a=i==null?void 0:i.createImageData(s.width,s.height);i==null||i.putImageData(a,0,0)}}async deserializeAndPreloadCanvasEvents(t,r){if(!this.canvasEventMap.has(r)){const s={isUnchanged:!0};if("commands"in t){const i=await Promise.all(t.commands.map(async a=>{const l=await Promise.all(a.args.map(De(this.imageMap,null,s)));return se(P({},a),{args:l})}));s.isUnchanged===!1&&this.canvasEventMap.set(r,se(P({},t),{commands:i}))}else{const i=await Promise.all(t.args.map(De(this.imageMap,null,s)));s.isUnchanged===!1&&this.canvasEventMap.set(r,se(P({},t),{args:i}))}}}applyIncremental(t,r){var s,i,a;const{data:l}=t;switch(l.source){case A.Mutation:{try{this.applyMutation(l,r)}catch(u){this.warn(`Exception in mutation ${u.message||u}`,l)}break}case A.Drag:case A.TouchMove:case A.MouseMove:if(r){const u=l.positions[l.positions.length-1];this.mousePos={x:u.x,y:u.y,id:u.id,debugData:l}}else l.positions.forEach(u=>{const o={doAction:()=>{this.moveAndHover(u.x,u.y,u.id,r,l)},delay:u.timeOffset+t.timestamp-this.service.state.context.baselineTime};this.timer.addAction(o)}),this.timer.addAction({doAction(){},delay:t.delay-((s=l.positions[0])==null?void 0:s.timeOffset)});break;case A.MouseInteraction:{if(l.id===-1)break;const u=new Event(Ae(q[l.type])),o=this.mirror.getNode(l.id);if(!o)return this.debugNodeNotFound(l,l.id);this.emitter.emit(z.MouseInteraction,{type:l.type,target:o});const{triggerFocus:c}=this.config;switch(l.type){case q.Blur:"blur"in o&&o.blur();break;case q.Focus:c&&o.focus&&o.focus({preventScroll:!0});break;case q.Click:case q.TouchStart:case q.TouchEnd:case q.MouseDown:case q.MouseUp:r?(l.type===q.TouchStart?this.touchActive=!0:l.type===q.TouchEnd&&(this.touchActive=!1),l.type===q.MouseDown?this.lastMouseDownEvent=[o,u]:l.type===q.MouseUp&&(this.lastMouseDownEvent=null),this.mousePos={x:l.x||0,y:l.y||0,id:l.id,debugData:l}):(l.type===q.TouchStart&&(this.tailPositions.length=0),this.moveAndHover(l.x||0,l.y||0,l.id,r,l),l.type===q.Click?(this.mouse.classList.remove("active"),this.mouse.offsetWidth,this.mouse.classList.add("active")):l.type===q.TouchStart?(this.mouse.offsetWidth,this.mouse.classList.add("touch-active")):l.type===q.TouchEnd?this.mouse.classList.remove("touch-active"):o.dispatchEvent(u));break;case q.TouchCancel:r?this.touchActive=!1:this.mouse.classList.remove("touch-active");break;default:o.dispatchEvent(u)}break}case A.Scroll:{if(l.id===-1)break;if(this.usingVirtualDom){const u=this.virtualDom.mirror.getNode(l.id);if(!u)return this.debugNodeNotFound(l,l.id);u.scrollData=l;break}this.applyScroll(l,r);break}case A.ViewportResize:this.emitter.emit(z.Resize,{width:l.width,height:l.height});break;case A.Input:{if(l.id===-1)break;if(this.usingVirtualDom){const u=this.virtualDom.mirror.getNode(l.id);if(!u)return this.debugNodeNotFound(l,l.id);u.inputData=l;break}this.applyInput(l);break}case A.MediaInteraction:{const u=this.usingVirtualDom?this.virtualDom.mirror.getNode(l.id):this.mirror.getNode(l.id);if(!u)return this.debugNodeNotFound(l,l.id);const o=u,{events:c}=this.service.state.context;this.mediaManager.mediaMutation({target:o,timeOffset:t.timestamp-c[0].timestamp,mutation:l});break}case A.StyleSheetRule:case A.StyleDeclaration:{this.usingVirtualDom?l.styleId?this.constructedStyleMutations.push(l):l.id&&((i=this.virtualDom.mirror.getNode(l.id))==null||i.rules.push(l)):this.applyStyleSheetMutation(l);break}case A.CanvasMutation:{if(!this.config.UNSAFE_replayCanvas)return;if(this.usingVirtualDom){const u=this.virtualDom.mirror.getNode(l.id);if(!u)return this.debugNodeNotFound(l,l.id);u.canvasMutations.push({event:t,mutation:l})}else{const u=this.mirror.getNode(l.id);if(!u)return this.debugNodeNotFound(l,l.id);os({event:t,mutation:l,target:u,imageMap:this.imageMap,canvasEventMap:this.canvasEventMap,errorHandler:this.warnCanvasMutationFailed.bind(this)})}break}case A.Font:{try{const u=new FontFace(l.family,l.buffer?new Uint8Array(JSON.parse(l.fontSource)):l.fontSource,l.descriptors);(a=this.iframe.contentDocument)==null||a.fonts.add(u)}catch(u){this.warn(u)}break}case A.Selection:{if(r){this.lastSelectionData=l;break}this.applySelection(l);break}case A.AdoptedStyleSheet:{this.usingVirtualDom?this.adoptedStyleSheets.push(l):this.applyAdoptedStyleSheet(l);break}}}applyMutation(t,r){if(this.config.useVirtualDom&&!this.usingVirtualDom&&r&&(this.usingVirtualDom=!0,Pl(this.iframe.contentDocument,this.mirror,this.virtualDom),Object.keys(this.legacy_missingNodeRetryMap).length))for(const c in this.legacy_missingNodeRetryMap)try{const n=this.legacy_missingNodeRetryMap[c],d=io(n.node,this.virtualDom,this.mirror);d&&(n.node=d)}catch(n){this.warn(n)}const s=this.usingVirtualDom?this.virtualDom.mirror:this.mirror;t.removes=t.removes.filter(c=>s.getNode(c.id)?!0:(this.warnNodeNotFound(t,c.id),!1)),t.removes.forEach(c=>{var n;const d=s.getNode(c.id);if(!d)return;let h=s.getNode(c.parentId);if(!h)return this.warnNodeNotFound(t,c.parentId);if(c.isShadow&&Ie(h)&&(h=h.shadowRoot),s.removeNodeFromMap(d),h)try{h.removeChild(d),this.usingVirtualDom&&d.nodeName==="#text"&&h.nodeName==="STYLE"&&((n=h.rules)==null?void 0:n.length)>0&&(h.rules=[])}catch(f){if(f instanceof DOMException)this.warn("parent could not remove child in mutation",h,d,t);else throw f}});const i=P({},this.legacy_missingNodeRetryMap),a=[],l=c=>{let n=null;return c.nextId&&(n=s.getNode(c.nextId)),c.nextId!==null&&c.nextId!==void 0&&c.nextId!==-1&&!n},u=c=>{var n,d;if(!this.iframe.contentDocument)return this.warn("Looks like your replayer has been destroyed.");let h=s.getNode(c.parentId);if(!h)return c.node.type===Se.Document?this.newDocumentQueue.push(c):a.push(c);c.node.isShadow&&(Ie(h)||h.attachShadow({mode:"open"}),h=h.shadowRoot);let f=null,m=null;if(c.previousId&&(f=s.getNode(c.previousId)),c.nextId&&(m=s.getNode(c.nextId)),l(c))return a.push(c);if(c.node.rootId&&!s.getNode(c.node.rootId))return;const p=c.node.rootId?s.getNode(c.node.rootId):this.usingVirtualDom?this.virtualDom:this.iframe.contentDocument;if(Ye(h,s)){this.attachDocumentToIframe(c,h);return}const g=(y,C)=>{if(!this.usingVirtualDom){vt(y);for(const v of this.config.plugins||[])v.onBuild&&v.onBuild(y,{id:C,replayer:this})}},w=tt(c.node,{doc:p,mirror:s,skipChild:!0,hackCss:!0,cache:this.cache,afterAppend:g});if(c.previousId===-1||c.nextId===-1){i[c.node.id]={node:w,mutation:c};return}const b=s.getMeta(h);if(b&&b.type===Se.Element&&c.node.type===Se.Text){const y=Array.isArray(h.childNodes)?h.childNodes:Array.from(h.childNodes);if(b.tagName==="textarea")for(const C of y)C.nodeType===h.TEXT_NODE&&h.removeChild(C);else if(b.tagName==="style"&&y.length===1)for(const C of y)C.nodeType===h.TEXT_NODE&&!s.hasNode(C)&&(w.textContent=C.textContent,h.removeChild(C))}else if((b==null?void 0:b.type)===Se.Document){const y=h;c.node.type===Se.DocumentType&&((n=y.childNodes[0])==null?void 0:n.nodeType)===Node.DOCUMENT_TYPE_NODE&&y.removeChild(y.childNodes[0]),w.nodeName==="HTML"&&y.documentElement&&y.removeChild(y.documentElement)}if(f&&f.nextSibling&&f.nextSibling.parentNode?h.insertBefore(w,f.nextSibling):m&&m.parentNode?h.contains(m)?h.insertBefore(w,m):h.insertBefore(w,null):h.appendChild(w),g(w,c.node.id),this.usingVirtualDom&&w.nodeName==="#text"&&h.nodeName==="STYLE"&&((d=h.rules)==null?void 0:d.length)>0&&(h.rules=[]),Ye(w,this.mirror)){const y=this.mirror.getId(w),C=this.newDocumentQueue.find(v=>v.parentId===y);C&&(this.attachDocumentToIframe(C,w),this.newDocumentQueue=this.newDocumentQueue.filter(v=>v!==C))}(c.previousId||c.nextId)&&this.legacy_resolveMissingNode(i,h,w,c)};t.adds.forEach(c=>{u(c)});const o=Date.now();for(;a.length;){const c=uo(a);if(a.length=0,Date.now()-o>500){this.warn("Timeout in the loop, please check the resolve tree data:",c);break}for(const n of c)s.getNode(n.value.parentId)?Ls(n,h=>{u(h)}):this.debug("Drop resolve tree since there is no parent for the root node.",n)}Object.keys(i).length&&Object.assign(this.legacy_missingNodeRetryMap,i),co(t.texts).forEach(c=>{var n;const d=s.getNode(c.id);if(!d)return t.removes.find(f=>f.id===c.id)?void 0:this.warnNodeNotFound(t,c.id);const h=d.parentElement;if(c.value&&h&&h.tagName==="STYLE"?d.textContent=Bt(c.value,this.cache):d.textContent=c.value,this.usingVirtualDom){const f=d.parentNode;((n=f==null?void 0:f.rules)==null?void 0:n.length)>0&&(f.rules=[])}}),t.attributes.forEach(c=>{var n;const d=s.getNode(c.id);if(!d)return t.removes.find(h=>h.id===c.id)?void 0:this.warnNodeNotFound(t,c.id);for(const h in c.attributes)if(typeof h=="string"){const f=c.attributes[h];if(f===null)d.removeAttribute(h),h==="open"&&zu(d,c);else if(typeof f=="string")try{if(h==="_cssText"&&(d.nodeName==="LINK"||d.nodeName==="STYLE"))try{const m=s.getMeta(d),p=tt(se(P({},m),{attributes:P(P({},m.attributes),c.attributes)}),{doc:d.ownerDocument,mirror:s,skipChild:!0,hackCss:!0,cache:this.cache});Object.assign(m.attributes,c.attributes);const g=d.nextSibling,w=d.parentNode;if(p&&w){w.removeChild(d),w.insertBefore(p,g),s.replace(c.id,p);break}}catch(m){}if(h==="value"&&d.nodeName==="TEXTAREA"){const m=d;m.childNodes.forEach(g=>m.removeChild(g));const p=(n=d.ownerDocument)==null?void 0:n.createTextNode(f);p&&m.appendChild(p)}else d.setAttribute(h,f);h==="rr_open_mode"&&d.nodeName==="DIALOG"&&vt(d,c)}catch(m){this.warn("An error occurred may due to the checkout feature.",m)}else if(h==="style"){const m=f,p=d;for(const g in m)if(m[g]===!1)p.style.removeProperty(g);else if(m[g]instanceof Array){const w=m[g];p.style.setProperty(g,w[0],w[1])}else{const w=m[g];p.style.setProperty(g,w)}}}})}applyScroll(t,r){var s,i;const a=this.mirror.getNode(t.id);if(!a)return this.debugNodeNotFound(t,t.id);const l=this.mirror.getMeta(a);if(a===this.iframe.contentDocument)(s=this.iframe.contentWindow)==null||s.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"});else if((l==null?void 0:l.type)===Se.Document)(i=a.defaultView)==null||i.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"});else try{a.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"})}catch(u){}}applyInput(t){const r=this.mirror.getNode(t.id);if(!r)return this.debugNodeNotFound(t,t.id);try{r.checked=t.isChecked,r.value=t.text}catch(s){}}applySelection(t){try{const r=new Set,s=t.ranges.map(({start:i,startOffset:a,end:l,endOffset:u})=>{const o=this.mirror.getNode(i),c=this.mirror.getNode(l);if(!o||!c)return;const n=new Range;n.setStart(o,a),n.setEnd(c,u);const d=o.ownerDocument,h=d==null?void 0:d.getSelection();return h&&r.add(h),{range:n,selection:h}});r.forEach(i=>i.removeAllRanges()),s.forEach(i=>{var a;return i&&((a=i.selection)==null?void 0:a.addRange(i.range))})}catch(r){}}applyStyleSheetMutation(t){var r;let s=null;t.styleId?s=this.styleMirror.getStyle(t.styleId):t.id&&(s=((r=this.mirror.getNode(t.id))==null?void 0:r.sheet)||null),s&&(t.source===A.StyleSheetRule?this.applyStyleSheetRule(t,s):t.source===A.StyleDeclaration&&this.applyStyleDeclaration(t,s))}applyStyleSheetRule(t,r){var s,i,a,l;if((s=t.adds)==null||s.forEach(({rule:u,index:o})=>{try{if(Array.isArray(o)){const{positions:c,index:n}=is(o),d=je(r.cssRules,c);d==null||d.insertRule(u,n)}else{const c=o===void 0?void 0:Math.min(o,r.cssRules.length);r==null||r.insertRule(u,c)}}catch(c){}}),(i=t.removes)==null||i.forEach(({index:u})=>{try{if(Array.isArray(u)){const{positions:o,index:c}=is(u),n=je(r.cssRules,o);n==null||n.deleteRule(c||0)}else r==null||r.deleteRule(u)}catch(o){}}),typeof t.replace=="string")try{(a=r.replace)==null||a.call(r,t.replace)}catch(u){}if(typeof t.replaceSync=="string")try{(l=r.replaceSync)==null||l.call(r,t.replaceSync)}catch(u){}}applyStyleDeclaration(t,r){if(t.set){const s=je(r.rules,t.index);s!=null&&s.style&&s.style.setProperty(t.set.property,t.set.value,t.set.priority)}if(t.remove){const s=je(r.rules,t.index);s!=null&&s.style&&s.style.removeProperty(t.remove.property)}}applyAdoptedStyleSheet(t){var r;const s=this.mirror.getNode(t.id);if(!s)return;(r=t.styles)==null||r.forEach(u=>{var o;let c=null,n=null;if(Ie(s)?n=((o=s.ownerDocument)==null?void 0:o.defaultView)||null:s.nodeName==="#document"&&(n=s.defaultView),!!n)try{c=new n.CSSStyleSheet,this.styleMirror.add(c,u.styleId),this.applyStyleSheetRule({source:A.StyleSheetRule,adds:u.rules},c)}catch(d){}});const i=10;let a=0;const l=(u,o)=>{const c=o.map(n=>this.styleMirror.getStyle(n)).filter(n=>n!==null);Ie(u)?u.shadowRoot.adoptedStyleSheets=c:u.nodeName==="#document"&&(u.adoptedStyleSheets=c),c.length!==o.length&&a<i&&(setTimeout(()=>l(u,o),0+100*a),a++)};l(s,t.styleIds)}legacy_resolveMissingNode(t,r,s,i){const{previousId:a,nextId:l}=i,u=a&&t[a],o=l&&t[l];if(u){const{node:c,mutation:n}=u;r.insertBefore(c,s),delete t[n.node.id],delete this.legacy_missingNodeRetryMap[n.node.id],(n.previousId||n.nextId)&&this.legacy_resolveMissingNode(t,r,c,n)}if(o){const{node:c,mutation:n}=o;r.insertBefore(c,s.nextSibling),delete t[n.node.id],delete this.legacy_missingNodeRetryMap[n.node.id],(n.previousId||n.nextId)&&this.legacy_resolveMissingNode(t,r,c,n)}}moveAndHover(t,r,s,i,a){const l=this.mirror.getNode(s);if(!l)return this.debugNodeNotFound(a,s);const u=Us(l,this.iframe),o=t*u.absoluteScale+u.x,c=r*u.absoluteScale+u.y;this.mouse.style.left=`${o}px`,this.mouse.style.top=`${c}px`,i||this.drawMouseTail({x:o,y:c}),this.hoverElements(l)}drawMouseTail(t){if(!this.mouseTail)return;const{lineCap:r,lineWidth:s,strokeStyle:i,duration:a}=this.config.mouseTail===!0?es:Object.assign({},es,this.config.mouseTail),l=()=>{if(!this.mouseTail)return;const u=this.mouseTail.getContext("2d");!u||!this.tailPositions.length||(u.clearRect(0,0,this.mouseTail.width,this.mouseTail.height),u.beginPath(),u.lineWidth=s,u.lineCap=r,u.strokeStyle=i,u.moveTo(this.tailPositions[0].x,this.tailPositions[0].y),this.tailPositions.forEach(o=>u.lineTo(o.x,o.y)),u.stroke())};this.tailPositions.push(t),l(),setTimeout(()=>{this.tailPositions=this.tailPositions.filter(u=>u!==t),l()},a/this.speedService.state.context.timer.speed)}hoverElements(t){var r;(r=this.lastHoveredRootNode||this.iframe.contentDocument)==null||r.querySelectorAll(".\\:hover").forEach(i=>{i.classList.remove(":hover")}),this.lastHoveredRootNode=t.getRootNode();let s=t;for(;s;)s.classList&&s.classList.add(":hover"),s=s.parentElement}isUserInteraction(t){return t.type!==_.IncrementalSnapshot?!1:t.data.source>A.Mutation&&t.data.source<=A.Input}backToNormal(){this.nextUserInteractionEvent=null,!this.speedService.state.matches("normal")&&(this.speedService.send({type:"BACK_TO_NORMAL"}),this.emitter.emit(z.SkipEnd,{speed:this.speedService.state.context.normalSpeed}))}warnNodeNotFound(t,r){this.warn(`Node with id '${r}' not found. `,t)}warnCanvasMutationFailed(t,r){this.warn("Has error on canvas update",r,"canvas mutation:",t)}debugNodeNotFound(t,r){this.debug(`Node with id '${r}' not found. `,t)}warn(...t){this.config.showWarning&&this.config.logger.warn(Nn,...t)}debug(...t){this.config.showDebug&&this.config.logger.log(Nn,...t)}}const{addCustomEvent:Gu}=Te,{freezePage:Hu}=Te,{takeFullSnapshot:Yu}=Te;exports.EventType=_;exports.IncrementalSource=A;exports.MouseInteractions=q;exports.Replayer=ju;exports.ReplayerEvents=z;exports.addCustomEvent=Gu;exports.canvasMutation=os;exports.freezePage=Hu;exports.record=Te;exports.takeFullSnapshot=Yu;exports.utils=Ql;
156
156
  if (typeof module.exports == "object" && typeof exports == "object") {
157
157
  var __cp = (to, from, except, desc) => {
158
158
  if ((from && typeof from === "object") || typeof from === "function") {