@betterbugs/replay 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.
- package/dist/replay.cjs +1 -1
- package/dist/replay.cjs.map +1 -1
- package/dist/replay.js +1 -1
- package/dist/replay.js.map +1 -1
- package/dist/replay.umd.cjs +1 -1
- package/dist/replay.umd.cjs.map +1 -1
- package/dist/replay.umd.min.cjs +1 -1
- package/dist/replay.umd.min.cjs.map +2 -2
- package/package.json +3 -3
- package/umd/replay.js +1 -1
- package/umd/replay.min.js +1 -1
package/dist/replay.umd.min.cjs
CHANGED
|
@@ -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 Yi(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n,s,l=r.call(e),o=[];try{for(;(t===void 0||t-- >0)&&!(n=l.next()).done;)o.push(n.value)}catch(a){s={error:a}}finally{try{n&&!n.done&&(r=l.return)&&r.call(l)}finally{if(s)throw s.error}}return o}var me;(function(e){e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped"})(me||(me={}));var Ds={type:"xstate.init"};function sr(e){return e===void 0?[]:[].concat(e)}function de(e){return{type:"xstate.assign",assignment:e}}function Hi(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 Fe(e){return function(t){return e===t}}function Ts(e){return typeof e=="string"?{type:e}:e}function Ji(e,t){return{value:e,context:t,actions:[],changed:!1,matches:Fe(e)}}function Xi(e,t,r){var n=t,s=!1;return[e.filter(function(l){if(l.type==="xstate.assign"){s=!0;var o=Object.assign({},n);return typeof l.assignment=="function"?o=l.assignment(n,r):Object.keys(l.assignment).forEach(function(a){o[a]=typeof l.assignment[a]=="function"?l.assignment[a](n,r):l.assignment[a]}),n=o,!1}return!0}),n,s]}function _s(e,t){t===void 0&&(t={});var r=Yi(Xi(sr(e.states[e.initial].entry).map(function(o){return Hi(o,t.actions)}),e.context,Ds),2),n=r[0],s=r[1],l={config:e,_options:t,initialState:{value:e.initial,actions:n,context:s,matches:Fe(e.initial)},transition:function(o,a){var c,h,i=typeof o=="string"?{value:o,context:e.context}:o,p=i.value,u=i.context,f=Ts(a),m=e.states[p];if(m.on){var d=sr(m.on[f.type]);try{for(var g=function(P){var j=typeof Symbol=="function"&&Symbol.iterator,ie=j&&P[j],q=0;if(ie)return ie.call(P);if(P&&typeof P.length=="number")return{next:function(){return P&&q>=P.length&&(P=void 0),{value:P&&P[q++],done:!P}}};throw new TypeError(j?"Object is not iterable.":"Symbol.iterator is not defined.")}(d),y=g.next();!y.done;y=g.next()){var w=y.value;if(w===void 0)return Ji(p,u);var S=typeof w=="string"?{target:w}:w,E=S.target,v=S.actions,b=v===void 0?[]:v,C=S.cond,R=C===void 0?function(){return!0}:C,O=E===void 0,N=E!=null?E:p,L=e.states[N];if(R(u,f)){var D=Yi(Xi((O?sr(b):[].concat(m.exit,b,L.entry).filter(function(P){return P})).map(function(P){return Hi(P,l._options.actions)}),u,f),3),x=D[0],oe=D[1],ee=D[2],J=E!=null?E:p;return{value:J,context:oe,actions:x,changed:E!==p||x.length>0||ee,matches:Fe(J)}}}}catch(P){c={error:P}}finally{try{y&&!y.done&&(h=g.return)&&h.call(g)}finally{if(c)throw c.error}}}return Ji(p,u)}};return l}var Qi=function(e,t){return e.actions.forEach(function(r){var n=r.exec;return n&&n(e.context,t)})};function Ps(e){var t=e.initialState,r=me.NotStarted,n=new Set,s={_machine:e,send:function(l){r===me.Running&&(t=e.transition(t,l),Qi(t,Ts(l)),n.forEach(function(o){return o(t)}))},subscribe:function(l){return n.add(l),l(t),{unsubscribe:function(){return n.delete(l)}}},start:function(l){if(l){var o=typeof l=="object"?l:{context:e.config.context,value:l};t={value:o.value,actions:[],context:o.context,matches:Fe(o.value)}}return r=me.Running,Qi(t,Ds),s},stop:function(){return r=me.Stopped,n.clear(),s},get state(){return t},get status(){return r}};return s}function _o(e,t){for(let r=e.length-1;r>=0;r--){const n=e[r];if(n.type===z.Meta&&n.timestamp<=t)return e.slice(r)}return e}function Po(e,{getCastFn:t,applyEventsSynchronously:r,emitter:n}){const s=_s({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:de({lastPlayedEvent:(l,o)=>o.type==="CAST_EVENT"?o.payload.event:l.lastPlayedEvent}),recordTimeOffset:de((l,o)=>{let a=l.timeOffset;return"payload"in o&&"timeOffset"in o.payload&&(a=o.payload.timeOffset),G(F({},l),{timeOffset:a,baselineTime:l.events[0].timestamp+a})}),play(l){var o;const{timer:a,events:c,baselineTime:h,lastPlayedEvent:i}=l;a.clear();for(const m of c)Gi(m,h);const p=_o(c,h);let u=i==null?void 0:i.timestamp;(i==null?void 0:i.type)===z.IncrementalSnapshot&&i.data.source===k.MouseMove&&(u=i.timestamp+((o=i.data.positions[0])==null?void 0:o.timeOffset)),h<(u||0)&&n.emit(I.PlayBack);const f=new Array;for(const m of p)if(!(u&&u<h&&(m.timestamp<=u||m===i)))if(m.timestamp<h)f.push(m);else{const d=t(m,!1);a.addAction({doAction:()=>{d()},delay:m.delay})}r(f),n.emit(I.Flush),a.start()},pause(l){l.timer.clear()},resetLastPlayedEvent:de(l=>G(F({},l),{lastPlayedEvent:null})),startLive:de({baselineTime:(l,o)=>(l.timer.start(),o.type==="TO_LIVE"&&o.payload.baselineTime?o.payload.baselineTime:Date.now())}),addEvent:de((l,o)=>{const{baselineTime:a,timer:c,events:h}=l;if(o.type==="ADD_EVENT"){const{event:i}=o.payload;Gi(i,a);let p=h.length-1;if(!h[p]||h[p].timestamp<=i.timestamp)h.push(i);else{let m=-1,d=0;for(;d<=p;){const g=Math.floor((d+p)/2);h[g].timestamp<=i.timestamp?d=g+1:p=g-1}m===-1&&(m=d),h.splice(m,0,i)}const u=i.timestamp<a,f=t(i,u);u?f():c.isActive()&&c.addAction({doAction:()=>{f()},delay:i.delay})}return G(F({},l),{events:h})})}});return Ps(s)}function Io(e){const t=_s({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,n)=>{"payload"in n&&r.timer.setSpeed(n.payload.speed)},recordSpeed:de({normalSpeed:r=>r.timer.speed}),restoreSpeed:r=>{r.timer.setSpeed(r.normalSpeed)}}});return Ps(t)}const ko=e=>[`.${e} { background: currentColor }`,"noscript { display: none !important; }"],Ki=new Map;function Is(e,t){let r=Ki.get(e);return r||(r=new Map,Ki.set(e,r)),r.has(t)||r.set(t,[]),r.get(t)}function ne(e,t,r){return async n=>{if(n&&typeof n=="object"&&"rr_type"in n)if(r&&(r.isUnchanged=!1),n.rr_type==="ImageBitmap"&&"args"in n){const s=await ne(e,t,r)(n.args);return await createImageBitmap.apply(null,s)}else if("index"in n){if(r||t===null)return n;const{rr_type:s,index:l}=n;return Is(t,s)[l]}else if("args"in n){const{rr_type:s,args:l}=n,o=window[s];return new o(...await Promise.all(l.map(ne(e,t,r))))}else{if("base64"in n)return Mo(n.base64);if("src"in n){const s=e.get(n.src);if(s)return s;{const l=new Image;return l.src=n.src,e.set(n.src,l),l}}else if("data"in n&&n.rr_type==="Blob"){const s=await Promise.all(n.data.map(ne(e,t,r)));return new Blob(s,{type:n.type})}}else if(Array.isArray(n))return await Promise.all(n.map(ne(e,t,r)));return n}}function Lo(e,t){try{return t===Le.WebGL?e.getContext("webgl")||e.getContext("experimental-webgl"):e.getContext("webgl2")}catch(r){return null}}const Fo=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject"];function Uo(e,t){if(!(t!=null&&t.constructor))return;const{name:r}=t.constructor;if(!Fo.includes(r))return;const n=Is(e,r);n.includes(t)||n.push(t)}async function Bo({mutation:e,target:t,type:r,imageMap:n,errorHandler:s}){try{const l=Lo(t,r);if(!l)return;if(e.setter){l[e.property]=e.args[0];return}const o=l[e.property],a=await Promise.all(e.args.map(ne(n,l))),c=o.apply(l,a);Uo(l,c);const h=!1}catch(l){s(e,l)}}async function $o({event:e,mutations:t,target:r,imageMap:n,errorHandler:s}){const l=r.getContext("2d");if(!l){s(t[0],new Error("Canvas context is null"));return}const o=t.map(async c=>Promise.all(c.args.map(ne(n,l))));(await Promise.all(o)).forEach((c,h)=>{const i=t[h];try{if(i.setter){l[i.property]=i.args[0];return}const p=l[i.property];i.property==="drawImage"&&typeof i.args[0]=="string"?(n.get(e),p.apply(l,i.args)):p.apply(l,c)}catch(p){s(i,p)}})}async function Zi({event:e,mutation:t,target:r,imageMap:n,canvasEventMap:s,errorHandler:l}){try{const o=s.get(e)||t,a="commands"in o?o.commands:[o];if([Le.WebGL,Le.WebGL2].includes(t.type)){for(let c=0;c<a.length;c++){const h=a[c];await Bo({mutation:h,type:t.type,target:r,imageMap:n,errorHandler:l})}return}await $o({event:e,mutations:a,target:r,imageMap:n,errorHandler:l})}catch(o){l(t,o)}}class zo{constructor(t){T(this,"mediaMap",new Map),T(this,"warn"),T(this,"service"),T(this,"speedService"),T(this,"emitter"),T(this,"getCurrentTime"),T(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(I.Start,this.start.bind(this)),this.emitter.on(I.SkipStart,this.start.bind(this)),this.emitter.on(I.Pause,this.pause.bind(this)),this.emitter.on(I.Finish,this.pause.bind(this)),this.speedService.subscribe(()=>{this.syncAllMediaElements()})}syncAllMediaElements(t={pause:!1}){this.mediaMap.forEach((r,n)=>{this.syncTargetWithState(n),t.pause&&n.pause()})}start(){this.syncAllMediaElements()}pause(){this.syncAllMediaElements({pause:!0})}seekTo({time:t,target:r,mediaState:n}){if(n.isPlaying){const l=(t-n.lastInteractionTimeOffset)/1e3*n.playbackRate,o="duration"in r&&r.duration;if(Number.isNaN(o)){this.waitForMetadata(r);return}let a=n.currentTimeAtLastInteraction+l;r.loop&&o!==!1&&(a=a%o),r.currentTime=a}else r.pause(),r.currentTime=n.currentTimeAtLastInteraction}waitForMetadata(t){if(this.metadataCallbackMap.has(t)||!("addEventListener"in t))return;const r=()=>{this.metadataCallbackMap.delete(t);const n=this.mediaMap.get(t);n&&this.seekTo({time:this.getCurrentTime(),target:t,mediaState:n})};this.metadataCallbackMap.set(t,r),t.addEventListener("loadedmetadata",r,{once:!0})}getMediaStateFromMutation({target:t,timeOffset:r,mutation:n}){var f,m,d,g,y;const s=this.mediaMap.get(t),{type:l,playbackRate:o,currentTime:a,muted:c,volume:h,loop:i}=n;return{isPlaying:l===lr.Play||l!==lr.Pause&&((s==null?void 0:s.isPlaying)||t.getAttribute("autoplay")!==null),currentTimeAtLastInteraction:(f=a!=null?a:s==null?void 0:s.currentTimeAtLastInteraction)!=null?f:0,lastInteractionTimeOffset:r,playbackRate:(m=o!=null?o:s==null?void 0:s.playbackRate)!=null?m:1,volume:(d=h!=null?h:s==null?void 0:s.volume)!=null?d:1,muted:(g=c!=null?c:s==null?void 0:s.muted)!=null?g:t.getAttribute("muted")===null,loop:(y=i!=null?i:s==null?void 0:s.loop)!=null?y:t.getAttribute("loop")===null}}syncTargetWithState(t){const r=this.mediaMap.get(t);if(!r)return;const{muted:n,loop:s,volume:l,isPlaying:o}=r,a=this.service.state.matches("paused"),c=r.playbackRate*this.speedService.state.context.timer.speed;try{this.seekTo({time:this.getCurrentTime(),target:t,mediaState:r}),t.volume!==l&&(t.volume=l),t.muted=n,t.loop=s,t.playbackRate!==c&&(t.playbackRate=c),o&&!a?t.play():t.pause()}catch(h){this.warn(`Failed to replay media interactions: ${h.message||h}`)}}addMediaElements(t,r,n){if(!["AUDIO","VIDEO"].includes(t.nodeName))return;const s=t,l=n.getMeta(s);if(!l||!("attributes"in l))return;const o=this.service.state.matches("paused"),a=l.attributes;let c=!1;a.rr_mediaState?c=a.rr_mediaState==="played":c=s.getAttribute("autoplay")!==null,c&&o&&s.pause();let h=1;typeof a.rr_mediaPlaybackRate=="number"&&(h=a.rr_mediaPlaybackRate);let i=!1;typeof a.rr_mediaMuted=="boolean"?i=a.rr_mediaMuted:i=s.getAttribute("muted")!==null;let p=!1;typeof a.rr_mediaLoop=="boolean"?p=a.rr_mediaLoop:p=s.getAttribute("loop")!==null;let u=1;typeof a.rr_mediaVolume=="number"&&(u=a.rr_mediaVolume);let f=0;typeof a.rr_mediaCurrentTime=="number"&&(f=a.rr_mediaCurrentTime),this.mediaMap.set(s,{isPlaying:c,currentTimeAtLastInteraction:f,lastInteractionTimeOffset:r,playbackRate:h,volume:u,muted:i,loop:p}),this.syncTargetWithState(s)}mediaMutation({target:t,timeOffset:r,mutation:n}){this.mediaMap.set(t,this.getMediaStateFromMutation({target:t,timeOffset:r,mutation:n})),this.syncTargetWithState(t)}isSupportedMediaElement(t){return["AUDIO","VIDEO"].includes(t.nodeName)}reset(){this.mediaMap.clear()}}function Pe(e,t){if(e.nodeName!=="DIALOG"||e instanceof K)return;const r=e,n=r.open,s=n&&r.matches("dialog:modal"),l=r.getAttribute("rr_open_mode"),o=typeof(t==null?void 0:t.attributes.open)=="string"||typeof r.getAttribute("open")=="string",a=l==="modal";if(!(n&&!(s&&l==="non-modal"||!s&&a))){if(!r.isConnected){console.warn("dialog is not attached to the dom",r);return}n&&r.close(),o&&(a?r.showModal():r.show())}}function Wo(e,t){if(e.nodeName!=="DIALOG"||e instanceof K)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 qo=5*1e3,Vo=Ao,es="[replayer]",nr={duration:500,lineCap:"round",lineWidth:3,strokeStyle:"red"};function ts(e){return e.type==z.IncrementalSnapshot&&(e.data.source==k.TouchMove||e.data.source==k.MouseInteraction&&e.data.type==V.TouchStart)}class jo{constructor(t,r){if(T(this,"wrapper"),T(this,"iframe"),T(this,"service"),T(this,"speedService"),T(this,"config"),T(this,"usingVirtualDom",!1),T(this,"virtualDom",new ge),T(this,"mouse"),T(this,"mouseTail",null),T(this,"tailPositions",[]),T(this,"emitter",Vo()),T(this,"nextUserInteractionEvent"),T(this,"legacy_missingNodeRetryMap",{}),T(this,"cache",ui()),T(this,"imageMap",new Map),T(this,"canvasEventMap",new Map),T(this,"mirror",is()),T(this,"styleMirror",new No),T(this,"mediaManager"),T(this,"firstFullSnapshot",null),T(this,"newDocumentQueue",[]),T(this,"mousePos",null),T(this,"touchActive",null),T(this,"lastMouseDownEvent",null),T(this,"lastHoveredRootNode"),T(this,"lastSelectionData",null),T(this,"constructedStyleMutations",[]),T(this,"adoptedStyleSheets",[]),T(this,"handleResize",a=>{this.iframe.style.display="inherit";for(const c of[this.mouseTail,this.iframe])c&&(c.setAttribute("width",String(a.width)),c.setAttribute("height",String(a.height)))}),T(this,"applyEventsSynchronously",a=>{for(const c of a){switch(c.type){case z.DomContentLoaded:case z.Load:case z.Custom:continue;case z.FullSnapshot:case z.Meta:case z.Plugin:case z.IncrementalSnapshot:break}this.getCastFn(c,!0)()}}),T(this,"getCastFn",(a,c=!1)=>{let h;switch(a.type){case z.DomContentLoaded:case z.Load:break;case z.Custom:h=()=>{this.emitter.emit(I.CustomEvent,a)};break;case z.Meta:h=()=>this.emitter.emit(I.Resize,{width:a.data.width,height:a.data.height});break;case z.FullSnapshot:h=()=>{var p;if(this.firstFullSnapshot){if(this.firstFullSnapshot===a){this.firstFullSnapshot=!0;return}}else this.firstFullSnapshot=!0;this.mediaManager.reset(),this.styleMirror.reset(),this.rebuildFullSnapshot(a,c),(p=this.iframe.contentWindow)==null||p.scrollTo(a.data.initialOffset)};break;case z.IncrementalSnapshot:h=()=>{if(this.applyIncremental(a,c),!c&&(a===this.nextUserInteractionEvent&&(this.nextUserInteractionEvent=null,this.backToNormal()),this.config.skipInactive&&!this.nextUserInteractionEvent)){for(const p of this.service.state.context.events)if(!(p.timestamp<=a.timestamp)&&this.isUserInteraction(p)){p.delay-a.delay>this.config.inactivePeriodThreshold*this.speedService.state.context.timer.speed&&(this.nextUserInteractionEvent=p);break}if(this.nextUserInteractionEvent){const p=this.nextUserInteractionEvent.delay-a.delay,u={speed:Math.min(Math.round(p/qo),this.config.maxSpeed)};this.speedService.send({type:"FAST_FORWARD",payload:u}),this.emitter.emit(I.SkipStart,u)}}};break}return()=>{h&&h();for(const u of this.config.plugins||[])u.handler&&u.handler(a,c,{replayer:this});this.service.send({type:"CAST_EVENT",payload:{event:a}});const p=this.service.state.context.events.length-1;if(!this.config.liveMode&&a===this.service.state.context.events[p]){const u=()=>{p<this.service.state.context.events.length-1||(this.backToNormal(),this.service.send("END"),this.emitter.emit(I.Finish))};let f=50;a.type===z.IncrementalSnapshot&&a.data.source===k.MouseMove&&a.data.positions.length&&(f+=Math.max(0,-a.data.positions[0].timeOffset)),setTimeout(u,f)}this.emitter.emit(I.EventCast,a)}}),!(r!=null&&r.liveMode)&&t.length<2)throw new Error("Replayer need at least 2 events.");const n={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:nr,useVirtualDom:!0,logger:console};this.config=Object.assign({},n,r),this.handleResize=this.handleResize.bind(this),this.getCastFn=this.getCastFn.bind(this),this.applyEventsSynchronously=this.applyEventsSynchronously.bind(this),this.emitter.on(I.Resize,this.handleResize),this.setupDom();for(const a of this.config.plugins||[])a.getMirror&&a.getMirror({nodeMirror:this.mirror});this.emitter.on(I.Flush,()=>{if(this.usingVirtualDom){const a={mirror:this.mirror,applyCanvas:(c,h,i)=>{Zi({event:c,mutation:h,target:i,imageMap:this.imageMap,canvasEventMap:this.canvasEventMap,errorHandler:this.warnCanvasMutationFailed.bind(this)})},applyInput:this.applyInput.bind(this),applyScroll:this.applyScroll.bind(this),applyStyleSheetMutation:(c,h)=>{c.source===k.StyleSheetRule?this.applyStyleSheetRule(c,h):c.source===k.StyleDeclaration&&this.applyStyleDeclaration(c,h)},afterAppend:(c,h)=>{for(const i of this.config.plugins||[])i.onBuild&&i.onBuild(c,{id:h,replayer:this})}};if(this.iframe.contentDocument)try{Ie(this.iframe.contentDocument,this.virtualDom,a,this.virtualDom.mirror)}catch(c){console.warn(c)}if(this.virtualDom.destroyTree(),this.usingVirtualDom=!1,Object.keys(this.legacy_missingNodeRetryMap).length)for(const c in this.legacy_missingNodeRetryMap)try{const h=this.legacy_missingNodeRetryMap[c],i=ke(h.node,this.mirror,this.virtualDom.mirror);Ie(i,h.node,a,this.virtualDom.mirror),h.node=i}catch(h){this.warn(h)}this.constructedStyleMutations.forEach(c=>{this.applyStyleSheetMutation(c)}),this.constructedStyleMutations=[],this.adoptedStyleSheets.forEach(c=>{this.applyAdoptedStyleSheet(c)}),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[a,c]=this.lastMouseDownEvent;a.dispatchEvent(c)}this.lastMouseDownEvent=null,this.lastSelectionData&&(this.applySelection(this.lastSelectionData),this.lastSelectionData=null)}),this.emitter.on(I.PlayBack,()=>{this.firstFullSnapshot=null,this.mirror.reset(),this.styleMirror.reset(),this.mediaManager.reset()});const s=new To([],{speed:this.config.speed});this.service=Po({events:t.map(a=>r&&r.unpackFn?r.unpackFn(a):a).sort((a,c)=>a.timestamp-c.timestamp),timer:s,timeOffset:0,baselineTime:0,lastPlayedEvent:null},{getCastFn:this.getCastFn,applyEventsSynchronously:this.applyEventsSynchronously,emitter:this.emitter}),this.service.start(),this.service.subscribe(a=>{this.emitter.emit(I.StateChange,{player:a})}),this.speedService=Io({normalSpeed:-1,timer:s}),this.speedService.start(),this.speedService.subscribe(a=>{this.emitter.emit(I.StateChange,{speed:a})}),this.mediaManager=new zo({warn:this.warn.bind(this),service:this.service,speedService:this.speedService,emitter:this.emitter,getCurrentTime:this.getCurrentTime.bind(this)});const l=this.service.state.context.events.find(a=>a.type===z.Meta),o=this.service.state.context.events.find(a=>a.type===z.FullSnapshot);if(l){const{width:a,height:c}=l.data;setTimeout(()=>{this.emitter.emit(I.Resize,{width:a,height:c})},0)}o&&setTimeout(()=>{var a;this.firstFullSnapshot||(this.firstFullSnapshot=o,this.rebuildFullSnapshot(o),(a=this.iframe.contentWindow)==null||a.scrollTo(o.data.initialOffset))},1),this.service.state.context.events.find(ts)&&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,n;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}})),(n=(r=this.iframe.contentDocument)==null?void 0:r.getElementsByTagName("html")[0])==null||n.classList.remove("rrweb-paused"),this.emitter.emit(I.Start)}pause(t){var r,n;t===void 0&&this.service.state.matches("playing")&&this.service.send({type:"PAUSE"}),typeof t=="number"&&(this.play(t),this.service.send({type:"PAUSE"})),(n=(r=this.iframe.contentDocument)==null?void 0:r.getElementsByTagName("html")[0])==null||n.classList.add("rrweb-paused"),this.emitter.emit(I.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(I.Resume)}destroy(){this.pause(),this.mirror.reset(),this.styleMirror.reset(),this.mediaManager.reset(),this.config.root.removeChild(this.wrapper),this.emitter.emit(I.Destroy)}startLive(t){this.service.send({type:"TO_LIVE",payload:{baselineTime:t}})}addEvent(t){const r=this.config.unpackFn?this.config.unpackFn(t):t;ts(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=ui()}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&&(Do(this.iframe.contentWindow,this.iframe.contentDocument),Co(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 n=[],s=new Set,l=(c,h)=>{if(c.nodeName==="DIALOG"&&s.add(c),this.collectIframeAndAttachDocument(n,c),this.mediaManager.isSupportedMediaElement(c)){const{events:i}=this.service.state.context;this.mediaManager.addMediaElements(c,t.timestamp-i[0].timestamp,this.mirror)}for(const i of this.config.plugins||[])i.onBuild&&i.onBuild(c,{id:h,replayer:this})};this.usingVirtualDom&&(this.virtualDom.destroyTree(),this.usingVirtualDom=!1),this.mirror.reset(),mn(t.data.node,{doc:this.iframe.contentDocument,afterAppend:l,cache:this.cache,mirror:this.mirror}),l(this.iframe.contentDocument,t.data.node.id);for(const{mutationInQueue:c,builtNode:h}of n)this.attachDocumentToIframe(c,h),this.newDocumentQueue=this.newDocumentQueue.filter(i=>i!==c);const{documentElement:o,head:a}=this.iframe.contentDocument;this.insertStyleRules(o,a),s.forEach(c=>Pe(c)),this.service.state.matches("playing")||this.iframe.contentDocument.getElementsByTagName("html")[0].classList.add("rrweb-paused"),this.emitter.emit(I.FullsnapshotRebuilded,t),r||this.waitForStylesheetLoad(),this.config.UNSAFE_replayCanvas&&this.preloadAllImages()}insertStyleRules(t,r){var n;const s=ko(this.config.blockClass).concat(this.config.insertStyleRules);if(this.config.pauseAnimation&&s.push("html.rrweb-paused *, html.rrweb-paused *:before, html.rrweb-paused *:after { animation-play-state: paused !important; }"),!!s.length)if(this.usingVirtualDom){const l=this.virtualDom.createElement("style");this.virtualDom.mirror.add(l,Ns(l,this.virtualDom.unserializedId)),t.insertBefore(l,r),l.rules.push({source:k.StyleSheetRule,adds:s.map((o,a)=>({rule:o,index:a}))})}else{const l=document.createElement("style");t.insertBefore(l,r);for(let o=0;o<s.length;o++)(n=l.sheet)==null||n.insertRule(s[o],o)}}attachDocumentToIframe(t,r){const n=this.usingVirtualDom?this.virtualDom.mirror:this.mirror,s=[],l=new Set,o=(a,c)=>{a.nodeName==="DIALOG"&&l.add(a),this.collectIframeAndAttachDocument(s,a);const h=n.getMeta(a);if((h==null?void 0:h.type)===se.Element&&(h==null?void 0:h.tagName.toUpperCase())==="HTML"){const{documentElement:i,head:p}=r.contentDocument;this.insertStyleRules(i,p)}if(!this.usingVirtualDom)for(const i of this.config.plugins||[])i.onBuild&&i.onBuild(a,{id:c,replayer:this})};Ee(t.node,{doc:r.contentDocument,mirror:n,hackCss:!0,skipChild:!1,afterAppend:o,cache:this.cache}),o(r.contentDocument,t.node.id);for(const{mutationInQueue:a,builtNode:c}of s)this.attachDocumentToIframe(a,c),this.newDocumentQueue=this.newDocumentQueue.filter(h=>h!==a);l.forEach(a=>Pe(a))}collectIframeAndAttachDocument(t,r){if(ir(r,this.mirror)){const n=this.newDocumentQueue.find(s=>s.parentId===this.mirror.getId(r));n&&t.push({mutationInQueue:n,builtNode:r})}}waitForStylesheetLoad(){var t;const r=(t=this.iframe.contentDocument)==null?void 0:t.head;if(r){const n=new Set;let s,l=this.service.state;const o=()=>{l=this.service.state};this.emitter.on(I.Start,o),this.emitter.on(I.Pause,o);const a=()=>{this.emitter.off(I.Start,o),this.emitter.off(I.Pause,o)};r.querySelectorAll('link[rel="stylesheet"]').forEach(c=>{if(!c.sheet){n.add(c);const h=()=>{n.delete(c),n.size===0&&s!==-1&&(l.matches("playing")&&this.play(this.getCurrentTime()),this.emitter.emit(I.LoadStylesheetEnd),s&&clearTimeout(s),a())};c.addEventListener("load",h),c.addEventListener("error",h)}}),n.size>0&&(this.service.send({type:"PAUSE"}),this.emitter.emit(I.LoadStylesheetStart),s=setTimeout(()=>{l.matches("playing")&&this.play(this.getCurrentTime()),s=-1,a()},this.config.loadTimeout))}}async preloadAllImages(){const t=[];for(const r of this.service.state.context.events)r.type===z.IncrementalSnapshot&&r.data.source===k.CanvasMutation&&(t.push(this.deserializeAndPreloadCanvasEvents(r.data,r)),("commands"in r.data?r.data.commands:[r.data]).forEach(s=>{this.preloadImages(s,r)}));return Promise.all(t)}preloadImages(t,r){if(t.property==="drawImage"&&typeof t.args[0]=="string"&&!this.imageMap.has(r)){const n=document.createElement("canvas"),s=n.getContext("2d"),l=s==null?void 0:s.createImageData(n.width,n.height);s==null||s.putImageData(l,0,0)}}async deserializeAndPreloadCanvasEvents(t,r){if(!this.canvasEventMap.has(r)){const n={isUnchanged:!0};if("commands"in t){const s=await Promise.all(t.commands.map(async l=>{const o=await Promise.all(l.args.map(ne(this.imageMap,null,n)));return G(F({},l),{args:o})}));n.isUnchanged===!1&&this.canvasEventMap.set(r,G(F({},t),{commands:s}))}else{const s=await Promise.all(t.args.map(ne(this.imageMap,null,n)));n.isUnchanged===!1&&this.canvasEventMap.set(r,G(F({},t),{args:s}))}}}applyIncremental(t,r){var n,s,l;const{data:o}=t;switch(o.source){case k.Mutation:{try{this.applyMutation(o,r)}catch(a){this.warn(`Exception in mutation ${a.message||a}`,o)}break}case k.Drag:case k.TouchMove:case k.MouseMove:if(r){const a=o.positions[o.positions.length-1];this.mousePos={x:a.x,y:a.y,id:a.id,debugData:o}}else o.positions.forEach(a=>{const c={doAction:()=>{this.moveAndHover(a.x,a.y,a.id,r,o)},delay:a.timeOffset+t.timestamp-this.service.state.context.baselineTime};this.timer.addAction(c)}),this.timer.addAction({doAction(){},delay:t.delay-((n=o.positions[0])==null?void 0:n.timeOffset)});break;case k.MouseInteraction:{if(o.id===-1)break;const a=new Event(qs(V[o.type])),c=this.mirror.getNode(o.id);if(!c)return this.debugNodeNotFound(o,o.id);this.emitter.emit(I.MouseInteraction,{type:o.type,target:c});const{triggerFocus:h}=this.config;switch(o.type){case V.Blur:"blur"in c&&c.blur();break;case V.Focus:h&&c.focus&&c.focus({preventScroll:!0});break;case V.Click:case V.TouchStart:case V.TouchEnd:case V.MouseDown:case V.MouseUp:r?(o.type===V.TouchStart?this.touchActive=!0:o.type===V.TouchEnd&&(this.touchActive=!1),o.type===V.MouseDown?this.lastMouseDownEvent=[c,a]:o.type===V.MouseUp&&(this.lastMouseDownEvent=null),this.mousePos={x:o.x||0,y:o.y||0,id:o.id,debugData:o}):(o.type===V.TouchStart&&(this.tailPositions.length=0),this.moveAndHover(o.x||0,o.y||0,o.id,r,o),o.type===V.Click?(this.mouse.classList.remove("active"),this.mouse.offsetWidth,this.mouse.classList.add("active")):o.type===V.TouchStart?(this.mouse.offsetWidth,this.mouse.classList.add("touch-active")):o.type===V.TouchEnd?this.mouse.classList.remove("touch-active"):c.dispatchEvent(a));break;case V.TouchCancel:r?this.touchActive=!1:this.mouse.classList.remove("touch-active");break;default:c.dispatchEvent(a)}break}case k.Scroll:{if(o.id===-1)break;if(this.usingVirtualDom){const a=this.virtualDom.mirror.getNode(o.id);if(!a)return this.debugNodeNotFound(o,o.id);a.scrollData=o;break}this.applyScroll(o,r);break}case k.ViewportResize:this.emitter.emit(I.Resize,{width:o.width,height:o.height});break;case k.Input:{if(o.id===-1)break;if(this.usingVirtualDom){const a=this.virtualDom.mirror.getNode(o.id);if(!a)return this.debugNodeNotFound(o,o.id);a.inputData=o;break}this.applyInput(o);break}case k.MediaInteraction:{const a=this.usingVirtualDom?this.virtualDom.mirror.getNode(o.id):this.mirror.getNode(o.id);if(!a)return this.debugNodeNotFound(o,o.id);const c=a,{events:h}=this.service.state.context;this.mediaManager.mediaMutation({target:c,timeOffset:t.timestamp-h[0].timestamp,mutation:o});break}case k.StyleSheetRule:case k.StyleDeclaration:{this.usingVirtualDom?o.styleId?this.constructedStyleMutations.push(o):o.id&&((s=this.virtualDom.mirror.getNode(o.id))==null||s.rules.push(o)):this.applyStyleSheetMutation(o);break}case k.CanvasMutation:{if(!this.config.UNSAFE_replayCanvas)return;if(this.usingVirtualDom){const a=this.virtualDom.mirror.getNode(o.id);if(!a)return this.debugNodeNotFound(o,o.id);a.canvasMutations.push({event:t,mutation:o})}else{const a=this.mirror.getNode(o.id);if(!a)return this.debugNodeNotFound(o,o.id);Zi({event:t,mutation:o,target:a,imageMap:this.imageMap,canvasEventMap:this.canvasEventMap,errorHandler:this.warnCanvasMutationFailed.bind(this)})}break}case k.Font:{try{const a=new FontFace(o.family,o.buffer?new Uint8Array(JSON.parse(o.fontSource)):o.fontSource,o.descriptors);(l=this.iframe.contentDocument)==null||l.fonts.add(a)}catch(a){this.warn(a)}break}case k.Selection:{if(r){this.lastSelectionData=o;break}this.applySelection(o);break}case k.AdoptedStyleSheet:{this.usingVirtualDom?this.adoptedStyleSheets.push(o):this.applyAdoptedStyleSheet(o);break}}}applyMutation(t,r){if(this.config.useVirtualDom&&!this.usingVirtualDom&&r&&(this.usingVirtualDom=!0,io(this.iframe.contentDocument,this.mirror,this.virtualDom),Object.keys(this.legacy_missingNodeRetryMap).length))for(const h in this.legacy_missingNodeRetryMap)try{const i=this.legacy_missingNodeRetryMap[h],p=Rs(i.node,this.virtualDom,this.mirror);p&&(i.node=p)}catch(i){this.warn(i)}const n=this.usingVirtualDom?this.virtualDom.mirror:this.mirror;t.removes=t.removes.filter(h=>n.getNode(h.id)?!0:(this.warnNodeNotFound(t,h.id),!1)),t.removes.forEach(h=>{var i;const p=n.getNode(h.id);if(!p)return;let u=n.getNode(h.parentId);if(!u)return this.warnNodeNotFound(t,h.parentId);if(h.isShadow&&Te(u)&&(u=u.shadowRoot),n.removeNodeFromMap(p),u)try{u.removeChild(p),this.usingVirtualDom&&p.nodeName==="#text"&&u.nodeName==="STYLE"&&((i=u.rules)==null?void 0:i.length)>0&&(u.rules=[])}catch(f){if(f instanceof DOMException)this.warn("parent could not remove child in mutation",u,p,t);else throw f}});const s=F({},this.legacy_missingNodeRetryMap),l=[],o=h=>{let i=null;return h.nextId&&(i=n.getNode(h.nextId)),h.nextId!==null&&h.nextId!==void 0&&h.nextId!==-1&&!i},a=h=>{var i,p;if(!this.iframe.contentDocument)return this.warn("Looks like your replayer has been destroyed.");let u=n.getNode(h.parentId);if(!u)return h.node.type===se.Document?this.newDocumentQueue.push(h):l.push(h);h.node.isShadow&&(Te(u)||u.attachShadow({mode:"open"}),u=u.shadowRoot);let f=null,m=null;if(h.previousId&&(f=n.getNode(h.previousId)),h.nextId&&(m=n.getNode(h.nextId)),o(h))return l.push(h);if(h.node.rootId&&!n.getNode(h.node.rootId))return;const d=h.node.rootId?n.getNode(h.node.rootId):this.usingVirtualDom?this.virtualDom:this.iframe.contentDocument;if(ir(u,n)){this.attachDocumentToIframe(h,u);return}const g=(S,E)=>{if(!this.usingVirtualDom){Pe(S);for(const v of this.config.plugins||[])v.onBuild&&v.onBuild(S,{id:E,replayer:this})}},y=Ee(h.node,{doc:d,mirror:n,skipChild:!0,hackCss:!0,cache:this.cache,afterAppend:g});if(h.previousId===-1||h.nextId===-1){s[h.node.id]={node:y,mutation:h};return}const w=n.getMeta(u);if(w&&w.type===se.Element&&h.node.type===se.Text){const S=Array.isArray(u.childNodes)?u.childNodes:Array.from(u.childNodes);if(w.tagName==="textarea")for(const E of S)E.nodeType===u.TEXT_NODE&&u.removeChild(E);else if(w.tagName==="style"&&S.length===1)for(const E of S)E.nodeType===u.TEXT_NODE&&!n.hasNode(E)&&(y.textContent=E.textContent,u.removeChild(E))}else if((w==null?void 0:w.type)===se.Document){const S=u;h.node.type===se.DocumentType&&((i=S.childNodes[0])==null?void 0:i.nodeType)===Node.DOCUMENT_TYPE_NODE&&S.removeChild(S.childNodes[0]),y.nodeName==="HTML"&&S.documentElement&&S.removeChild(S.documentElement)}if(f&&f.nextSibling&&f.nextSibling.parentNode?u.insertBefore(y,f.nextSibling):m&&m.parentNode?u.contains(m)?u.insertBefore(y,m):u.insertBefore(y,null):u.appendChild(y),g(y,h.node.id),this.usingVirtualDom&&y.nodeName==="#text"&&u.nodeName==="STYLE"&&((p=u.rules)==null?void 0:p.length)>0&&(u.rules=[]),ir(y,this.mirror)){const S=this.mirror.getId(y),E=this.newDocumentQueue.find(v=>v.parentId===S);E&&(this.attachDocumentToIframe(E,y),this.newDocumentQueue=this.newDocumentQueue.filter(v=>v!==E))}(h.previousId||h.nextId)&&this.legacy_resolveMissingNode(s,u,y,h)};t.adds.forEach(h=>{a(h)});const c=Date.now();for(;l.length;){const h=xo(l);if(l.length=0,Date.now()-c>500){this.warn("Timeout in the loop, please check the resolve tree data:",h);break}for(const i of h)n.getNode(i.value.parentId)?Os(i,u=>{a(u)}):this.debug("Drop resolve tree since there is no parent for the root node.",i)}Object.keys(s).length&&Object.assign(this.legacy_missingNodeRetryMap,s),Ro(t.texts).forEach(h=>{var i;const p=n.getNode(h.id);if(!p)return t.removes.find(f=>f.id===h.id)?void 0:this.warnNodeNotFound(t,h.id);const u=p.parentElement;if(h.value&&u&&u.tagName==="STYLE"?p.textContent=qe(h.value,this.cache):p.textContent=h.value,this.usingVirtualDom){const f=p.parentNode;((i=f==null?void 0:f.rules)==null?void 0:i.length)>0&&(f.rules=[])}}),t.attributes.forEach(h=>{var i;const p=n.getNode(h.id);if(!p)return t.removes.find(u=>u.id===h.id)?void 0:this.warnNodeNotFound(t,h.id);for(const u in h.attributes)if(typeof u=="string"){const f=h.attributes[u];if(f===null)p.removeAttribute(u),u==="open"&&Wo(p,h);else if(typeof f=="string")try{if(u==="_cssText"&&(p.nodeName==="LINK"||p.nodeName==="STYLE"))try{const m=n.getMeta(p),d=Ee(G(F({},m),{attributes:F(F({},m.attributes),h.attributes)}),{doc:p.ownerDocument,mirror:n,skipChild:!0,hackCss:!0,cache:this.cache});Object.assign(m.attributes,h.attributes);const g=p.nextSibling,y=p.parentNode;if(d&&y){y.removeChild(p),y.insertBefore(d,g),n.replace(h.id,d);break}}catch(m){}if(u==="value"&&p.nodeName==="TEXTAREA"){const m=p;m.childNodes.forEach(g=>m.removeChild(g));const d=(i=p.ownerDocument)==null?void 0:i.createTextNode(f);d&&m.appendChild(d)}else p.setAttribute(u,f);u==="rr_open_mode"&&p.nodeName==="DIALOG"&&Pe(p,h)}catch(m){this.warn("An error occurred may due to the checkout feature.",m)}else if(u==="style"){const m=f,d=p;for(const g in m)if(m[g]===!1)d.style.removeProperty(g);else if(m[g]instanceof Array){const y=m[g];d.style.setProperty(g,y[0],y[1])}else{const y=m[g];d.style.setProperty(g,y)}}}})}applyScroll(t,r){var n,s;const l=this.mirror.getNode(t.id);if(!l)return this.debugNodeNotFound(t,t.id);const o=this.mirror.getMeta(l);if(l===this.iframe.contentDocument)(n=this.iframe.contentWindow)==null||n.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"});else if((o==null?void 0:o.type)===se.Document)(s=l.defaultView)==null||s.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"});else try{l.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"})}catch(a){}}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(n){}}applySelection(t){try{const r=new Set,n=t.ranges.map(({start:s,startOffset:l,end:o,endOffset:a})=>{const c=this.mirror.getNode(s),h=this.mirror.getNode(o);if(!c||!h)return;const i=new Range;i.setStart(c,l),i.setEnd(h,a);const p=c.ownerDocument,u=p==null?void 0:p.getSelection();return u&&r.add(u),{range:i,selection:u}});r.forEach(s=>s.removeAllRanges()),n.forEach(s=>{var l;return s&&((l=s.selection)==null?void 0:l.addRange(s.range))})}catch(r){}}applyStyleSheetMutation(t){var r;let n=null;t.styleId?n=this.styleMirror.getStyle(t.styleId):t.id&&(n=((r=this.mirror.getNode(t.id))==null?void 0:r.sheet)||null),n&&(t.source===k.StyleSheetRule?this.applyStyleSheetRule(t,n):t.source===k.StyleDeclaration&&this.applyStyleDeclaration(t,n))}applyStyleSheetRule(t,r){var n,s,l,o;if((n=t.adds)==null||n.forEach(({rule:a,index:c})=>{try{if(Array.isArray(c)){const{positions:h,index:i}=Vi(c),p=be(r.cssRules,h);p==null||p.insertRule(a,i)}else{const h=c===void 0?void 0:Math.min(c,r.cssRules.length);r==null||r.insertRule(a,h)}}catch(h){}}),(s=t.removes)==null||s.forEach(({index:a})=>{try{if(Array.isArray(a)){const{positions:c,index:h}=Vi(a),i=be(r.cssRules,c);i==null||i.deleteRule(h||0)}else r==null||r.deleteRule(a)}catch(c){}}),typeof t.replace=="string")try{(l=r.replace)==null||l.call(r,t.replace)}catch(a){}if(typeof t.replaceSync=="string")try{(o=r.replaceSync)==null||o.call(r,t.replaceSync)}catch(a){}}applyStyleDeclaration(t,r){if(t.set){const n=be(r.rules,t.index);n!=null&&n.style&&n.style.setProperty(t.set.property,t.set.value,t.set.priority)}if(t.remove){const n=be(r.rules,t.index);n!=null&&n.style&&n.style.removeProperty(t.remove.property)}}applyAdoptedStyleSheet(t){var r;const n=this.mirror.getNode(t.id);if(!n)return;(r=t.styles)==null||r.forEach(a=>{var c;let h=null,i=null;if(Te(n)?i=((c=n.ownerDocument)==null?void 0:c.defaultView)||null:n.nodeName==="#document"&&(i=n.defaultView),!!i)try{h=new i.CSSStyleSheet,this.styleMirror.add(h,a.styleId),this.applyStyleSheetRule({source:k.StyleSheetRule,adds:a.rules},h)}catch(p){}});const s=10;let l=0;const o=(a,c)=>{const h=c.map(i=>this.styleMirror.getStyle(i)).filter(i=>i!==null);Te(a)?a.shadowRoot.adoptedStyleSheets=h:a.nodeName==="#document"&&(a.adoptedStyleSheets=h),h.length!==c.length&&l<s&&(setTimeout(()=>o(a,c),0+100*l),l++)};o(n,t.styleIds)}legacy_resolveMissingNode(t,r,n,s){const{previousId:l,nextId:o}=s,a=l&&t[l],c=o&&t[o];if(a){const{node:h,mutation:i}=a;r.insertBefore(h,n),delete t[i.node.id],delete this.legacy_missingNodeRetryMap[i.node.id],(i.previousId||i.nextId)&&this.legacy_resolveMissingNode(t,r,h,i)}if(c){const{node:h,mutation:i}=c;r.insertBefore(h,n.nextSibling),delete t[i.node.id],delete this.legacy_missingNodeRetryMap[i.node.id],(i.previousId||i.nextId)&&this.legacy_resolveMissingNode(t,r,h,i)}}moveAndHover(t,r,n,s,l){const o=this.mirror.getNode(n);if(!o)return this.debugNodeNotFound(l,n);const a=As(o,this.iframe),c=t*a.absoluteScale+a.x,h=r*a.absoluteScale+a.y;this.mouse.style.left=`${c}px`,this.mouse.style.top=`${h}px`,s||this.drawMouseTail({x:c,y:h}),this.hoverElements(o)}drawMouseTail(t){if(!this.mouseTail)return;const{lineCap:r,lineWidth:n,strokeStyle:s,duration:l}=this.config.mouseTail===!0?nr:Object.assign({},nr,this.config.mouseTail),o=()=>{if(!this.mouseTail)return;const a=this.mouseTail.getContext("2d");!a||!this.tailPositions.length||(a.clearRect(0,0,this.mouseTail.width,this.mouseTail.height),a.beginPath(),a.lineWidth=n,a.lineCap=r,a.strokeStyle=s,a.moveTo(this.tailPositions[0].x,this.tailPositions[0].y),this.tailPositions.forEach(c=>a.lineTo(c.x,c.y)),a.stroke())};this.tailPositions.push(t),o(),setTimeout(()=>{this.tailPositions=this.tailPositions.filter(a=>a!==t),o()},l/this.speedService.state.context.timer.speed)}hoverElements(t){var r;(r=this.lastHoveredRootNode||this.iframe.contentDocument)==null||r.querySelectorAll(".\\:hover").forEach(s=>{s.classList.remove(":hover")}),this.lastHoveredRootNode=t.getRootNode();let n=t;for(;n;)n.classList&&n.classList.add(":hover"),n=n.parentElement}isUserInteraction(t){return t.type!==z.IncrementalSnapshot?!1:t.data.source>k.Mutation&&t.data.source<=k.Input}backToNormal(){this.nextUserInteractionEvent=null,!this.speedService.state.matches("normal")&&(this.speedService.send({type:"BACK_TO_NORMAL"}),this.emitter.emit(I.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(es,...t)}debug(...t){this.config.showDebug&&this.config.logger.log(es,...t)}}exports.Replayer=jo;
|
|
155
|
+
***************************************************************************** */function Yi(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n,s,l=r.call(e),o=[];try{for(;(t===void 0||t-- >0)&&!(n=l.next()).done;)o.push(n.value)}catch(a){s={error:a}}finally{try{n&&!n.done&&(r=l.return)&&r.call(l)}finally{if(s)throw s.error}}return o}var me;(function(e){e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped"})(me||(me={}));var Ds={type:"xstate.init"};function sr(e){return e===void 0?[]:[].concat(e)}function de(e){return{type:"xstate.assign",assignment:e}}function Hi(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 Fe(e){return function(t){return e===t}}function Ts(e){return typeof e=="string"?{type:e}:e}function Ji(e,t){return{value:e,context:t,actions:[],changed:!1,matches:Fe(e)}}function Xi(e,t,r){var n=t,s=!1;return[e.filter(function(l){if(l.type==="xstate.assign"){s=!0;var o=Object.assign({},n);return typeof l.assignment=="function"?o=l.assignment(n,r):Object.keys(l.assignment).forEach(function(a){o[a]=typeof l.assignment[a]=="function"?l.assignment[a](n,r):l.assignment[a]}),n=o,!1}return!0}),n,s]}function _s(e,t){t===void 0&&(t={});var r=Yi(Xi(sr(e.states[e.initial].entry).map(function(o){return Hi(o,t.actions)}),e.context,Ds),2),n=r[0],s=r[1],l={config:e,_options:t,initialState:{value:e.initial,actions:n,context:s,matches:Fe(e.initial)},transition:function(o,a){var c,h,i=typeof o=="string"?{value:o,context:e.context}:o,p=i.value,u=i.context,f=Ts(a),m=e.states[p];if(m.on){var d=sr(m.on[f.type]);try{for(var g=function(P){var j=typeof Symbol=="function"&&Symbol.iterator,ie=j&&P[j],q=0;if(ie)return ie.call(P);if(P&&typeof P.length=="number")return{next:function(){return P&&q>=P.length&&(P=void 0),{value:P&&P[q++],done:!P}}};throw new TypeError(j?"Object is not iterable.":"Symbol.iterator is not defined.")}(d),y=g.next();!y.done;y=g.next()){var w=y.value;if(w===void 0)return Ji(p,u);var S=typeof w=="string"?{target:w}:w,E=S.target,v=S.actions,b=v===void 0?[]:v,C=S.cond,R=C===void 0?function(){return!0}:C,O=E===void 0,N=E!=null?E:p,L=e.states[N];if(R(u,f)){var D=Yi(Xi((O?sr(b):[].concat(m.exit,b,L.entry).filter(function(P){return P})).map(function(P){return Hi(P,l._options.actions)}),u,f),3),x=D[0],oe=D[1],ee=D[2],J=E!=null?E:p;return{value:J,context:oe,actions:x,changed:E!==p||x.length>0||ee,matches:Fe(J)}}}}catch(P){c={error:P}}finally{try{y&&!y.done&&(h=g.return)&&h.call(g)}finally{if(c)throw c.error}}}return Ji(p,u)}};return l}var Qi=function(e,t){return e.actions.forEach(function(r){var n=r.exec;return n&&n(e.context,t)})};function Ps(e){var t=e.initialState,r=me.NotStarted,n=new Set,s={_machine:e,send:function(l){r===me.Running&&(t=e.transition(t,l),Qi(t,Ts(l)),n.forEach(function(o){return o(t)}))},subscribe:function(l){return n.add(l),l(t),{unsubscribe:function(){return n.delete(l)}}},start:function(l){if(l){var o=typeof l=="object"?l:{context:e.config.context,value:l};t={value:o.value,actions:[],context:o.context,matches:Fe(o.value)}}return r=me.Running,Qi(t,Ds),s},stop:function(){return r=me.Stopped,n.clear(),s},get state(){return t},get status(){return r}};return s}function _o(e,t){for(let r=e.length-1;r>=0;r--){const n=e[r];if(n.type===z.Meta&&n.timestamp<=t)return e.slice(r)}return e}function Po(e,{getCastFn:t,applyEventsSynchronously:r,emitter:n}){const s=_s({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:de({lastPlayedEvent:(l,o)=>o.type==="CAST_EVENT"?o.payload.event:l.lastPlayedEvent}),recordTimeOffset:de((l,o)=>{let a=l.timeOffset;return"payload"in o&&"timeOffset"in o.payload&&(a=o.payload.timeOffset),G(F({},l),{timeOffset:a,baselineTime:l.events[0].timestamp+a})}),play(l){var o;const{timer:a,events:c,baselineTime:h,lastPlayedEvent:i}=l;a.clear();for(const m of c)Gi(m,h);const p=_o(c,h);let u=i==null?void 0:i.timestamp;(i==null?void 0:i.type)===z.IncrementalSnapshot&&i.data.source===k.MouseMove&&(u=i.timestamp+((o=i.data.positions[0])==null?void 0:o.timeOffset)),h<(u||0)&&n.emit(I.PlayBack);const f=new Array;for(const m of p)if(!(u&&u<h&&(m.timestamp<=u||m===i)))if(m.timestamp<h)f.push(m);else{const d=t(m,!1);a.addAction({doAction:()=>{d()},delay:m.delay})}r(f),n.emit(I.Flush),a.start()},pause(l){l.timer.clear()},resetLastPlayedEvent:de(l=>G(F({},l),{lastPlayedEvent:null})),startLive:de({baselineTime:(l,o)=>(l.timer.start(),o.type==="TO_LIVE"&&o.payload.baselineTime?o.payload.baselineTime:Date.now())}),addEvent:de((l,o)=>{const{baselineTime:a,timer:c,events:h}=l;if(o.type==="ADD_EVENT"){const{event:i}=o.payload;Gi(i,a);let p=h.length-1;if(!h[p]||h[p].timestamp<=i.timestamp)h.push(i);else{let m=-1,d=0;for(;d<=p;){const g=Math.floor((d+p)/2);h[g].timestamp<=i.timestamp?d=g+1:p=g-1}m===-1&&(m=d),h.splice(m,0,i)}const u=i.timestamp<a,f=t(i,u);u?f():c.isActive()&&c.addAction({doAction:()=>{f()},delay:i.delay})}return G(F({},l),{events:h})})}});return Ps(s)}function Io(e){const t=_s({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,n)=>{"payload"in n&&r.timer.setSpeed(n.payload.speed)},recordSpeed:de({normalSpeed:r=>r.timer.speed}),restoreSpeed:r=>{r.timer.setSpeed(r.normalSpeed)}}});return Ps(t)}const ko=e=>[`.${e} { background: currentColor }`,"noscript { display: none !important; }"],Ki=new Map;function Is(e,t){let r=Ki.get(e);return r||(r=new Map,Ki.set(e,r)),r.has(t)||r.set(t,[]),r.get(t)}function ne(e,t,r){return async n=>{if(n&&typeof n=="object"&&"rr_type"in n)if(r&&(r.isUnchanged=!1),n.rr_type==="ImageBitmap"&&"args"in n){const s=await ne(e,t,r)(n.args);return await createImageBitmap.apply(null,s)}else if("index"in n){if(r||t===null)return n;const{rr_type:s,index:l}=n;return Is(t,s)[l]}else if("args"in n){const{rr_type:s,args:l}=n,o=window[s];return new o(...await Promise.all(l.map(ne(e,t,r))))}else{if("base64"in n)return Mo(n.base64);if("src"in n){const s=e.get(n.src);if(s)return s;{const l=new Image;return l.src=n.src,e.set(n.src,l),l}}else if("data"in n&&n.rr_type==="Blob"){const s=await Promise.all(n.data.map(ne(e,t,r)));return new Blob(s,{type:n.type})}}else if(Array.isArray(n))return await Promise.all(n.map(ne(e,t,r)));return n}}function Lo(e,t){try{return t===Le.WebGL?e.getContext("webgl")||e.getContext("experimental-webgl"):e.getContext("webgl2")}catch(r){return null}}const Fo=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject"];function Uo(e,t){if(!(t!=null&&t.constructor))return;const{name:r}=t.constructor;if(!Fo.includes(r))return;const n=Is(e,r);n.includes(t)||n.push(t)}async function Bo({mutation:e,target:t,type:r,imageMap:n,errorHandler:s}){try{const l=Lo(t,r);if(!l)return;if(e.setter){l[e.property]=e.args[0];return}const o=l[e.property],a=await Promise.all(e.args.map(ne(n,l))),c=o.apply(l,a);Uo(l,c);const h=!1}catch(l){s(e,l)}}async function $o({event:e,mutations:t,target:r,imageMap:n,errorHandler:s}){const l=r.getContext("2d");if(!l){s(t[0],new Error("Canvas context is null"));return}const o=t.map(async c=>Promise.all(c.args.map(ne(n,l))));(await Promise.all(o)).forEach((c,h)=>{const i=t[h];try{if(i.setter){l[i.property]=i.args[0];return}const p=l[i.property];i.property==="drawImage"&&typeof i.args[0]=="string"?(n.get(e),p.apply(l,i.args)):p.apply(l,c)}catch(p){s(i,p)}})}async function Zi({event:e,mutation:t,target:r,imageMap:n,canvasEventMap:s,errorHandler:l}){try{const o=s.get(e)||t,a="commands"in o?o.commands:[o];if([Le.WebGL,Le.WebGL2].includes(t.type)){for(let c=0;c<a.length;c++){const h=a[c];await Bo({mutation:h,type:t.type,target:r,imageMap:n,errorHandler:l})}return}await $o({event:e,mutations:a,target:r,imageMap:n,errorHandler:l})}catch(o){l(t,o)}}class zo{constructor(t){T(this,"mediaMap",new Map),T(this,"warn"),T(this,"service"),T(this,"speedService"),T(this,"emitter"),T(this,"getCurrentTime"),T(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(I.Start,this.start.bind(this)),this.emitter.on(I.SkipStart,this.start.bind(this)),this.emitter.on(I.Pause,this.pause.bind(this)),this.emitter.on(I.Finish,this.pause.bind(this)),this.speedService.subscribe(()=>{this.syncAllMediaElements()})}syncAllMediaElements(t={pause:!1}){this.mediaMap.forEach((r,n)=>{this.syncTargetWithState(n),t.pause&&n.pause()})}start(){this.syncAllMediaElements()}pause(){this.syncAllMediaElements({pause:!0})}seekTo({time:t,target:r,mediaState:n}){if(n.isPlaying){const l=(t-n.lastInteractionTimeOffset)/1e3*n.playbackRate,o="duration"in r&&r.duration;if(Number.isNaN(o)){this.waitForMetadata(r);return}let a=n.currentTimeAtLastInteraction+l;r.loop&&o!==!1&&(a=a%o),r.currentTime=a}else r.pause(),r.currentTime=n.currentTimeAtLastInteraction}waitForMetadata(t){if(this.metadataCallbackMap.has(t)||!("addEventListener"in t))return;const r=()=>{this.metadataCallbackMap.delete(t);const n=this.mediaMap.get(t);n&&this.seekTo({time:this.getCurrentTime(),target:t,mediaState:n})};this.metadataCallbackMap.set(t,r),t.addEventListener("loadedmetadata",r,{once:!0})}getMediaStateFromMutation({target:t,timeOffset:r,mutation:n}){var f,m,d,g,y;const s=this.mediaMap.get(t),{type:l,playbackRate:o,currentTime:a,muted:c,volume:h,loop:i}=n;return{isPlaying:l===lr.Play||l!==lr.Pause&&((s==null?void 0:s.isPlaying)||t.getAttribute("autoplay")!==null),currentTimeAtLastInteraction:(f=a!=null?a:s==null?void 0:s.currentTimeAtLastInteraction)!=null?f:0,lastInteractionTimeOffset:r,playbackRate:(m=o!=null?o:s==null?void 0:s.playbackRate)!=null?m:1,volume:(d=h!=null?h:s==null?void 0:s.volume)!=null?d:1,muted:(g=c!=null?c:s==null?void 0:s.muted)!=null?g:t.getAttribute("muted")===null,loop:(y=i!=null?i:s==null?void 0:s.loop)!=null?y:t.getAttribute("loop")===null}}syncTargetWithState(t){const r=this.mediaMap.get(t);if(!r)return;const{muted:n,loop:s,volume:l,isPlaying:o}=r,a=this.service.state.matches("paused"),c=r.playbackRate*this.speedService.state.context.timer.speed;try{this.seekTo({time:this.getCurrentTime(),target:t,mediaState:r}),t.volume!==l&&(t.volume=l),t.muted=n,t.loop=s,t.playbackRate!==c&&(t.playbackRate=c),o&&!a?t.play():t.pause()}catch(h){this.warn(`Failed to replay media interactions: ${h.message||h}`)}}addMediaElements(t,r,n){if(!["AUDIO","VIDEO"].includes(t.nodeName))return;const s=t,l=n.getMeta(s);if(!l||!("attributes"in l))return;const o=this.service.state.matches("paused"),a=l.attributes;let c=!1;a.rr_mediaState?c=a.rr_mediaState==="played":c=s.getAttribute("autoplay")!==null,c&&o&&s.pause();let h=1;typeof a.rr_mediaPlaybackRate=="number"&&(h=a.rr_mediaPlaybackRate);let i=!1;typeof a.rr_mediaMuted=="boolean"?i=a.rr_mediaMuted:i=s.getAttribute("muted")!==null;let p=!1;typeof a.rr_mediaLoop=="boolean"?p=a.rr_mediaLoop:p=s.getAttribute("loop")!==null;let u=1;typeof a.rr_mediaVolume=="number"&&(u=a.rr_mediaVolume);let f=0;typeof a.rr_mediaCurrentTime=="number"&&(f=a.rr_mediaCurrentTime),this.mediaMap.set(s,{isPlaying:c,currentTimeAtLastInteraction:f,lastInteractionTimeOffset:r,playbackRate:h,volume:u,muted:i,loop:p}),this.syncTargetWithState(s)}mediaMutation({target:t,timeOffset:r,mutation:n}){this.mediaMap.set(t,this.getMediaStateFromMutation({target:t,timeOffset:r,mutation:n})),this.syncTargetWithState(t)}isSupportedMediaElement(t){return["AUDIO","VIDEO"].includes(t.nodeName)}reset(){this.mediaMap.clear()}}function Pe(e,t){if(e.nodeName!=="DIALOG"||e instanceof K)return;const r=e,n=r.open,s=n&&r.matches("dialog:modal"),l=r.getAttribute("rr_open_mode"),o=typeof(t==null?void 0:t.attributes.open)=="string"||typeof r.getAttribute("open")=="string",a=l==="modal";if(!(n&&!(s&&l==="non-modal"||!s&&a))){if(!r.isConnected){console.warn("dialog is not attached to the dom",r);return}n&&r.close(),o&&(a?r.showModal():r.show())}}function Wo(e,t){if(e.nodeName!=="DIALOG"||e instanceof K)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 qo=5*1e3,Vo=Ao,es="[replayer]",nr={duration:500,lineCap:"round",lineWidth:3,strokeStyle:"red"};function ts(e){return e.type==z.IncrementalSnapshot&&(e.data.source==k.TouchMove||e.data.source==k.MouseInteraction&&e.data.type==V.TouchStart)}class jo{constructor(t,r){if(T(this,"wrapper"),T(this,"iframe"),T(this,"service"),T(this,"speedService"),T(this,"config"),T(this,"usingVirtualDom",!1),T(this,"virtualDom",new ge),T(this,"mouse"),T(this,"mouseTail",null),T(this,"tailPositions",[]),T(this,"emitter",Vo()),T(this,"nextUserInteractionEvent"),T(this,"legacy_missingNodeRetryMap",{}),T(this,"cache",ui()),T(this,"imageMap",new Map),T(this,"canvasEventMap",new Map),T(this,"mirror",is()),T(this,"styleMirror",new No),T(this,"mediaManager"),T(this,"firstFullSnapshot",null),T(this,"newDocumentQueue",[]),T(this,"mousePos",null),T(this,"touchActive",null),T(this,"lastMouseDownEvent",null),T(this,"lastHoveredRootNode"),T(this,"lastSelectionData",null),T(this,"constructedStyleMutations",[]),T(this,"adoptedStyleSheets",[]),T(this,"handleResize",a=>{this.iframe.style.display="inherit";for(const c of[this.mouseTail,this.iframe])c&&(c.setAttribute("width",String(a.width)),c.setAttribute("height",String(a.height)))}),T(this,"applyEventsSynchronously",a=>{for(const c of a){switch(c.type){case z.DomContentLoaded:case z.Load:case z.Custom:continue;case z.FullSnapshot:case z.Meta:case z.Plugin:case z.IncrementalSnapshot:break}this.getCastFn(c,!0)()}}),T(this,"getCastFn",(a,c=!1)=>{let h;switch(a.type){case z.DomContentLoaded:case z.Load:break;case z.Custom:h=()=>{this.emitter.emit(I.CustomEvent,a)};break;case z.Meta:h=()=>this.emitter.emit(I.Resize,{width:a.data.width,height:a.data.height});break;case z.FullSnapshot:h=()=>{var p;if(this.firstFullSnapshot){if(this.firstFullSnapshot===a){this.firstFullSnapshot=!0;return}}else this.firstFullSnapshot=!0;this.mediaManager.reset(),this.styleMirror.reset(),this.rebuildFullSnapshot(a,c),(p=this.iframe.contentWindow)==null||p.scrollTo(a.data.initialOffset)};break;case z.IncrementalSnapshot:h=()=>{if(this.applyIncremental(a,c),!c&&(a===this.nextUserInteractionEvent&&(this.nextUserInteractionEvent=null,this.backToNormal()),this.config.skipInactive&&!this.nextUserInteractionEvent)){for(const p of this.service.state.context.events)if(!(p.timestamp<=a.timestamp)&&this.isUserInteraction(p)){p.delay-a.delay>this.config.inactivePeriodThreshold*this.speedService.state.context.timer.speed&&(this.nextUserInteractionEvent=p);break}if(this.nextUserInteractionEvent){const p=this.nextUserInteractionEvent.delay-a.delay,u={speed:Math.min(Math.round(p/qo),this.config.maxSpeed)};this.speedService.send({type:"FAST_FORWARD",payload:u}),this.emitter.emit(I.SkipStart,u)}}};break}return()=>{h&&h();for(const u of this.config.plugins||[])u.handler&&u.handler(a,c,{replayer:this});this.service.send({type:"CAST_EVENT",payload:{event:a}});const p=this.service.state.context.events.length-1;if(!this.config.liveMode&&a===this.service.state.context.events[p]){const u=()=>{p<this.service.state.context.events.length-1||(this.backToNormal(),this.service.send("END"),this.emitter.emit(I.Finish))};let f=50;a.type===z.IncrementalSnapshot&&a.data.source===k.MouseMove&&a.data.positions.length&&(f+=Math.max(0,-a.data.positions[0].timeOffset)),setTimeout(u,f)}this.emitter.emit(I.EventCast,a)}}),!(r!=null&&r.liveMode)&&t.length<2)throw new Error("Replayer need at least 2 events.");const n={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:nr,useVirtualDom:!0,logger:console};this.config=Object.assign({},n,r),this.handleResize=this.handleResize.bind(this),this.getCastFn=this.getCastFn.bind(this),this.applyEventsSynchronously=this.applyEventsSynchronously.bind(this),this.emitter.on(I.Resize,this.handleResize),this.setupDom();for(const a of this.config.plugins||[])a.getMirror&&a.getMirror({nodeMirror:this.mirror});this.emitter.on(I.Flush,()=>{if(this.usingVirtualDom){const a={mirror:this.mirror,applyCanvas:(c,h,i)=>{Zi({event:c,mutation:h,target:i,imageMap:this.imageMap,canvasEventMap:this.canvasEventMap,errorHandler:this.warnCanvasMutationFailed.bind(this)})},applyInput:this.applyInput.bind(this),applyScroll:this.applyScroll.bind(this),applyStyleSheetMutation:(c,h)=>{c.source===k.StyleSheetRule?this.applyStyleSheetRule(c,h):c.source===k.StyleDeclaration&&this.applyStyleDeclaration(c,h)},afterAppend:(c,h)=>{for(const i of this.config.plugins||[])i.onBuild&&i.onBuild(c,{id:h,replayer:this})}};if(this.iframe.contentDocument)try{Ie(this.iframe.contentDocument,this.virtualDom,a,this.virtualDom.mirror)}catch(c){console.warn(c)}if(this.virtualDom.destroyTree(),this.usingVirtualDom=!1,Object.keys(this.legacy_missingNodeRetryMap).length)for(const c in this.legacy_missingNodeRetryMap)try{const h=this.legacy_missingNodeRetryMap[c],i=ke(h.node,this.mirror,this.virtualDom.mirror);Ie(i,h.node,a,this.virtualDom.mirror),h.node=i}catch(h){this.warn(h)}this.constructedStyleMutations.forEach(c=>{this.applyStyleSheetMutation(c)}),this.constructedStyleMutations=[],this.adoptedStyleSheets.forEach(c=>{this.applyAdoptedStyleSheet(c)}),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[a,c]=this.lastMouseDownEvent;a.dispatchEvent(c)}this.lastMouseDownEvent=null,this.lastSelectionData&&(this.applySelection(this.lastSelectionData),this.lastSelectionData=null)}),this.emitter.on(I.PlayBack,()=>{this.firstFullSnapshot=null,this.mirror.reset(),this.styleMirror.reset(),this.mediaManager.reset()});const s=new To([],{speed:this.config.speed});this.service=Po({events:t.map(a=>r&&r.unpackFn?r.unpackFn(a):a).sort((a,c)=>a.timestamp-c.timestamp),timer:s,timeOffset:0,baselineTime:0,lastPlayedEvent:null},{getCastFn:this.getCastFn,applyEventsSynchronously:this.applyEventsSynchronously,emitter:this.emitter}),this.service.start(),this.service.subscribe(a=>{this.emitter.emit(I.StateChange,{player:a})}),this.speedService=Io({normalSpeed:-1,timer:s}),this.speedService.start(),this.speedService.subscribe(a=>{this.emitter.emit(I.StateChange,{speed:a})}),this.mediaManager=new zo({warn:this.warn.bind(this),service:this.service,speedService:this.speedService,emitter:this.emitter,getCurrentTime:this.getCurrentTime.bind(this)});const l=this.service.state.context.events.find(a=>a.type===z.Meta),o=this.service.state.context.events.find(a=>a.type===z.FullSnapshot);if(l){const{width:a,height:c}=l.data;setTimeout(()=>{this.emitter.emit(I.Resize,{width:a,height:c})},0)}o&&setTimeout(()=>{var a;this.firstFullSnapshot||(this.firstFullSnapshot=o,this.rebuildFullSnapshot(o),(a=this.iframe.contentWindow)==null||a.scrollTo(o.data.initialOffset))},1),this.service.state.context.events.find(ts)&&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,n;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}})),(n=(r=this.iframe.contentDocument)==null?void 0:r.getElementsByTagName("html")[0])==null||n.classList.remove("rrweb-paused"),this.emitter.emit(I.Start)}pause(t){var r,n;t===void 0&&this.service.state.matches("playing")&&this.service.send({type:"PAUSE"}),typeof t=="number"&&(this.play(t),this.service.send({type:"PAUSE"})),(n=(r=this.iframe.contentDocument)==null?void 0:r.getElementsByTagName("html")[0])==null||n.classList.add("rrweb-paused"),this.emitter.emit(I.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(I.Resume)}destroy(){this.pause(),this.mirror.reset(),this.styleMirror.reset(),this.mediaManager.reset(),this.config.root.removeChild(this.wrapper),this.emitter.emit(I.Destroy)}startLive(t){this.service.send({type:"TO_LIVE",payload:{baselineTime:t}})}addEvent(t){const r=this.config.unpackFn?this.config.unpackFn(t):t;ts(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=ui()}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&&(Do(this.iframe.contentWindow,this.iframe.contentDocument),Co(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 n=[],s=new Set,l=(c,h)=>{if(c.nodeName==="DIALOG"&&s.add(c),this.collectIframeAndAttachDocument(n,c),this.mediaManager.isSupportedMediaElement(c)){const{events:i}=this.service.state.context;this.mediaManager.addMediaElements(c,t.timestamp-i[0].timestamp,this.mirror)}for(const i of this.config.plugins||[])i.onBuild&&i.onBuild(c,{id:h,replayer:this})};this.usingVirtualDom&&(this.virtualDom.destroyTree(),this.usingVirtualDom=!1),this.mirror.reset(),mn(t.data.node,{doc:this.iframe.contentDocument,afterAppend:l,cache:this.cache,mirror:this.mirror}),l(this.iframe.contentDocument,t.data.node.id);for(const{mutationInQueue:c,builtNode:h}of n)this.attachDocumentToIframe(c,h),this.newDocumentQueue=this.newDocumentQueue.filter(i=>i!==c);const{documentElement:o,head:a}=this.iframe.contentDocument;this.insertStyleRules(o,a),s.forEach(c=>Pe(c)),this.service.state.matches("playing")||this.iframe.contentDocument.getElementsByTagName("html")[0].classList.add("rrweb-paused"),this.emitter.emit(I.FullsnapshotRebuilded,t),r||this.waitForStylesheetLoad(),this.config.UNSAFE_replayCanvas&&this.preloadAllImages()}insertStyleRules(t,r){var n;const s=ko(this.config.blockClass).concat(this.config.insertStyleRules);if(this.config.pauseAnimation&&s.push("html.rrweb-paused *, html.rrweb-paused *:before, html.rrweb-paused *:after { animation-play-state: paused !important; }"),!!s.length)if(this.usingVirtualDom){const l=this.virtualDom.createElement("style");this.virtualDom.mirror.add(l,Ns(l,this.virtualDom.unserializedId)),t.insertBefore(l,r),l.rules.push({source:k.StyleSheetRule,adds:s.map((o,a)=>({rule:o,index:a}))})}else{const l=document.createElement("style");t.insertBefore(l,r);for(let o=0;o<s.length;o++)(n=l.sheet)==null||n.insertRule(s[o],o)}}attachDocumentToIframe(t,r){const n=this.usingVirtualDom?this.virtualDom.mirror:this.mirror,s=[],l=new Set,o=(a,c)=>{a.nodeName==="DIALOG"&&l.add(a),this.collectIframeAndAttachDocument(s,a);const h=n.getMeta(a);if((h==null?void 0:h.type)===se.Element&&(h==null?void 0:h.tagName.toUpperCase())==="HTML"){const{documentElement:i,head:p}=r.contentDocument;this.insertStyleRules(i,p)}if(!this.usingVirtualDom)for(const i of this.config.plugins||[])i.onBuild&&i.onBuild(a,{id:c,replayer:this})};Ee(t.node,{doc:r.contentDocument,mirror:n,hackCss:!0,skipChild:!1,afterAppend:o,cache:this.cache}),o(r.contentDocument,t.node.id);for(const{mutationInQueue:a,builtNode:c}of s)this.attachDocumentToIframe(a,c),this.newDocumentQueue=this.newDocumentQueue.filter(h=>h!==a);l.forEach(a=>Pe(a))}collectIframeAndAttachDocument(t,r){if(ir(r,this.mirror)){const n=this.newDocumentQueue.find(s=>s.parentId===this.mirror.getId(r));n&&t.push({mutationInQueue:n,builtNode:r})}}waitForStylesheetLoad(){var t;const r=(t=this.iframe.contentDocument)==null?void 0:t.head;if(r){const n=new Set;let s,l=this.service.state;const o=()=>{l=this.service.state};this.emitter.on(I.Start,o),this.emitter.on(I.Pause,o);const a=()=>{this.emitter.off(I.Start,o),this.emitter.off(I.Pause,o)};r.querySelectorAll('link[rel="stylesheet"]').forEach(c=>{if(!c.sheet){n.add(c);const h=()=>{n.delete(c),n.size===0&&s!==-1&&(l.matches("playing")&&this.play(this.getCurrentTime()),this.emitter.emit(I.LoadStylesheetEnd),s&&clearTimeout(s),a())};c.addEventListener("load",h),c.addEventListener("error",h)}}),n.size>0&&(this.service.send({type:"PAUSE"}),this.emitter.emit(I.LoadStylesheetStart),s=setTimeout(()=>{l.matches("playing")&&this.play(this.getCurrentTime()),s=-1,a()},this.config.loadTimeout))}}async preloadAllImages(){const t=[];for(const r of this.service.state.context.events)r.type===z.IncrementalSnapshot&&r.data.source===k.CanvasMutation&&(t.push(this.deserializeAndPreloadCanvasEvents(r.data,r)),("commands"in r.data?r.data.commands:[r.data]).forEach(s=>{this.preloadImages(s,r)}));return Promise.all(t)}preloadImages(t,r){if(t.property==="drawImage"&&typeof t.args[0]=="string"&&!this.imageMap.has(r)){const n=document.createElement("canvas"),s=n.getContext("2d"),l=s==null?void 0:s.createImageData(n.width,n.height);s==null||s.putImageData(l,0,0)}}async deserializeAndPreloadCanvasEvents(t,r){if(!this.canvasEventMap.has(r)){const n={isUnchanged:!0};if("commands"in t){const s=await Promise.all(t.commands.map(async l=>{const o=await Promise.all(l.args.map(ne(this.imageMap,null,n)));return G(F({},l),{args:o})}));n.isUnchanged===!1&&this.canvasEventMap.set(r,G(F({},t),{commands:s}))}else{const s=await Promise.all(t.args.map(ne(this.imageMap,null,n)));n.isUnchanged===!1&&this.canvasEventMap.set(r,G(F({},t),{args:s}))}}}applyIncremental(t,r){var n,s,l;const{data:o}=t;switch(o.source){case k.Mutation:{try{this.applyMutation(o,r)}catch(a){this.warn(`Exception in mutation ${a.message||a}`,o)}break}case k.Drag:case k.TouchMove:case k.MouseMove:if(r){const a=o.positions[o.positions.length-1];this.mousePos={x:a.x,y:a.y,id:a.id,debugData:o}}else o.positions.forEach(a=>{const c={doAction:()=>{this.moveAndHover(a.x,a.y,a.id,r,o)},delay:a.timeOffset+t.timestamp-this.service.state.context.baselineTime};this.timer.addAction(c)}),this.timer.addAction({doAction(){},delay:t.delay-((n=o.positions[0])==null?void 0:n.timeOffset)});break;case k.MouseInteraction:{if(o.id===-1)break;const a=new Event(qs(V[o.type])),c=this.mirror.getNode(o.id);if(!c)return this.debugNodeNotFound(o,o.id);this.emitter.emit(I.MouseInteraction,{type:o.type,target:c});const{triggerFocus:h}=this.config;switch(o.type){case V.Blur:"blur"in c&&c.blur();break;case V.Focus:h&&c.focus&&c.focus({preventScroll:!0});break;case V.Click:case V.TouchStart:case V.TouchEnd:case V.MouseDown:case V.MouseUp:r?(o.type===V.TouchStart?this.touchActive=!0:o.type===V.TouchEnd&&(this.touchActive=!1),o.type===V.MouseDown?this.lastMouseDownEvent=[c,a]:o.type===V.MouseUp&&(this.lastMouseDownEvent=null),this.mousePos={x:o.x||0,y:o.y||0,id:o.id,debugData:o}):(o.type===V.TouchStart&&(this.tailPositions.length=0),this.moveAndHover(o.x||0,o.y||0,o.id,r,o),o.type===V.Click?(this.mouse.classList.remove("active"),this.mouse.offsetWidth,this.mouse.classList.add("active")):o.type===V.TouchStart?(this.mouse.offsetWidth,this.mouse.classList.add("touch-active")):o.type===V.TouchEnd?this.mouse.classList.remove("touch-active"):c.dispatchEvent(a));break;case V.TouchCancel:r?this.touchActive=!1:this.mouse.classList.remove("touch-active");break;default:c.dispatchEvent(a)}break}case k.Scroll:{if(o.id===-1)break;if(this.usingVirtualDom){const a=this.virtualDom.mirror.getNode(o.id);if(!a)return this.debugNodeNotFound(o,o.id);a.scrollData=o;break}this.applyScroll(o,r);break}case k.ViewportResize:this.emitter.emit(I.Resize,{width:o.width,height:o.height});break;case k.Input:{if(o.id===-1)break;if(this.usingVirtualDom){const a=this.virtualDom.mirror.getNode(o.id);if(!a)return this.debugNodeNotFound(o,o.id);a.inputData=o;break}this.applyInput(o);break}case k.MediaInteraction:{const a=this.usingVirtualDom?this.virtualDom.mirror.getNode(o.id):this.mirror.getNode(o.id);if(!a)return this.debugNodeNotFound(o,o.id);const c=a,{events:h}=this.service.state.context;this.mediaManager.mediaMutation({target:c,timeOffset:t.timestamp-h[0].timestamp,mutation:o});break}case k.StyleSheetRule:case k.StyleDeclaration:{this.usingVirtualDom?o.styleId?this.constructedStyleMutations.push(o):o.id&&((s=this.virtualDom.mirror.getNode(o.id))==null||s.rules.push(o)):this.applyStyleSheetMutation(o);break}case k.CanvasMutation:{if(!this.config.UNSAFE_replayCanvas)return;if(this.usingVirtualDom){const a=this.virtualDom.mirror.getNode(o.id);if(!a)return this.debugNodeNotFound(o,o.id);a.canvasMutations.push({event:t,mutation:o})}else{const a=this.mirror.getNode(o.id);if(!a)return this.debugNodeNotFound(o,o.id);Zi({event:t,mutation:o,target:a,imageMap:this.imageMap,canvasEventMap:this.canvasEventMap,errorHandler:this.warnCanvasMutationFailed.bind(this)})}break}case k.Font:{try{const a=new FontFace(o.family,o.buffer?new Uint8Array(JSON.parse(o.fontSource)):o.fontSource,o.descriptors);(l=this.iframe.contentDocument)==null||l.fonts.add(a)}catch(a){this.warn(a)}break}case k.Selection:{if(r){this.lastSelectionData=o;break}this.applySelection(o);break}case k.AdoptedStyleSheet:{this.usingVirtualDom?this.adoptedStyleSheets.push(o):this.applyAdoptedStyleSheet(o);break}}}applyMutation(t,r){if(this.config.useVirtualDom&&!this.usingVirtualDom&&r&&(this.usingVirtualDom=!0,io(this.iframe.contentDocument,this.mirror,this.virtualDom),Object.keys(this.legacy_missingNodeRetryMap).length))for(const h in this.legacy_missingNodeRetryMap)try{const i=this.legacy_missingNodeRetryMap[h],p=Rs(i.node,this.virtualDom,this.mirror);p&&(i.node=p)}catch(i){this.warn(i)}const n=this.usingVirtualDom?this.virtualDom.mirror:this.mirror;t.removes=t.removes.filter(h=>n.getNode(h.id)?!0:(this.warnNodeNotFound(t,h.id),!1)),t.removes.forEach(h=>{var i;const p=n.getNode(h.id);if(!p)return;let u=n.getNode(h.parentId);if(!u)return this.warnNodeNotFound(t,h.parentId);if(h.isShadow&&Te(u)&&(u=u.shadowRoot),n.removeNodeFromMap(p),u)try{u.removeChild(p),this.usingVirtualDom&&p.nodeName==="#text"&&u.nodeName==="STYLE"&&((i=u.rules)==null?void 0:i.length)>0&&(u.rules=[])}catch(f){if(f instanceof DOMException)this.warn("parent could not remove child in mutation",u,p,t);else throw f}});const s=F({},this.legacy_missingNodeRetryMap),l=[],o=h=>{let i=null;return h.nextId&&(i=n.getNode(h.nextId)),h.nextId!==null&&h.nextId!==void 0&&h.nextId!==-1&&!i},a=h=>{var i,p;if(!this.iframe.contentDocument)return this.warn("Looks like your replayer has been destroyed.");let u=n.getNode(h.parentId);if(!u)return h.node.type===se.Document?this.newDocumentQueue.push(h):l.push(h);h.node.isShadow&&(Te(u)||u.attachShadow({mode:"open"}),u=u.shadowRoot);let f=null,m=null;if(h.previousId&&(f=n.getNode(h.previousId)),h.nextId&&(m=n.getNode(h.nextId)),o(h))return l.push(h);if(h.node.rootId&&!n.getNode(h.node.rootId))return;const d=h.node.rootId?n.getNode(h.node.rootId):this.usingVirtualDom?this.virtualDom:this.iframe.contentDocument;if(ir(u,n)){this.attachDocumentToIframe(h,u);return}const g=(S,E)=>{if(!this.usingVirtualDom){Pe(S);for(const v of this.config.plugins||[])v.onBuild&&v.onBuild(S,{id:E,replayer:this})}},y=Ee(h.node,{doc:d,mirror:n,skipChild:!0,hackCss:!0,cache:this.cache,afterAppend:g});if(h.previousId===-1||h.nextId===-1){s[h.node.id]={node:y,mutation:h};return}const w=n.getMeta(u);if(w&&w.type===se.Element&&h.node.type===se.Text){const S=Array.isArray(u.childNodes)?u.childNodes:Array.from(u.childNodes);if(w.tagName==="textarea")for(const E of S)E.nodeType===u.TEXT_NODE&&u.removeChild(E);else if(w.tagName==="style"&&S.length===1)for(const E of S)E.nodeType===u.TEXT_NODE&&!n.hasNode(E)&&(y.textContent=E.textContent,u.removeChild(E))}else if((w==null?void 0:w.type)===se.Document){const S=u;h.node.type===se.DocumentType&&((i=S.childNodes[0])==null?void 0:i.nodeType)===Node.DOCUMENT_TYPE_NODE&&S.removeChild(S.childNodes[0]),y.nodeName==="HTML"&&S.documentElement&&S.removeChild(S.documentElement)}if(f&&f.nextSibling&&f.nextSibling.parentNode?u.insertBefore(y,f.nextSibling):m&&m.parentNode?u.contains(m)?u.insertBefore(y,m):u.insertBefore(y,null):u.appendChild(y),g(y,h.node.id),this.usingVirtualDom&&y.nodeName==="#text"&&u.nodeName==="STYLE"&&((p=u.rules)==null?void 0:p.length)>0&&(u.rules=[]),ir(y,this.mirror)){const S=this.mirror.getId(y),E=this.newDocumentQueue.find(v=>v.parentId===S);E&&(this.attachDocumentToIframe(E,y),this.newDocumentQueue=this.newDocumentQueue.filter(v=>v!==E))}(h.previousId||h.nextId)&&this.legacy_resolveMissingNode(s,u,y,h)};t.adds.forEach(h=>{a(h)});const c=Date.now();for(;l.length;){const h=xo(l);if(l.length=0,Date.now()-c>500){this.warn("Timeout in the loop, please check the resolve tree data:",h);break}for(const i of h)n.getNode(i.value.parentId)?Os(i,u=>{a(u)}):this.debug("Drop resolve tree since there is no parent for the root node.",i)}Object.keys(s).length&&Object.assign(this.legacy_missingNodeRetryMap,s),Ro(t.texts).forEach(h=>{var i;const p=n.getNode(h.id);if(!p)return t.removes.find(f=>f.id===h.id)?void 0:this.warnNodeNotFound(t,h.id);const u=p.parentElement;if(h.value&&u&&u.tagName==="STYLE"?p.textContent=qe(h.value,this.cache):p.textContent=h.value,this.usingVirtualDom){const f=p.parentNode;((i=f==null?void 0:f.rules)==null?void 0:i.length)>0&&(f.rules=[])}}),t.attributes.forEach(h=>{var i;const p=n.getNode(h.id);if(!p)return t.removes.find(u=>u.id===h.id)?void 0:this.warnNodeNotFound(t,h.id);for(const u in h.attributes)if(typeof u=="string"){const f=h.attributes[u];if(f===null)p.removeAttribute(u),u==="open"&&Wo(p,h);else if(typeof f=="string")try{if(u==="_cssText"&&(p.nodeName==="LINK"||p.nodeName==="STYLE"))try{const m=n.getMeta(p),d=Ee(G(F({},m),{attributes:F(F({},m.attributes),h.attributes)}),{doc:p.ownerDocument,mirror:n,skipChild:!0,hackCss:!0,cache:this.cache});Object.assign(m.attributes,h.attributes);const g=p.nextSibling,y=p.parentNode;if(d&&y){y.removeChild(p),y.insertBefore(d,g),n.replace(h.id,d);break}}catch(m){}if(u==="value"&&p.nodeName==="TEXTAREA"){const m=p;m.childNodes.forEach(g=>m.removeChild(g));const d=(i=p.ownerDocument)==null?void 0:i.createTextNode(f);d&&m.appendChild(d)}else p.setAttribute(u,f);u==="rr_open_mode"&&p.nodeName==="DIALOG"&&Pe(p,h)}catch(m){this.warn("An error occurred may due to the checkout feature.",m)}else if(u==="style"){const m=f,d=p;for(const g in m)if(m[g]===!1)d.style.removeProperty(g);else if(m[g]instanceof Array){const y=m[g];d.style.setProperty(g,y[0],y[1])}else{const y=m[g];d.style.setProperty(g,y)}}}})}applyScroll(t,r){var n,s;const l=this.mirror.getNode(t.id);if(!l)return this.debugNodeNotFound(t,t.id);const o=this.mirror.getMeta(l);if(l===this.iframe.contentDocument)(n=this.iframe.contentWindow)==null||n.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"});else if((o==null?void 0:o.type)===se.Document)(s=l.defaultView)==null||s.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"});else try{l.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"})}catch(a){}}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(n){}}applySelection(t){try{const r=new Set,n=t.ranges.map(({start:s,startOffset:l,end:o,endOffset:a})=>{const c=this.mirror.getNode(s),h=this.mirror.getNode(o);if(!c||!h)return;const i=new Range;i.setStart(c,l),i.setEnd(h,a);const p=c.ownerDocument,u=p==null?void 0:p.getSelection();return u&&r.add(u),{range:i,selection:u}});r.forEach(s=>s.removeAllRanges()),n.forEach(s=>{var l;return s&&((l=s.selection)==null?void 0:l.addRange(s.range))})}catch(r){}}applyStyleSheetMutation(t){var r;let n=null;t.styleId?n=this.styleMirror.getStyle(t.styleId):t.id&&(n=((r=this.mirror.getNode(t.id))==null?void 0:r.sheet)||null),n&&(t.source===k.StyleSheetRule?this.applyStyleSheetRule(t,n):t.source===k.StyleDeclaration&&this.applyStyleDeclaration(t,n))}applyStyleSheetRule(t,r){var n,s,l,o;if((n=t.adds)==null||n.forEach(({rule:a,index:c})=>{try{if(Array.isArray(c)){const{positions:h,index:i}=Vi(c),p=be(r.cssRules,h);p==null||p.insertRule(a,i)}else{const h=c===void 0?void 0:Math.min(c,r.cssRules.length);r==null||r.insertRule(a,h)}}catch(h){}}),(s=t.removes)==null||s.forEach(({index:a})=>{try{if(Array.isArray(a)){const{positions:c,index:h}=Vi(a),i=be(r.cssRules,c);i==null||i.deleteRule(h||0)}else r==null||r.deleteRule(a)}catch(c){}}),typeof t.replace=="string")try{(l=r.replace)==null||l.call(r,t.replace)}catch(a){}if(typeof t.replaceSync=="string")try{(o=r.replaceSync)==null||o.call(r,t.replaceSync)}catch(a){}}applyStyleDeclaration(t,r){if(t.set){const n=be(r.rules,t.index);n!=null&&n.style&&n.style.setProperty(t.set.property,t.set.value,t.set.priority)}if(t.remove){const n=be(r.rules,t.index);n!=null&&n.style&&n.style.removeProperty(t.remove.property)}}applyAdoptedStyleSheet(t){var r;const n=this.mirror.getNode(t.id);if(!n)return;(r=t.styles)==null||r.forEach(a=>{var c;let h=null,i=null;if(Te(n)?i=((c=n.ownerDocument)==null?void 0:c.defaultView)||null:n.nodeName==="#document"&&(i=n.defaultView),!!i)try{h=new i.CSSStyleSheet,this.styleMirror.add(h,a.styleId),this.applyStyleSheetRule({source:k.StyleSheetRule,adds:a.rules},h)}catch(p){}});const s=10;let l=0;const o=(a,c)=>{const h=c.map(i=>this.styleMirror.getStyle(i)).filter(i=>i!==null);Te(a)?a.shadowRoot.adoptedStyleSheets=h:a.nodeName==="#document"&&(a.adoptedStyleSheets=h),h.length!==c.length&&l<s&&(setTimeout(()=>o(a,c),0+100*l),l++)};o(n,t.styleIds)}legacy_resolveMissingNode(t,r,n,s){const{previousId:l,nextId:o}=s,a=l&&t[l],c=o&&t[o];if(a){const{node:h,mutation:i}=a;r.insertBefore(h,n),delete t[i.node.id],delete this.legacy_missingNodeRetryMap[i.node.id],(i.previousId||i.nextId)&&this.legacy_resolveMissingNode(t,r,h,i)}if(c){const{node:h,mutation:i}=c;r.insertBefore(h,n.nextSibling),delete t[i.node.id],delete this.legacy_missingNodeRetryMap[i.node.id],(i.previousId||i.nextId)&&this.legacy_resolveMissingNode(t,r,h,i)}}moveAndHover(t,r,n,s,l){const o=this.mirror.getNode(n);if(!o)return this.debugNodeNotFound(l,n);const a=As(o,this.iframe),c=t*a.absoluteScale+a.x,h=r*a.absoluteScale+a.y;this.mouse.style.left=`${c}px`,this.mouse.style.top=`${h}px`,s||this.drawMouseTail({x:c,y:h}),this.hoverElements(o)}drawMouseTail(t){if(!this.mouseTail)return;const{lineCap:r,lineWidth:n,strokeStyle:s,duration:l}=this.config.mouseTail===!0?nr:Object.assign({},nr,this.config.mouseTail),o=()=>{if(!this.mouseTail)return;const a=this.mouseTail.getContext("2d");!a||!this.tailPositions.length||(a.clearRect(0,0,this.mouseTail.width,this.mouseTail.height),a.beginPath(),a.lineWidth=n,a.lineCap=r,a.strokeStyle=s,a.moveTo(this.tailPositions[0].x,this.tailPositions[0].y),this.tailPositions.forEach(c=>a.lineTo(c.x,c.y)),a.stroke())};this.tailPositions.push(t),o(),setTimeout(()=>{this.tailPositions=this.tailPositions.filter(a=>a!==t),o()},l/this.speedService.state.context.timer.speed)}hoverElements(t){var r;(r=this.lastHoveredRootNode||this.iframe.contentDocument)==null||r.querySelectorAll(".\\:hover").forEach(s=>{s.classList.remove(":hover")}),this.lastHoveredRootNode=t.getRootNode();let n=t;for(;n;)n.classList&&n.classList.add(":hover"),n=n.parentElement}isUserInteraction(t){return t.type!==z.IncrementalSnapshot?!1:t.data.source>k.Mutation&&t.data.source<=k.Input}backToNormal(){this.nextUserInteractionEvent=null,!this.speedService.state.matches("normal")&&(this.speedService.send({type:"BACK_TO_NORMAL"}),this.emitter.emit(I.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(es,...t)}debug(...t){this.config.showDebug&&this.config.logger.log(es,...t)}}exports.Replayer=jo;
|
|
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") {
|