@posthog/rrweb 0.0.38 → 0.0.39
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/rrweb.cjs +2 -0
- package/dist/rrweb.cjs.map +1 -1
- package/dist/rrweb.js +2 -0
- package/dist/rrweb.js.map +1 -1
- package/dist/rrweb.umd.cjs +2 -0
- package/dist/rrweb.umd.cjs.map +2 -2
- package/dist/rrweb.umd.min.cjs +1 -1
- package/dist/rrweb.umd.min.cjs.map +2 -2
- package/package.json +5 -5
package/dist/rrweb.umd.min.cjs
CHANGED
|
@@ -144,7 +144,7 @@ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
|
144
144
|
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
145
145
|
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
146
146
|
PERFORMANCE OF THIS SOFTWARE.
|
|
147
|
-
***************************************************************************** */function Bn(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var s,i,o=r.call(e),a=[];try{for(;(t===void 0||t-- >0)&&!(s=o.next()).done;)a.push(s.value)}catch(u){i={error:u}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a}var Ze;(function(e){e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped"})(Ze||(Ze={}));var Jo={type:"xstate.init"};function as(e){return e===void 0?[]:[].concat(e)}function He(e){return{type:"xstate.assign",assignment:e}}function Un(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 Ft(e){return function(t){return e===t}}function Xo(e){return typeof e=="string"?{type:e}:e}function $n(e,t){return{value:e,context:t,actions:[],changed:!1,matches:Ft(e)}}function Wn(e,t,r){var s=t,i=!1;return[e.filter(function(o){if(o.type==="xstate.assign"){i=!0;var a=Object.assign({},s);return typeof o.assignment=="function"?a=o.assignment(s,r):Object.keys(o.assignment).forEach(function(u){a[u]=typeof o.assignment[u]=="function"?o.assignment[u](s,r):o.assignment[u]}),s=a,!1}return!0}),s,i]}function Zo(e,t){t===void 0&&(t={});var r=Bn(Wn(as(e.states[e.initial].entry).map(function(a){return Un(a,t.actions)}),e.context,Jo),2),s=r[0],i=r[1],o={config:e,_options:t,initialState:{value:e.initial,actions:s,context:i,matches:Ft(e.initial)},transition:function(a,u){var f,l,n=typeof a=="string"?{value:a,context:e.context}:a,c=n.value,d=n.context,h=Xo(u),p=e.states[c];if(p.on){var m=as(p.on[h.type]);try{for(var g=function(k){var W=typeof Symbol=="function"&&Symbol.iterator,K=W&&k[W],J=0;if(K)return K.call(k);if(k&&typeof k.length=="number")return{next:function(){return k&&J>=k.length&&(k=void 0),{value:k&&k[J++],done:!k}}};throw new TypeError(W?"Object is not iterable.":"Symbol.iterator is not defined.")}(m),w=g.next();!w.done;w=g.next()){var y=w.value;if(y===void 0)return $n(c,d);var S=typeof y=="string"?{target:y}:y,E=S.target,v=S.actions,b=v===void 0?[]:v,C=S.cond,x=C===void 0?function(){return!0}:C,N=E===void 0,M=E!=null?E:c,_=e.states[M];if(x(d,h)){var O=Bn(Wn((N?as(b):[].concat(p.exit,b,_.entry).filter(function(k){return k})).map(function(k){return Un(k,o._options.actions)}),d,h),3),re=O[0],oe=O[1],R=O[2],Q=E!=null?E:c;return{value:Q,context:oe,actions:re,changed:E!==c||re.length>0||R,matches:Ft(Q)}}}}catch(k){f={error:k}}finally{try{w&&!w.done&&(l=g.return)&&l.call(g)}finally{if(f)throw f.error}}}return $n(c,d)}};return o}var zn=function(e,t){return e.actions.forEach(function(r){var s=r.exec;return s&&s(e.context,t)})};function Qo(e){var t=e.initialState,r=Ze.NotStarted,s=new Set,i={_machine:e,send:function(o){r===Ze.Running&&(t=e.transition(t,o),zn(t,Xo(o)),s.forEach(function(a){return a(t)}))},subscribe:function(o){return s.add(o),o(t),{unsubscribe:function(){return s.delete(o)}}},start:function(o){if(o){var a=typeof o=="object"?o:{context:e.config.context,value:o};t={value:a.value,actions:[],context:a.context,matches:Ft(a.value)}}return r=Ze.Running,zn(t,Jo),i},stop:function(){return r=Ze.Stopped,s.clear(),i},get state(){return t},get status(){return r}};return i}function vc(e,t){for(let r=e.length-1;r>=0;r--){const s=e[r];if(s.type===P.Meta&&s.timestamp<=t)return e.slice(r)}return e}function bc(e,{getCastFn:t,applyEventsSynchronously:r,emitter:s}){const i=Zo({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:He({lastPlayedEvent:(o,a)=>a.type==="CAST_EVENT"?a.payload.event:o.lastPlayedEvent}),recordTimeOffset:He((o,a)=>{let u=o.timeOffset;return"payload"in a&&"timeOffset"in a.payload&&(u=a.payload.timeOffset),ie(L({},o),{timeOffset:u,baselineTime:o.events[0].timestamp+u})}),play(o){var a;const{timer:u,events:f,baselineTime:l,lastPlayedEvent:n}=o;u.clear();for(const p of f)Fn(p,l);const c=vc(f,l);let d=n==null?void 0:n.timestamp;(n==null?void 0:n.type)===P.IncrementalSnapshot&&n.data.source===T.MouseMove&&(d=n.timestamp+((a=n.data.positions[0])==null?void 0:a.timeOffset)),l<(d||0)&&s.emit(q.PlayBack);const h=new Array;for(const p of c)if(!(d&&d<l&&(p.timestamp<=d||p===n)))if(p.timestamp<l)h.push(p);else{const m=t(p,!1);u.addAction({doAction:()=>{m()},delay:p.delay})}r(h),s.emit(q.Flush),u.start()},pause(o){o.timer.clear()},resetLastPlayedEvent:He(o=>ie(L({},o),{lastPlayedEvent:null})),startLive:He({baselineTime:(o,a)=>(o.timer.start(),a.type==="TO_LIVE"&&a.payload.baselineTime?a.payload.baselineTime:Date.now())}),addEvent:He((o,a)=>{const{baselineTime:u,timer:f,events:l}=o;if(a.type==="ADD_EVENT"){const{event:n}=a.payload;Fn(n,u);let c=l.length-1;if(!l[c]||l[c].timestamp<=n.timestamp)l.push(n);else{let p=-1,m=0;for(;m<=c;){const g=Math.floor((m+c)/2);l[g].timestamp<=n.timestamp?m=g+1:c=g-1}p===-1&&(p=m),l.splice(p,0,n)}const d=n.timestamp<u,h=t(n,d);d?h():f.isActive()&&f.addAction({doAction:()=>{h()},delay:n.delay})}return ie(L({},o),{events:l})})}});return Qo(i)}function Sc(e){const t=Zo({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:He({normalSpeed:r=>r.timer.speed}),restoreSpeed:r=>{r.timer.setSpeed(r.normalSpeed)}}});return Qo(t)}const Cc=e=>[`.${e} { background: currentColor }`,"noscript { display: none !important; }"],qn=new Map;function Ko(e,t){let r=qn.get(e);return r||(r=new Map,qn.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:o}=s;return Ko(t,i)[o]}else if("args"in s){const{rr_type:i,args:o}=s,a=window[i];return new a(...await Promise.all(o.map(De(e,t,r))))}else{if("base64"in s)return ac(s.base64);if("src"in s){const i=e.get(s.src);if(i)return i;{const o=new Image;return o.src=s.src,e.set(s.src,o),o}}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 Ec(e,t){try{return t===Me.WebGL?e.getContext("webgl")||e.getContext("experimental-webgl"):e.getContext("webgl2")}catch(r){return null}}const xc=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject"];function Mc(e,t){if(!(t!=null&&t.constructor))return;const{name:r}=t.constructor;if(!xc.includes(r))return;const s=Ko(e,r);s.includes(t)||s.push(t)}async function Rc({mutation:e,target:t,type:r,imageMap:s,errorHandler:i}){try{const o=Ec(t,r);if(!o)return;if(e.setter){o[e.property]=e.args[0];return}const a=o[e.property],u=await Promise.all(e.args.map(De(s,o))),f=a.apply(o,u);Mc(o,f);const l=!1}catch(o){i(e,o)}}async function Ic({event:e,mutations:t,target:r,imageMap:s,errorHandler:i}){const o=r.getContext("2d");if(!o){i(t[0],new Error("Canvas context is null"));return}const a=t.map(async f=>Promise.all(f.args.map(De(s,o))));(await Promise.all(a)).forEach((f,l)=>{const n=t[l];try{if(n.setter){o[n.property]=n.args[0];return}const c=o[n.property];n.property==="drawImage"&&typeof n.args[0]=="string"?(s.get(e),c.apply(o,n.args)):c.apply(o,f)}catch(c){i(n,c)}})}async function ds({event:e,mutation:t,target:r,imageMap:s,canvasEventMap:i,errorHandler:o}){try{const a=i.get(e)||t,u="commands"in a?a.commands:[a];if([Me.WebGL,Me.WebGL2].includes(t.type)){for(let f=0;f<u.length;f++){const l=u[f];await Rc({mutation:l,type:t.type,target:r,imageMap:s,errorHandler:o})}return}await Ic({event:e,mutations:u,target:r,imageMap:s,errorHandler:o})}catch(a){o(t,a)}}const Vn=["AUDIO","VIDEO"];class Nc{constructor(t){I(this,"mediaMap",new Map),I(this,"warn"),I(this,"service"),I(this,"speedService"),I(this,"emitter"),I(this,"getCurrentTime"),I(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(q.Start,this.start.bind(this)),this.emitter.on(q.SkipStart,this.start.bind(this)),this.emitter.on(q.Pause,this.pause.bind(this)),this.emitter.on(q.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 o=(t-s.lastInteractionTimeOffset)/1e3*s.playbackRate,a="duration"in r&&r.duration;if(Number.isNaN(a)){this.waitForMetadata(r);return}let u=s.currentTimeAtLastInteraction+o;r.loop&&a!==!1&&(u=u%a),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 h,p,m,g,w;const i=this.mediaMap.get(t),{type:o,playbackRate:a,currentTime:u,muted:f,volume:l,loop:n}=s;return{isPlaying:o===Ne.Play||o!==Ne.Pause&&((i==null?void 0:i.isPlaying)||t.getAttribute("autoplay")!==null),currentTimeAtLastInteraction:(h=u!=null?u:i==null?void 0:i.currentTimeAtLastInteraction)!=null?h:0,lastInteractionTimeOffset:r,playbackRate:(p=a!=null?a:i==null?void 0:i.playbackRate)!=null?p:1,volume:(m=l!=null?l:i==null?void 0:i.volume)!=null?m:1,muted:(g=f!=null?f: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:o,isPlaying:a}=r,u=this.service.state.matches("paused"),f=r.playbackRate*this.speedService.state.context.timer.speed;try{this.seekTo({time:this.getCurrentTime(),target:t,mediaState:r}),t.volume!==o&&(t.volume=o),t.muted=s,t.loop=i,t.playbackRate!==f&&(t.playbackRate=f),a&&!u?t.play():t.pause()}catch(l){this.warn(`Failed to replay media interactions: ${l.message||l}`)}}addMediaElements(t,r,s){if(!this.isSupportedMediaElement(t))return;const i=t,o=s.getMeta(i);if(!o||!("attributes"in o))return;const a=this.service.state.matches("paused"),u=o.attributes;let f=!1;u.rr_mediaState?f=u.rr_mediaState==="played":f=i.getAttribute("autoplay")!==null,f&&a&&i.pause();let l=1;typeof u.rr_mediaPlaybackRate=="number"&&(l=u.rr_mediaPlaybackRate);let n=!1;typeof u.rr_mediaMuted=="boolean"?n=u.rr_mediaMuted:n=i.getAttribute("muted")!==null;let c=!1;typeof u.rr_mediaLoop=="boolean"?c=u.rr_mediaLoop:c=i.getAttribute("loop")!==null;let d=1;typeof u.rr_mediaVolume=="number"&&(d=u.rr_mediaVolume);let h=0;typeof u.rr_mediaCurrentTime=="number"&&(h=u.rr_mediaCurrentTime),this.mediaMap.set(i,{isPlaying:f,currentTimeAtLastInteraction:h,lastInteractionTimeOffset:r,playbackRate:l,volume:d,muted:n,loop:c}),this.syncTargetWithState(i)}mediaMutation({target:t,timeOffset:r,mutation:s}){Vn.includes(t.nodeName)&&(this.mediaMap.set(t,this.getMediaStateFromMutation({target:t,timeOffset:r,mutation:s})),this.syncTargetWithState(t))}isSupportedMediaElement(t){return Vn.includes(t.nodeName)}reset(){this.mediaMap.clear()}}function Mt(e,t){if(e.nodeName!=="DIALOG"||e instanceof we)return;const r=e,s=r.open,i=s&&r.matches("dialog:modal"),o=r.getAttribute("rr_open_mode"),a=typeof(t==null?void 0:t.attributes.open)=="string"||typeof r.getAttribute("open")=="string",u=o==="modal";if(!(s&&!(i&&o==="non-modal"||!i&&u))){if(!r.isConnected){console.warn("dialog is not attached to the dom",r);return}s&&r.close(),a&&(u?r.showModal():r.show())}}function Oc(e,t){if(e.nodeName!=="DIALOG"||e instanceof we)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 Dc=5*1e3,Ac=Yo||gc,jn="[replayer]",ls={duration:500,lineCap:"round",lineWidth:3,strokeStyle:"red"};function Hn(e){return e.type==P.IncrementalSnapshot&&(e.data.source==T.TouchMove||e.data.source==T.MouseInteraction&&e.data.type==V.TouchStart)}class Tc{constructor(t,r){if(I(this,"wrapper"),I(this,"iframe"),I(this,"service"),I(this,"speedService"),I(this,"config"),I(this,"usingVirtualDom",!1),I(this,"virtualDom",new et),I(this,"mouse"),I(this,"mouseTail",null),I(this,"tailPositions",[]),I(this,"emitter",Ac()),I(this,"nextUserInteractionEvent"),I(this,"legacy_missingNodeRetryMap",{}),I(this,"cache",zi()),I(this,"imageMap",new Map),I(this,"canvasEventMap",new Map),I(this,"mirror",Jn()),I(this,"styleMirror",new Ys),I(this,"mediaManager"),I(this,"firstFullSnapshot",null),I(this,"newDocumentQueue",[]),I(this,"mousePos",null),I(this,"touchActive",null),I(this,"lastMouseDownEvent",null),I(this,"lastHoveredRootNode"),I(this,"lastSelectionData",null),I(this,"constructedStyleMutations",[]),I(this,"adoptedStyleSheets",[]),I(this,"emitterHandlers",[]),I(this,"serviceSubscription"),I(this,"speedServiceSubscription"),I(this,"timeouts",new Set),I(this,"styleSheetLoadListeners",new Map),I(this,"handleResize",l=>{this.iframe.style.display="inherit";for(const n of[this.mouseTail,this.iframe])n&&(n.setAttribute("width",String(l.width)),n.setAttribute("height",String(l.height)))}),I(this,"applyEventsSynchronously",l=>{for(const n of l){switch(n.type){case P.DomContentLoaded:case P.Load:case P.Custom:continue;case P.FullSnapshot:case P.Meta:case P.Plugin:case P.IncrementalSnapshot:break}this.getCastFn(n,!0)()}}),I(this,"getCastFn",(l,n=!1)=>{let c;switch(l.type){case P.DomContentLoaded:case P.Load:break;case P.Custom:c=()=>{this.emitter.emit(q.CustomEvent,l)};break;case P.Meta:c=()=>this.emitter.emit(q.Resize,{width:l.data.width,height:l.data.height});break;case P.FullSnapshot:c=()=>{var h;if(this.firstFullSnapshot){if(this.firstFullSnapshot===l){this.firstFullSnapshot=!0;return}}else this.firstFullSnapshot=!0;this.mediaManager.reset(),this.styleMirror.reset(),this.rebuildFullSnapshot(l,n),(h=this.iframe.contentWindow)==null||h.scrollTo(l.data.initialOffset)};break;case P.IncrementalSnapshot:c=()=>{if(this.applyIncremental(l,n),!n&&(l===this.nextUserInteractionEvent&&(this.nextUserInteractionEvent=null,this.backToNormal()),this.config.skipInactive&&!this.nextUserInteractionEvent)){for(const h of this.service.state.context.events)if(!(h.timestamp<=l.timestamp)&&this.isUserInteraction(h)){h.delay-l.delay>this.config.inactivePeriodThreshold*this.speedService.state.context.timer.speed&&(this.nextUserInteractionEvent=h);break}if(this.nextUserInteractionEvent){const h=this.nextUserInteractionEvent.delay-l.delay,p={speed:Math.min(Math.round(h/Dc),this.config.maxSpeed)};this.speedService.send({type:"FAST_FORWARD",payload:p}),this.emitter.emit(q.SkipStart,p)}}};break}return()=>{c&&c();for(const p of this.config.plugins||[])p.handler&&p.handler(l,n,{replayer:this});this.service.send({type:"CAST_EVENT",payload:{event:l}});const h=this.service.state.context.events.length-1;if(!this.config.liveMode&&l===this.service.state.context.events[h]){const p=()=>{h<this.service.state.context.events.length-1||(this.backToNormal(),this.service.send("END"),this.emitter.emit(q.Finish))};let m=50;l.type===P.IncrementalSnapshot&&l.data.source===T.MouseMove&&l.data.positions.length&&(m+=Math.max(0,-l.data.positions[0].timeOffset)),setTimeout(p,m)}this.emitter.emit(q.EventCast,l)}}),!(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:ls,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.addEmitterHandler(q.Resize,this.handleResize),this.setupDom();for(const l of this.config.plugins||[])l.getMirror&&l.getMirror({nodeMirror:this.mirror});const i=()=>{if(this.usingVirtualDom){const l={mirror:this.mirror,applyCanvas:(n,c,d)=>{ds({event:n,mutation:c,target:d,imageMap:this.imageMap,canvasEventMap:this.canvasEventMap,errorHandler:this.warnCanvasMutationFailed.bind(this)})},applyInput:this.applyInput.bind(this),applyScroll:this.applyScroll.bind(this),applyStyleSheetMutation:(n,c)=>{n.source===T.StyleSheetRule?this.applyStyleSheetRule(n,c):n.source===T.StyleDeclaration&&this.applyStyleDeclaration(n,c)},afterAppend:(n,c)=>{for(const d of this.config.plugins||[])d.onBuild&&d.onBuild(n,{id:c,replayer:this})}};if(this.iframe.contentDocument)try{Tt(this.iframe.contentDocument,this.virtualDom,l,this.virtualDom.mirror)}catch(n){this.warn(n)}if(this.virtualDom.destroyTree(),this.usingVirtualDom=!1,Object.keys(this.legacy_missingNodeRetryMap).length)for(const n in this.legacy_missingNodeRetryMap)try{const c=this.legacy_missingNodeRetryMap[n],d=_t(c.node,this.mirror,this.virtualDom.mirror);Tt(d,c.node,l,this.virtualDom.mirror),c.node=d}catch(c){this.warn(c)}this.constructedStyleMutations.forEach(n=>{this.applyStyleSheetMutation(n)}),this.constructedStyleMutations=[],this.adoptedStyleSheets.forEach(n=>{this.applyAdoptedStyleSheet(n)}),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[l,n]=this.lastMouseDownEvent;l.dispatchEvent(n)}this.lastMouseDownEvent=null,this.lastSelectionData&&(this.applySelection(this.lastSelectionData),this.lastSelectionData=null)};this.addEmitterHandler(q.Flush,i);const o=()=>{this.firstFullSnapshot=null,this.mirror.reset(),this.styleMirror.reset(),this.mediaManager.reset()};this.addEmitterHandler(q.PlayBack,o);const a=new wc([],{speed:this.config.speed});this.service=bc({events:t.map(l=>r&&r.unpackFn?r.unpackFn(l):l).sort((l,n)=>l.timestamp-n.timestamp),timer:a,timeOffset:0,baselineTime:0,lastPlayedEvent:null},{getCastFn:this.getCastFn,applyEventsSynchronously:this.applyEventsSynchronously,emitter:this.emitter}),this.service.start(),this.serviceSubscription=this.service.subscribe(l=>{this.emitter.emit(q.StateChange,{player:l})}),this.speedService=Sc({normalSpeed:-1,timer:a}),this.speedService.start(),this.speedServiceSubscription=this.speedService.subscribe(l=>{this.emitter.emit(q.StateChange,{speed:l})}),this.mediaManager=new Nc({warn:this.warn.bind(this),service:this.service,speedService:this.speedService,emitter:this.emitter,getCurrentTime:this.getCurrentTime.bind(this)});const u=this.service.state.context.events.find(l=>l.type===P.Meta),f=this.service.state.context.events.find(l=>l.type===P.FullSnapshot);if(u){const{width:l,height:n}=u.data;this.addTimeout(()=>{this.emitter.emit(q.Resize,{width:l,height:n})},0)}f&&this.addTimeout(()=>{var l;this.firstFullSnapshot||(this.firstFullSnapshot=f,this.rebuildFullSnapshot(f),(l=this.iframe.contentWindow)==null||l.scrollTo(f.data.initialOffset))},1),this.service.state.context.events.find(Hn)&&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}addEmitterHandler(t,r){this.emitter.on(t,r),this.emitterHandlers.push({event:t,handler:r})}addTimeout(t,r){const s=setTimeout(()=>{this.timeouts.delete(s),t()},r);return this.timeouts.add(s),s}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(q.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(q.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(q.Resume)}destroy(){var t,r;!this.wrapper||!this.wrapper.parentNode||(this.pause(),this.emitterHandlers.forEach(({event:s,handler:i})=>{this.emitter.off(s,i)}),this.emitterHandlers=[],(t=this.serviceSubscription)==null||t.unsubscribe(),(r=this.speedServiceSubscription)==null||r.unsubscribe(),this.serviceSubscription=void 0,this.speedServiceSubscription=void 0,this.timeouts.forEach(s=>clearTimeout(s)),this.timeouts.clear(),this.styleSheetLoadListeners.forEach((s,i)=>{i.removeEventListener("load",s)}),this.styleSheetLoadListeners.clear(),this.imageMap.clear(),this.canvasEventMap.clear(),this.mirror.reset(),this.styleMirror.reset(),this.mediaManager.reset(),this.resetCache(),this.config.root.removeChild(this.wrapper),this.emitter.emit(q.Destroy))}startLive(t){this.service.send({type:"TO_LIVE",payload:{baselineTime:t}})}addEvent(t){const r=this.config.unpackFn?this.config.unpackFn(t):t;Hn(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=zi()}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&&(yc(this.iframe.contentWindow,this.iframe.contentDocument),Vs(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,o=(f,l)=>{if(f.nodeName==="DIALOG"&&i.add(f),this.collectIframeAndAttachDocument(s,f),this.mediaManager.isSupportedMediaElement(f)){const{events:n}=this.service.state.context;this.mediaManager.addMediaElements(f,t.timestamp-n[0].timestamp,this.mirror)}for(const n of this.config.plugins||[])n.onBuild&&n.onBuild(f,{id:l,replayer:this})};this.usingVirtualDom&&(this.virtualDom.destroyTree(),this.usingVirtualDom=!1),this.mirror.reset(),bl(t.data.node,{doc:this.iframe.contentDocument,afterAppend:o,cache:this.cache,mirror:this.mirror}),o(this.iframe.contentDocument,t.data.node.id);for(const{mutationInQueue:f,builtNode:l}of s)this.attachDocumentToIframe(f,l),this.newDocumentQueue=this.newDocumentQueue.filter(n=>n!==f);const{documentElement:a,head:u}=this.iframe.contentDocument;this.insertStyleRules(a,u),i.forEach(f=>Mt(f)),this.service.state.matches("playing")||this.iframe.contentDocument.getElementsByTagName("html")[0].classList.add("rrweb-paused"),this.emitter.emit(q.FullsnapshotRebuilded,t),r||this.waitForStylesheetLoad(),this.config.UNSAFE_replayCanvas&&this.preloadAllImages()}insertStyleRules(t,r){var s;const i=Cc(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; }"),this.usingVirtualDom){const o=this.virtualDom.createElement("style");this.virtualDom.mirror.add(o,To(o,this.virtualDom.unserializedId)),t.insertBefore(o,r),o.rules.push({source:T.StyleSheetRule,adds:i.map((a,u)=>({rule:a,index:u}))})}else{const o=document.createElement("style");t.insertBefore(o,r);for(let a=0;a<i.length;a++)(s=o.sheet)==null||s.insertRule(i[a],a)}}attachDocumentToIframe(t,r){const s=this.usingVirtualDom?this.virtualDom.mirror:this.mirror,i=[],o=new Set,a=(u,f)=>{u.nodeName==="DIALOG"&&o.add(u),this.collectIframeAndAttachDocument(i,u);const l=s.getMeta(u);if((l==null?void 0:l.type)===Ee.Element&&(l==null?void 0:l.tagName.toUpperCase())==="HTML"){const{documentElement:n,head:c}=r.contentDocument;this.insertStyleRules(n,c)}if(!this.usingVirtualDom)for(const n of this.config.plugins||[])n.onBuild&&n.onBuild(u,{id:f,replayer:this})};it(t.node,{doc:r.contentDocument,mirror:s,hackCss:!0,skipChild:!1,afterAppend:a,cache:this.cache}),a(r.contentDocument,t.node.id);for(const{mutationInQueue:u,builtNode:f}of i)this.attachDocumentToIframe(u,f),this.newDocumentQueue=this.newDocumentQueue.filter(l=>l!==u);o.forEach(u=>Mt(u))}collectIframeAndAttachDocument(t,r){if(Qe(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,o=this.service.state;const a=()=>{o=this.service.state};this.emitter.on(q.Start,a),this.emitter.on(q.Pause,a);const u=()=>{this.emitter.off(q.Start,a),this.emitter.off(q.Pause,a)};r.querySelectorAll('link[rel="stylesheet"]').forEach(f=>{f.sheet||(s.add(f),f.addEventListener("load",()=>{s.delete(f),s.size===0&&i!==-1&&(o.matches("playing")&&this.play(this.getCurrentTime()),this.emitter.emit(q.LoadStylesheetEnd),i&&clearTimeout(i),u())}))}),s.size>0&&(this.service.send({type:"PAUSE"}),this.emitter.emit(q.LoadStylesheetStart),i=setTimeout(()=>{o.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===P.IncrementalSnapshot&&r.data.source===T.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"),o=i==null?void 0:i.createImageData(s.width,s.height);i==null||i.putImageData(o,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 o=>{const a=await Promise.all(o.args.map(De(this.imageMap,null,s)));return ie(L({},o),{args:a})}));s.isUnchanged===!1&&this.canvasEventMap.set(r,ie(L({},t),{commands:i}))}else{const i=await Promise.all(t.args.map(De(this.imageMap,null,s)));s.isUnchanged===!1&&this.canvasEventMap.set(r,ie(L({},t),{args:i}))}}}applyIncremental(t,r){var s,i,o;const{data:a}=t;switch(a.source){case T.Mutation:{try{this.applyMutation(a,r)}catch(u){this.warn(`Exception in mutation ${u.message||u}`,a)}break}case T.Drag:case T.TouchMove:case T.MouseMove:if(r){const u=a.positions[a.positions.length-1];this.mousePos={x:u.x,y:u.y,id:u.id,debugData:a}}else a.positions.forEach(u=>{const f={doAction:()=>{this.moveAndHover(u.x,u.y,u.id,r,a)},delay:u.timeOffset+t.timestamp-this.service.state.context.baselineTime};this.timer.addAction(f)}),this.timer.addAction({doAction(){},delay:t.delay-((s=a.positions[0])==null?void 0:s.timeOffset)});break;case T.MouseInteraction:{if(a.id===-1)break;const u=new Event(Ae(V[a.type])),f=this.mirror.getNode(a.id);if(!f)return this.debugNodeNotFound(a,a.id);this.emitter.emit(q.MouseInteraction,{type:a.type,target:f});const{triggerFocus:l}=this.config;switch(a.type){case V.Blur:"blur"in f&&f.blur();break;case V.Focus:l&&f.focus&&f.focus({preventScroll:!0});break;case V.Click:case V.TouchStart:case V.TouchEnd:case V.MouseDown:case V.MouseUp:r?(a.type===V.TouchStart?this.touchActive=!0:a.type===V.TouchEnd&&(this.touchActive=!1),a.type===V.MouseDown?this.lastMouseDownEvent=[f,u]:a.type===V.MouseUp&&(this.lastMouseDownEvent=null),this.mousePos={x:a.x||0,y:a.y||0,id:a.id,debugData:a}):(a.type===V.TouchStart&&(this.tailPositions.length=0),this.moveAndHover(a.x||0,a.y||0,a.id,r,a),a.type===V.Click?(this.mouse.classList.remove("active"),this.mouse.offsetWidth,this.mouse.classList.add("active")):a.type===V.TouchStart?(this.mouse.offsetWidth,this.mouse.classList.add("touch-active")):a.type===V.TouchEnd?this.mouse.classList.remove("touch-active"):f.dispatchEvent(u));break;case V.TouchCancel:r?this.touchActive=!1:this.mouse.classList.remove("touch-active");break;default:f.dispatchEvent(u)}break}case T.Scroll:{if(a.id===-1)break;if(this.usingVirtualDom){const u=this.virtualDom.mirror.getNode(a.id);if(!u)return this.debugNodeNotFound(a,a.id);u.scrollData=a;break}this.applyScroll(a,r);break}case T.ViewportResize:this.emitter.emit(q.Resize,{width:a.width,height:a.height});break;case T.Input:{if(a.id===-1)break;if(this.usingVirtualDom){const u=this.virtualDom.mirror.getNode(a.id);if(!u)return this.debugNodeNotFound(a,a.id);u.inputData=a;break}this.applyInput(a);break}case T.MediaInteraction:{const u=this.usingVirtualDom?this.virtualDom.mirror.getNode(a.id):this.mirror.getNode(a.id);if(!u)return this.debugNodeNotFound(a,a.id);const f=u,{events:l}=this.service.state.context;this.mediaManager.mediaMutation({target:f,timeOffset:t.timestamp-l[0].timestamp,mutation:a});break}case T.StyleSheetRule:case T.StyleDeclaration:{this.usingVirtualDom?a.styleId?this.constructedStyleMutations.push(a):a.id&&((i=this.virtualDom.mirror.getNode(a.id))==null||i.rules.push(a)):this.applyStyleSheetMutation(a);break}case T.CanvasMutation:{if(!this.config.UNSAFE_replayCanvas)return;if(this.usingVirtualDom){const u=this.virtualDom.mirror.getNode(a.id);if(!u)return this.debugNodeNotFound(a,a.id);u.canvasMutations.push({event:t,mutation:a})}else{const u=this.mirror.getNode(a.id);if(!u)return this.debugNodeNotFound(a,a.id);ds({event:t,mutation:a,target:u,imageMap:this.imageMap,canvasEventMap:this.canvasEventMap,errorHandler:this.warnCanvasMutationFailed.bind(this)})}break}case T.Font:{try{const u=new FontFace(a.family,a.buffer?new Uint8Array(JSON.parse(a.fontSource)):a.fontSource,a.descriptors);(o=this.iframe.contentDocument)==null||o.fonts.add(u)}catch(u){this.warn(u)}break}case T.Selection:{if(r){this.lastSelectionData=a;break}this.applySelection(a);break}case T.AdoptedStyleSheet:{this.usingVirtualDom?this.adoptedStyleSheets.push(a):this.applyAdoptedStyleSheet(a);break}}}applyMutation(t,r){if(this.config.useVirtualDom&&!this.usingVirtualDom&&r&&(this.usingVirtualDom=!0,Eu(this.iframe.contentDocument,this.mirror,this.virtualDom),Object.keys(this.legacy_missingNodeRetryMap).length))for(const f in this.legacy_missingNodeRetryMap)try{const l=this.legacy_missingNodeRetryMap[f],n=Ao(l.node,this.virtualDom,this.mirror);n&&(l.node=n)}catch(l){this.warn(l)}const s=this.usingVirtualDom?this.virtualDom.mirror:this.mirror;t.removes=t.removes.filter(f=>s.getNode(f.id)?!0:(this.warnNodeNotFound(t,f.id),!1)),t.removes.forEach(f=>{var l;const n=s.getNode(f.id);if(!n)return;let c=s.getNode(f.parentId);if(!c)return this.warnNodeNotFound(t,f.parentId);if(f.isShadow&&Oe(c)&&(c=c.shadowRoot),s.removeNodeFromMap(n),c)try{c.removeChild(n),this.usingVirtualDom&&n.nodeName==="#text"&&c.nodeName==="STYLE"&&((l=c.rules)==null?void 0:l.length)>0&&(c.rules=[])}catch(d){if(d instanceof DOMException)this.warn("parent could not remove child in mutation",c,n,t);else throw d}});const i=L({},this.legacy_missingNodeRetryMap),o=[],a=f=>{var l,n;if(!this.iframe.contentDocument)return this.warn("Looks like your replayer has been destroyed.");let c=s.getNode(f.parentId);if(!c)return f.node.type===Ee.Document?this.newDocumentQueue.push(f):t.adds.some(S=>S.node.id===f.parentId)?o.push(f):void 0;f.node.isShadow&&(Oe(c)||c.attachShadow({mode:"open"}),c=c.shadowRoot);let d=null,h=null;if(f.previousId&&(d=s.getNode(f.previousId)),f.nextId&&(h=s.getNode(f.nextId)),f.node.rootId&&!s.getNode(f.node.rootId))return;const p=f.node.rootId?s.getNode(f.node.rootId):this.usingVirtualDom?this.virtualDom:this.iframe.contentDocument;if(Qe(c,s)){this.attachDocumentToIframe(f,c);return}const m=(y,S)=>{if(!this.usingVirtualDom){Mt(y);for(const E of this.config.plugins||[])E.onBuild&&E.onBuild(y,{id:S,replayer:this})}},g=it(f.node,{doc:p,mirror:s,skipChild:!0,hackCss:!0,cache:this.cache,afterAppend:m});if(f.previousId===-1||f.nextId===-1){i[f.node.id]={node:g,mutation:f};return}const w=s.getMeta(c);if(w&&w.type===Ee.Element&&f.node.type===Ee.Text){const y=Array.isArray(c.childNodes)?c.childNodes:Array.from(c.childNodes);if(w.tagName==="textarea")for(const S of y)S.nodeType===c.TEXT_NODE&&c.removeChild(S);else if(w.tagName==="style"&&y.length===1)for(const S of y)S.nodeType===c.TEXT_NODE&&!s.hasNode(S)&&(g.textContent=S.textContent,c.removeChild(S))}else if((w==null?void 0:w.type)===Ee.Document){const y=c;f.node.type===Ee.DocumentType&&((l=y.childNodes[0])==null?void 0:l.nodeType)===Node.DOCUMENT_TYPE_NODE&&y.removeChild(y.childNodes[0]),g.nodeName==="HTML"&&y.documentElement&&y.removeChild(y.documentElement)}if(d&&d.nextSibling&&d.nextSibling.parentNode?c.insertBefore(g,d.nextSibling):h&&h.parentNode?c.contains(h)?c.insertBefore(g,h):c.insertBefore(g,null):c.appendChild(g),m(g,f.node.id),this.usingVirtualDom&&g.nodeName==="#text"&&c.nodeName==="STYLE"&&((n=c.rules)==null?void 0:n.length)>0&&(c.rules=[]),Qe(g,this.mirror)){const y=this.mirror.getId(g),S=this.newDocumentQueue.find(E=>E.parentId===y);S&&(this.attachDocumentToIframe(S,g),this.newDocumentQueue=this.newDocumentQueue.filter(E=>E!==S))}(f.previousId||f.nextId)&&this.legacy_resolveMissingNode(i,c,g,f)};t.adds.forEach(f=>{a(f)});const u=performance.now();for(;o.length;){const f=Lo(o);if(o.length=0,performance.now()-u>150){this.warn("Timeout in the loop, please check the resolve tree data:",f);break}for(const l of f)s.getNode(l.value.parentId)?js(l,c=>{a(c)}):this.debug("Drop resolve tree since there is no parent for the root node.",l)}Object.keys(i).length&&Object.assign(this.legacy_missingNodeRetryMap,i),Fo(t.texts).forEach(f=>{var l;const n=s.getNode(f.id);if(!n)return t.removes.find(c=>c.id===f.id)?void 0:this.warnNodeNotFound(t,f.id);if(n.textContent=f.value,this.usingVirtualDom){const c=n.parentNode;((l=c==null?void 0:c.rules)==null?void 0:l.length)>0&&(c.rules=[])}}),t.attributes.forEach(f=>{var l;const n=s.getNode(f.id);if(!n)return t.removes.find(c=>c.id===f.id)?void 0:this.warnNodeNotFound(t,f.id);for(const c in f.attributes)if(typeof c=="string"){const d=f.attributes[c];if(d===null)n.removeAttribute(c),c==="open"&&Oc(n,f);else if(typeof d=="string")try{if(c==="_cssText"&&(n.nodeName==="LINK"||n.nodeName==="STYLE"))try{const h=s.getMeta(n);Object.assign(h.attributes,f.attributes);const p=it(h,{doc:n.ownerDocument,mirror:s,skipChild:!0,hackCss:!0,cache:this.cache}),m=n.nextSibling,g=n.parentNode;if(p&&g){g.removeChild(n),g.insertBefore(p,m),s.replace(f.id,p);break}}catch(h){}if(c==="value"&&n.nodeName==="TEXTAREA"){const h=n;h.childNodes.forEach(m=>h.removeChild(m));const p=(l=n.ownerDocument)==null?void 0:l.createTextNode(d);p&&h.appendChild(p)}else n.setAttribute(c,d);c==="rr_open_mode"&&n.nodeName==="DIALOG"&&Mt(n,f)}catch(h){this.warn("An error occurred may due to the checkout feature.",h)}else if(c==="style"){const h=d,p=n;for(const m in h)if(h[m]===!1)p.style.removeProperty(m);else if(h[m]instanceof Array){const g=h[m];p.style.setProperty(m,g[0],g[1])}else{const g=h[m];p.style.setProperty(m,g)}}}})}applyScroll(t,r){var s,i;const o=this.mirror.getNode(t.id);if(!o)return this.debugNodeNotFound(t,t.id);const a=this.mirror.getMeta(o);if(o===this.iframe.contentDocument)(s=this.iframe.contentWindow)==null||s.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"});else if((a==null?void 0:a.type)===Ee.Document)(i=o.defaultView)==null||i.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"});else try{o.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:o,end:a,endOffset:u})=>{const f=this.mirror.getNode(i),l=this.mirror.getNode(a);if(!f||!l)return;const n=new Range;n.setStart(f,o),n.setEnd(l,u);const c=f.ownerDocument,d=c==null?void 0:c.getSelection();return d&&r.add(d),{range:n,selection:d}});r.forEach(i=>i.removeAllRanges()),s.forEach(i=>{var o;return i&&((o=i.selection)==null?void 0:o.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===T.StyleSheetRule?this.applyStyleSheetRule(t,s):t.source===T.StyleDeclaration&&this.applyStyleDeclaration(t,s))}applyStyleSheetRule(t,r){var s,i,o,a;if((s=t.adds)==null||s.forEach(({rule:u,index:f})=>{try{if(Array.isArray(f)){const{positions:l,index:n}=hs(f);Je(r.cssRules,l).insertRule(u,n)}else{const l=f===void 0?void 0:Math.min(f,r.cssRules.length);r==null||r.insertRule(u,l)}}catch(l){}}),(i=t.removes)==null||i.forEach(({index:u})=>{try{if(Array.isArray(u)){const{positions:f,index:l}=hs(u);Je(r.cssRules,f).deleteRule(l||0)}else r==null||r.deleteRule(u)}catch(f){}}),t.replace)try{(o=r.replace)==null||o.call(r,t.replace)}catch(u){}if(t.replaceSync)try{(a=r.replaceSync)==null||a.call(r,t.replaceSync)}catch(u){}}applyStyleDeclaration(t,r){var s,i;if(t.set){const o=Je(r.rules,t.index);(s=o==null?void 0:o.style)==null||s.setProperty(t.set.property,t.set.value,t.set.priority)}if(t.remove){const o=Je(r.rules,t.index);(i=o==null?void 0:o.style)==null||i.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 f;let l=null,n=null;if(Oe(s)?n=((f=s.ownerDocument)==null?void 0:f.defaultView)||null:s.nodeName==="#document"&&(n=s.defaultView),!!n)try{l=new n.CSSStyleSheet,this.styleMirror.add(l,u.styleId),this.applyStyleSheetRule({source:T.StyleSheetRule,adds:u.rules},l)}catch(c){}});const i=10;let o=0;const a=(u,f)=>{const l=f.map(n=>this.styleMirror.getStyle(n)).filter(n=>n!==null);Oe(u)?u.shadowRoot.adoptedStyleSheets=l:u.nodeName==="#document"&&(u.adoptedStyleSheets=l),l.length!==f.length&&o<i&&(setTimeout(()=>a(u,f),0+100*o),o++)};a(s,t.styleIds)}legacy_resolveMissingNode(t,r,s,i){const{previousId:o,nextId:a}=i,u=o&&t[o],f=a&&t[a];if(u){const{node:l,mutation:n}=u;r.insertBefore(l,s),delete t[n.node.id],delete this.legacy_missingNodeRetryMap[n.node.id],(n.previousId||n.nextId)&&this.legacy_resolveMissingNode(t,r,l,n)}if(f){const{node:l,mutation:n}=f;r.insertBefore(l,s.nextSibling),delete t[n.node.id],delete this.legacy_missingNodeRetryMap[n.node.id],(n.previousId||n.nextId)&&this.legacy_resolveMissingNode(t,r,l,n)}}moveAndHover(t,r,s,i,o){const a=this.mirror.getNode(s);if(!a)return this.debugNodeNotFound(o,s);const u=Gs(a,this.iframe),f=t*u.absoluteScale+u.x,l=r*u.absoluteScale+u.y;this.mouse.style.left=`${f}px`,this.mouse.style.top=`${l}px`,i||this.drawMouseTail({x:f,y:l}),this.hoverElements(a)}drawMouseTail(t){if(!this.mouseTail)return;const{lineCap:r,lineWidth:s,strokeStyle:i,duration:o}=this.config.mouseTail===!0?ls:Object.assign({},ls,this.config.mouseTail),a=()=>{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(f=>u.lineTo(f.x,f.y)),u.stroke())};this.tailPositions.push(t),a(),setTimeout(()=>{this.tailPositions=this.tailPositions.filter(u=>u!==t),a()},o/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!==P.IncrementalSnapshot?!1:t.data.source>T.Mutation&&t.data.source<=T.Input}backToNormal(){this.nextUserInteractionEvent=null,!this.speedService.state.matches("normal")&&(this.speedService.send({type:"BACK_TO_NORMAL"}),this.emitter.emit(q.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(jn,...t)}debug(...t){this.config.showDebug&&this.config.logger.log(jn,...t)}}const{addCustomEvent:_c}=ke,{freezePage:Pc}=ke,{takeFullSnapshot:kc}=ke;exports.EventType=P;exports.IncrementalSource=T;exports.MouseInteractions=V;exports.Replayer=Tc;exports.ReplayerEvents=q;exports.addCustomEvent=_c;exports.canvasMutation=ds;exports.freezePage=Pc;exports.record=ke;exports.takeFullSnapshot=kc;exports.utils=Bu;
|
|
147
|
+
***************************************************************************** */function Bn(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var s,i,o=r.call(e),a=[];try{for(;(t===void 0||t-- >0)&&!(s=o.next()).done;)a.push(s.value)}catch(u){i={error:u}}finally{try{s&&!s.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a}var Ze;(function(e){e[e.NotStarted=0]="NotStarted",e[e.Running=1]="Running",e[e.Stopped=2]="Stopped"})(Ze||(Ze={}));var Jo={type:"xstate.init"};function as(e){return e===void 0?[]:[].concat(e)}function He(e){return{type:"xstate.assign",assignment:e}}function Un(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 Ft(e){return function(t){return e===t}}function Xo(e){return typeof e=="string"?{type:e}:e}function $n(e,t){return{value:e,context:t,actions:[],changed:!1,matches:Ft(e)}}function Wn(e,t,r){var s=t,i=!1;return[e.filter(function(o){if(o.type==="xstate.assign"){i=!0;var a=Object.assign({},s);return typeof o.assignment=="function"?a=o.assignment(s,r):Object.keys(o.assignment).forEach(function(u){a[u]=typeof o.assignment[u]=="function"?o.assignment[u](s,r):o.assignment[u]}),s=a,!1}return!0}),s,i]}function Zo(e,t){t===void 0&&(t={});var r=Bn(Wn(as(e.states[e.initial].entry).map(function(a){return Un(a,t.actions)}),e.context,Jo),2),s=r[0],i=r[1],o={config:e,_options:t,initialState:{value:e.initial,actions:s,context:i,matches:Ft(e.initial)},transition:function(a,u){var f,l,n=typeof a=="string"?{value:a,context:e.context}:a,c=n.value,d=n.context,h=Xo(u),p=e.states[c];if(p.on){var m=as(p.on[h.type]);try{for(var g=function(k){var W=typeof Symbol=="function"&&Symbol.iterator,K=W&&k[W],J=0;if(K)return K.call(k);if(k&&typeof k.length=="number")return{next:function(){return k&&J>=k.length&&(k=void 0),{value:k&&k[J++],done:!k}}};throw new TypeError(W?"Object is not iterable.":"Symbol.iterator is not defined.")}(m),w=g.next();!w.done;w=g.next()){var y=w.value;if(y===void 0)return $n(c,d);var S=typeof y=="string"?{target:y}:y,E=S.target,v=S.actions,b=v===void 0?[]:v,C=S.cond,x=C===void 0?function(){return!0}:C,N=E===void 0,M=E!=null?E:c,_=e.states[M];if(x(d,h)){var O=Bn(Wn((N?as(b):[].concat(p.exit,b,_.entry).filter(function(k){return k})).map(function(k){return Un(k,o._options.actions)}),d,h),3),re=O[0],oe=O[1],R=O[2],Q=E!=null?E:c;return{value:Q,context:oe,actions:re,changed:E!==c||re.length>0||R,matches:Ft(Q)}}}}catch(k){f={error:k}}finally{try{w&&!w.done&&(l=g.return)&&l.call(g)}finally{if(f)throw f.error}}}return $n(c,d)}};return o}var zn=function(e,t){return e.actions.forEach(function(r){var s=r.exec;return s&&s(e.context,t)})};function Qo(e){var t=e.initialState,r=Ze.NotStarted,s=new Set,i={_machine:e,send:function(o){r===Ze.Running&&(t=e.transition(t,o),zn(t,Xo(o)),s.forEach(function(a){return a(t)}))},subscribe:function(o){return s.add(o),o(t),{unsubscribe:function(){return s.delete(o)}}},start:function(o){if(o){var a=typeof o=="object"?o:{context:e.config.context,value:o};t={value:a.value,actions:[],context:a.context,matches:Ft(a.value)}}return r=Ze.Running,zn(t,Jo),i},stop:function(){return r=Ze.Stopped,s.clear(),i},get state(){return t},get status(){return r}};return i}function vc(e,t){for(let r=e.length-1;r>=0;r--){const s=e[r];if(s.type===P.Meta&&s.timestamp<=t)return e.slice(r)}return e}function bc(e,{getCastFn:t,applyEventsSynchronously:r,emitter:s}){const i=Zo({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:He({lastPlayedEvent:(o,a)=>a.type==="CAST_EVENT"?a.payload.event:o.lastPlayedEvent}),recordTimeOffset:He((o,a)=>{let u=o.timeOffset;return"payload"in a&&"timeOffset"in a.payload&&(u=a.payload.timeOffset),ie(L({},o),{timeOffset:u,baselineTime:o.events[0].timestamp+u})}),play(o){var a;const{timer:u,events:f,baselineTime:l,lastPlayedEvent:n}=o;u.clear();for(const p of f)Fn(p,l);const c=vc(f,l);let d=n==null?void 0:n.timestamp;(n==null?void 0:n.type)===P.IncrementalSnapshot&&n.data.source===T.MouseMove&&(d=n.timestamp+((a=n.data.positions[0])==null?void 0:a.timeOffset)),l<(d||0)&&s.emit(q.PlayBack);const h=new Array;for(const p of c)if(!(d&&d<l&&(p.timestamp<=d||p===n)))if(p.timestamp<l)h.push(p);else{const m=t(p,!1);u.addAction({doAction:()=>{m()},delay:p.delay})}r(h),s.emit(q.Flush),u.start()},pause(o){o.timer.clear()},resetLastPlayedEvent:He(o=>ie(L({},o),{lastPlayedEvent:null})),startLive:He({baselineTime:(o,a)=>(o.timer.start(),a.type==="TO_LIVE"&&a.payload.baselineTime?a.payload.baselineTime:Date.now())}),addEvent:He((o,a)=>{const{baselineTime:u,timer:f,events:l}=o;if(a.type==="ADD_EVENT"){const{event:n}=a.payload;Fn(n,u);let c=l.length-1;if(!l[c]||l[c].timestamp<=n.timestamp)l.push(n);else{let p=-1,m=0;for(;m<=c;){const g=Math.floor((m+c)/2);l[g].timestamp<=n.timestamp?m=g+1:c=g-1}p===-1&&(p=m),l.splice(p,0,n)}const d=n.timestamp<u,h=t(n,d);d?h():f.isActive()&&f.addAction({doAction:()=>{h()},delay:n.delay})}return ie(L({},o),{events:l})})}});return Qo(i)}function Sc(e){const t=Zo({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:He({normalSpeed:r=>r.timer.speed}),restoreSpeed:r=>{r.timer.setSpeed(r.normalSpeed)}}});return Qo(t)}const Cc=e=>[`.${e} { background: currentColor }`,"noscript { display: none !important; }"],qn=new Map;function Ko(e,t){let r=qn.get(e);return r||(r=new Map,qn.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:o}=s;return Ko(t,i)[o]}else if("args"in s){const{rr_type:i,args:o}=s,a=window[i];return new a(...await Promise.all(o.map(De(e,t,r))))}else{if("base64"in s)return ac(s.base64);if("src"in s){const i=e.get(s.src);if(i)return i;{const o=new Image;return o.src=s.src,e.set(s.src,o),o}}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 Ec(e,t){try{return t===Me.WebGL?e.getContext("webgl")||e.getContext("experimental-webgl"):e.getContext("webgl2")}catch(r){return null}}const xc=["WebGLActiveInfo","WebGLBuffer","WebGLFramebuffer","WebGLProgram","WebGLRenderbuffer","WebGLShader","WebGLShaderPrecisionFormat","WebGLTexture","WebGLUniformLocation","WebGLVertexArrayObject"];function Mc(e,t){if(!(t!=null&&t.constructor))return;const{name:r}=t.constructor;if(!xc.includes(r))return;const s=Ko(e,r);s.includes(t)||s.push(t)}async function Rc({mutation:e,target:t,type:r,imageMap:s,errorHandler:i}){try{const o=Ec(t,r);if(!o)return;if(e.setter){o[e.property]=e.args[0];return}const a=o[e.property],u=await Promise.all(e.args.map(De(s,o))),f=a.apply(o,u);Mc(o,f);const l=!1}catch(o){i(e,o)}}async function Ic({event:e,mutations:t,target:r,imageMap:s,errorHandler:i}){const o=r.getContext("2d");if(!o){i(t[0],new Error("Canvas context is null"));return}const a=t.map(async f=>Promise.all(f.args.map(De(s,o))));(await Promise.all(a)).forEach((f,l)=>{const n=t[l];try{if(n.setter){o[n.property]=n.args[0];return}const c=o[n.property];n.property==="drawImage"&&typeof n.args[0]=="string"?(s.get(e),c.apply(o,n.args)):c.apply(o,f)}catch(c){i(n,c)}})}async function ds({event:e,mutation:t,target:r,imageMap:s,canvasEventMap:i,errorHandler:o}){try{const a=i.get(e)||t,u="commands"in a?a.commands:[a];if([Me.WebGL,Me.WebGL2].includes(t.type)){for(let f=0;f<u.length;f++){const l=u[f];await Rc({mutation:l,type:t.type,target:r,imageMap:s,errorHandler:o})}return}await Ic({event:e,mutations:u,target:r,imageMap:s,errorHandler:o})}catch(a){o(t,a)}}const Vn=["AUDIO","VIDEO"];class Nc{constructor(t){I(this,"mediaMap",new Map),I(this,"warn"),I(this,"service"),I(this,"speedService"),I(this,"emitter"),I(this,"getCurrentTime"),I(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(q.Start,this.start.bind(this)),this.emitter.on(q.SkipStart,this.start.bind(this)),this.emitter.on(q.Pause,this.pause.bind(this)),this.emitter.on(q.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 o=(t-s.lastInteractionTimeOffset)/1e3*s.playbackRate,a="duration"in r&&r.duration;if(Number.isNaN(a)){this.waitForMetadata(r);return}let u=s.currentTimeAtLastInteraction+o;r.loop&&a!==!1&&(u=u%a),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 h,p,m,g,w;const i=this.mediaMap.get(t),{type:o,playbackRate:a,currentTime:u,muted:f,volume:l,loop:n}=s;return{isPlaying:o===Ne.Play||o!==Ne.Pause&&((i==null?void 0:i.isPlaying)||t.getAttribute("autoplay")!==null),currentTimeAtLastInteraction:(h=u!=null?u:i==null?void 0:i.currentTimeAtLastInteraction)!=null?h:0,lastInteractionTimeOffset:r,playbackRate:(p=a!=null?a:i==null?void 0:i.playbackRate)!=null?p:1,volume:(m=l!=null?l:i==null?void 0:i.volume)!=null?m:1,muted:(g=f!=null?f: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:o,isPlaying:a}=r,u=this.service.state.matches("paused"),f=r.playbackRate*this.speedService.state.context.timer.speed;try{this.seekTo({time:this.getCurrentTime(),target:t,mediaState:r}),t.volume!==o&&(t.volume=o),t.muted=s,t.loop=i,t.playbackRate!==f&&(t.playbackRate=f),a&&!u?t.play():t.pause()}catch(l){this.warn(`Failed to replay media interactions: ${l.message||l}`)}}addMediaElements(t,r,s){if(!this.isSupportedMediaElement(t))return;const i=t,o=s.getMeta(i);if(!o||!("attributes"in o))return;const a=this.service.state.matches("paused"),u=o.attributes;let f=!1;u.rr_mediaState?f=u.rr_mediaState==="played":f=i.getAttribute("autoplay")!==null,f&&a&&i.pause();let l=1;typeof u.rr_mediaPlaybackRate=="number"&&(l=u.rr_mediaPlaybackRate);let n=!1;typeof u.rr_mediaMuted=="boolean"?n=u.rr_mediaMuted:n=i.getAttribute("muted")!==null;let c=!1;typeof u.rr_mediaLoop=="boolean"?c=u.rr_mediaLoop:c=i.getAttribute("loop")!==null;let d=1;typeof u.rr_mediaVolume=="number"&&(d=u.rr_mediaVolume);let h=0;typeof u.rr_mediaCurrentTime=="number"&&(h=u.rr_mediaCurrentTime),this.mediaMap.set(i,{isPlaying:f,currentTimeAtLastInteraction:h,lastInteractionTimeOffset:r,playbackRate:l,volume:d,muted:n,loop:c}),this.syncTargetWithState(i)}mediaMutation({target:t,timeOffset:r,mutation:s}){Vn.includes(t.nodeName)&&(this.mediaMap.set(t,this.getMediaStateFromMutation({target:t,timeOffset:r,mutation:s})),this.syncTargetWithState(t))}isSupportedMediaElement(t){return Vn.includes(t.nodeName)}reset(){this.mediaMap.clear()}}function Mt(e,t){if(e.nodeName!=="DIALOG"||e instanceof we)return;const r=e,s=r.open,i=s&&r.matches("dialog:modal"),o=r.getAttribute("rr_open_mode"),a=typeof(t==null?void 0:t.attributes.open)=="string"||typeof r.getAttribute("open")=="string",u=o==="modal";if(!(s&&!(i&&o==="non-modal"||!i&&u))){if(!r.isConnected){console.warn("dialog is not attached to the dom",r);return}s&&r.close(),a&&(u?r.showModal():r.show())}}function Oc(e,t){if(e.nodeName!=="DIALOG"||e instanceof we)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 Dc=5*1e3,Ac=Yo||gc,jn="[replayer]",ls={duration:500,lineCap:"round",lineWidth:3,strokeStyle:"red"};function Hn(e){return e.type==P.IncrementalSnapshot&&(e.data.source==T.TouchMove||e.data.source==T.MouseInteraction&&e.data.type==V.TouchStart)}class Tc{constructor(t,r){if(I(this,"wrapper"),I(this,"iframe"),I(this,"service"),I(this,"speedService"),I(this,"config"),I(this,"usingVirtualDom",!1),I(this,"virtualDom",new et),I(this,"mouse"),I(this,"mouseTail",null),I(this,"tailPositions",[]),I(this,"emitter",Ac()),I(this,"nextUserInteractionEvent"),I(this,"legacy_missingNodeRetryMap",{}),I(this,"cache",zi()),I(this,"imageMap",new Map),I(this,"canvasEventMap",new Map),I(this,"mirror",Jn()),I(this,"styleMirror",new Ys),I(this,"mediaManager"),I(this,"firstFullSnapshot",null),I(this,"newDocumentQueue",[]),I(this,"mousePos",null),I(this,"touchActive",null),I(this,"lastMouseDownEvent",null),I(this,"lastHoveredRootNode"),I(this,"lastSelectionData",null),I(this,"constructedStyleMutations",[]),I(this,"adoptedStyleSheets",[]),I(this,"emitterHandlers",[]),I(this,"serviceSubscription"),I(this,"speedServiceSubscription"),I(this,"timeouts",new Set),I(this,"styleSheetLoadListeners",new Map),I(this,"handleResize",l=>{this.iframe.style.display="inherit";for(const n of[this.mouseTail,this.iframe])n&&(n.setAttribute("width",String(l.width)),n.setAttribute("height",String(l.height)))}),I(this,"applyEventsSynchronously",l=>{for(const n of l){switch(n.type){case P.DomContentLoaded:case P.Load:case P.Custom:continue;case P.FullSnapshot:case P.Meta:case P.Plugin:case P.IncrementalSnapshot:break}this.getCastFn(n,!0)()}}),I(this,"getCastFn",(l,n=!1)=>{let c;switch(l.type){case P.DomContentLoaded:case P.Load:break;case P.Custom:c=()=>{this.emitter.emit(q.CustomEvent,l)};break;case P.Meta:c=()=>this.emitter.emit(q.Resize,{width:l.data.width,height:l.data.height});break;case P.FullSnapshot:c=()=>{var h;if(this.firstFullSnapshot){if(this.firstFullSnapshot===l){this.firstFullSnapshot=!0;return}}else this.firstFullSnapshot=!0;this.mediaManager.reset(),this.styleMirror.reset(),this.rebuildFullSnapshot(l,n),(h=this.iframe.contentWindow)==null||h.scrollTo(l.data.initialOffset)};break;case P.IncrementalSnapshot:c=()=>{if(this.applyIncremental(l,n),!n&&(l===this.nextUserInteractionEvent&&(this.nextUserInteractionEvent=null,this.backToNormal()),this.config.skipInactive&&!this.nextUserInteractionEvent)){for(const h of this.service.state.context.events)if(!(h.timestamp<=l.timestamp)&&this.isUserInteraction(h)){h.delay-l.delay>this.config.inactivePeriodThreshold*this.speedService.state.context.timer.speed&&(this.nextUserInteractionEvent=h);break}if(this.nextUserInteractionEvent){const h=this.nextUserInteractionEvent.delay-l.delay,p={speed:Math.min(Math.round(h/Dc),this.config.maxSpeed)};this.speedService.send({type:"FAST_FORWARD",payload:p}),this.emitter.emit(q.SkipStart,p)}}};break}return()=>{c&&c();for(const p of this.config.plugins||[])p.handler&&p.handler(l,n,{replayer:this});this.service.send({type:"CAST_EVENT",payload:{event:l}});const h=this.service.state.context.events.length-1;if(!this.config.liveMode&&l===this.service.state.context.events[h]){const p=()=>{h<this.service.state.context.events.length-1||(this.backToNormal(),this.service.send("END"),this.emitter.emit(q.Finish))};let m=50;l.type===P.IncrementalSnapshot&&l.data.source===T.MouseMove&&l.data.positions.length&&(m+=Math.max(0,-l.data.positions[0].timeOffset)),setTimeout(p,m)}this.emitter.emit(q.EventCast,l)}}),!(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:ls,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.addEmitterHandler(q.Resize,this.handleResize),this.setupDom();for(const l of this.config.plugins||[])l.getMirror&&l.getMirror({nodeMirror:this.mirror});const i=()=>{if(this.usingVirtualDom){const l={mirror:this.mirror,applyCanvas:(n,c,d)=>{ds({event:n,mutation:c,target:d,imageMap:this.imageMap,canvasEventMap:this.canvasEventMap,errorHandler:this.warnCanvasMutationFailed.bind(this)})},applyInput:this.applyInput.bind(this),applyScroll:this.applyScroll.bind(this),applyStyleSheetMutation:(n,c)=>{n.source===T.StyleSheetRule?this.applyStyleSheetRule(n,c):n.source===T.StyleDeclaration&&this.applyStyleDeclaration(n,c)},afterAppend:(n,c)=>{for(const d of this.config.plugins||[])d.onBuild&&d.onBuild(n,{id:c,replayer:this})}};if(this.iframe.contentDocument)try{Tt(this.iframe.contentDocument,this.virtualDom,l,this.virtualDom.mirror)}catch(n){this.warn(n)}if(this.virtualDom.destroyTree(),this.usingVirtualDom=!1,Object.keys(this.legacy_missingNodeRetryMap).length)for(const n in this.legacy_missingNodeRetryMap)try{const c=this.legacy_missingNodeRetryMap[n],d=_t(c.node,this.mirror,this.virtualDom.mirror);Tt(d,c.node,l,this.virtualDom.mirror),c.node=d}catch(c){this.warn(c)}this.constructedStyleMutations.forEach(n=>{this.applyStyleSheetMutation(n)}),this.constructedStyleMutations=[],this.adoptedStyleSheets.forEach(n=>{this.applyAdoptedStyleSheet(n)}),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[l,n]=this.lastMouseDownEvent;l.dispatchEvent(n)}this.lastMouseDownEvent=null,this.lastSelectionData&&(this.applySelection(this.lastSelectionData),this.lastSelectionData=null)};this.addEmitterHandler(q.Flush,i);const o=()=>{this.firstFullSnapshot=null,this.mirror.reset(),this.styleMirror.reset(),this.mediaManager.reset()};this.addEmitterHandler(q.PlayBack,o);const a=new wc([],{speed:this.config.speed});this.service=bc({events:t.map(l=>r&&r.unpackFn?r.unpackFn(l):l).sort((l,n)=>l.timestamp-n.timestamp),timer:a,timeOffset:0,baselineTime:0,lastPlayedEvent:null},{getCastFn:this.getCastFn,applyEventsSynchronously:this.applyEventsSynchronously,emitter:this.emitter}),this.service.start(),this.serviceSubscription=this.service.subscribe(l=>{this.emitter.emit(q.StateChange,{player:l})}),this.speedService=Sc({normalSpeed:-1,timer:a}),this.speedService.start(),this.speedServiceSubscription=this.speedService.subscribe(l=>{this.emitter.emit(q.StateChange,{speed:l})}),this.mediaManager=new Nc({warn:this.warn.bind(this),service:this.service,speedService:this.speedService,emitter:this.emitter,getCurrentTime:this.getCurrentTime.bind(this)});const u=this.service.state.context.events.find(l=>l.type===P.Meta),f=this.service.state.context.events.find(l=>l.type===P.FullSnapshot);if(u){const{width:l,height:n}=u.data;this.addTimeout(()=>{this.emitter.emit(q.Resize,{width:l,height:n})},0)}f&&this.addTimeout(()=>{var l;this.firstFullSnapshot||(this.firstFullSnapshot=f,this.rebuildFullSnapshot(f),(l=this.iframe.contentWindow)==null||l.scrollTo(f.data.initialOffset))},1),this.service.state.context.events.find(Hn)&&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}addEmitterHandler(t,r){this.emitter.on(t,r),this.emitterHandlers.push({event:t,handler:r})}addTimeout(t,r){const s=setTimeout(()=>{this.timeouts.delete(s),t()},r);return this.timeouts.add(s),s}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(q.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(q.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(q.Resume)}destroy(){var t,r;!this.wrapper||!this.wrapper.parentNode||(this.pause(),this.emitterHandlers.forEach(({event:s,handler:i})=>{this.emitter.off(s,i)}),this.emitterHandlers=[],(t=this.serviceSubscription)==null||t.unsubscribe(),(r=this.speedServiceSubscription)==null||r.unsubscribe(),this.serviceSubscription=void 0,this.speedServiceSubscription=void 0,this.service.stop(),this.speedService.stop(),this.timeouts.forEach(s=>clearTimeout(s)),this.timeouts.clear(),this.styleSheetLoadListeners.forEach((s,i)=>{i.removeEventListener("load",s)}),this.styleSheetLoadListeners.clear(),this.imageMap.clear(),this.canvasEventMap.clear(),this.mirror.reset(),this.styleMirror.reset(),this.mediaManager.reset(),this.resetCache(),this.config.root.removeChild(this.wrapper),this.emitter.emit(q.Destroy))}startLive(t){this.service.send({type:"TO_LIVE",payload:{baselineTime:t}})}addEvent(t){const r=this.config.unpackFn?this.config.unpackFn(t):t;Hn(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=zi()}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&&(yc(this.iframe.contentWindow,this.iframe.contentDocument),Vs(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,o=(f,l)=>{if(f.nodeName==="DIALOG"&&i.add(f),this.collectIframeAndAttachDocument(s,f),this.mediaManager.isSupportedMediaElement(f)){const{events:n}=this.service.state.context;this.mediaManager.addMediaElements(f,t.timestamp-n[0].timestamp,this.mirror)}for(const n of this.config.plugins||[])n.onBuild&&n.onBuild(f,{id:l,replayer:this})};this.usingVirtualDom&&(this.virtualDom.destroyTree(),this.usingVirtualDom=!1),this.mirror.reset(),bl(t.data.node,{doc:this.iframe.contentDocument,afterAppend:o,cache:this.cache,mirror:this.mirror}),o(this.iframe.contentDocument,t.data.node.id);for(const{mutationInQueue:f,builtNode:l}of s)this.attachDocumentToIframe(f,l),this.newDocumentQueue=this.newDocumentQueue.filter(n=>n!==f);const{documentElement:a,head:u}=this.iframe.contentDocument;this.insertStyleRules(a,u),i.forEach(f=>Mt(f)),this.service.state.matches("playing")||this.iframe.contentDocument.getElementsByTagName("html")[0].classList.add("rrweb-paused"),this.emitter.emit(q.FullsnapshotRebuilded,t),r||this.waitForStylesheetLoad(),this.config.UNSAFE_replayCanvas&&this.preloadAllImages()}insertStyleRules(t,r){var s;const i=Cc(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; }"),this.usingVirtualDom){const o=this.virtualDom.createElement("style");this.virtualDom.mirror.add(o,To(o,this.virtualDom.unserializedId)),t.insertBefore(o,r),o.rules.push({source:T.StyleSheetRule,adds:i.map((a,u)=>({rule:a,index:u}))})}else{const o=document.createElement("style");t.insertBefore(o,r);for(let a=0;a<i.length;a++)(s=o.sheet)==null||s.insertRule(i[a],a)}}attachDocumentToIframe(t,r){const s=this.usingVirtualDom?this.virtualDom.mirror:this.mirror,i=[],o=new Set,a=(u,f)=>{u.nodeName==="DIALOG"&&o.add(u),this.collectIframeAndAttachDocument(i,u);const l=s.getMeta(u);if((l==null?void 0:l.type)===Ee.Element&&(l==null?void 0:l.tagName.toUpperCase())==="HTML"){const{documentElement:n,head:c}=r.contentDocument;this.insertStyleRules(n,c)}if(!this.usingVirtualDom)for(const n of this.config.plugins||[])n.onBuild&&n.onBuild(u,{id:f,replayer:this})};it(t.node,{doc:r.contentDocument,mirror:s,hackCss:!0,skipChild:!1,afterAppend:a,cache:this.cache}),a(r.contentDocument,t.node.id);for(const{mutationInQueue:u,builtNode:f}of i)this.attachDocumentToIframe(u,f),this.newDocumentQueue=this.newDocumentQueue.filter(l=>l!==u);o.forEach(u=>Mt(u))}collectIframeAndAttachDocument(t,r){if(Qe(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,o=this.service.state;const a=()=>{o=this.service.state};this.emitter.on(q.Start,a),this.emitter.on(q.Pause,a);const u=()=>{this.emitter.off(q.Start,a),this.emitter.off(q.Pause,a)};r.querySelectorAll('link[rel="stylesheet"]').forEach(f=>{f.sheet||(s.add(f),f.addEventListener("load",()=>{s.delete(f),s.size===0&&i!==-1&&(o.matches("playing")&&this.play(this.getCurrentTime()),this.emitter.emit(q.LoadStylesheetEnd),i&&clearTimeout(i),u())}))}),s.size>0&&(this.service.send({type:"PAUSE"}),this.emitter.emit(q.LoadStylesheetStart),i=setTimeout(()=>{o.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===P.IncrementalSnapshot&&r.data.source===T.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"),o=i==null?void 0:i.createImageData(s.width,s.height);i==null||i.putImageData(o,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 o=>{const a=await Promise.all(o.args.map(De(this.imageMap,null,s)));return ie(L({},o),{args:a})}));s.isUnchanged===!1&&this.canvasEventMap.set(r,ie(L({},t),{commands:i}))}else{const i=await Promise.all(t.args.map(De(this.imageMap,null,s)));s.isUnchanged===!1&&this.canvasEventMap.set(r,ie(L({},t),{args:i}))}}}applyIncremental(t,r){var s,i,o;const{data:a}=t;switch(a.source){case T.Mutation:{try{this.applyMutation(a,r)}catch(u){this.warn(`Exception in mutation ${u.message||u}`,a)}break}case T.Drag:case T.TouchMove:case T.MouseMove:if(r){const u=a.positions[a.positions.length-1];this.mousePos={x:u.x,y:u.y,id:u.id,debugData:a}}else a.positions.forEach(u=>{const f={doAction:()=>{this.moveAndHover(u.x,u.y,u.id,r,a)},delay:u.timeOffset+t.timestamp-this.service.state.context.baselineTime};this.timer.addAction(f)}),this.timer.addAction({doAction(){},delay:t.delay-((s=a.positions[0])==null?void 0:s.timeOffset)});break;case T.MouseInteraction:{if(a.id===-1)break;const u=new Event(Ae(V[a.type])),f=this.mirror.getNode(a.id);if(!f)return this.debugNodeNotFound(a,a.id);this.emitter.emit(q.MouseInteraction,{type:a.type,target:f});const{triggerFocus:l}=this.config;switch(a.type){case V.Blur:"blur"in f&&f.blur();break;case V.Focus:l&&f.focus&&f.focus({preventScroll:!0});break;case V.Click:case V.TouchStart:case V.TouchEnd:case V.MouseDown:case V.MouseUp:r?(a.type===V.TouchStart?this.touchActive=!0:a.type===V.TouchEnd&&(this.touchActive=!1),a.type===V.MouseDown?this.lastMouseDownEvent=[f,u]:a.type===V.MouseUp&&(this.lastMouseDownEvent=null),this.mousePos={x:a.x||0,y:a.y||0,id:a.id,debugData:a}):(a.type===V.TouchStart&&(this.tailPositions.length=0),this.moveAndHover(a.x||0,a.y||0,a.id,r,a),a.type===V.Click?(this.mouse.classList.remove("active"),this.mouse.offsetWidth,this.mouse.classList.add("active")):a.type===V.TouchStart?(this.mouse.offsetWidth,this.mouse.classList.add("touch-active")):a.type===V.TouchEnd?this.mouse.classList.remove("touch-active"):f.dispatchEvent(u));break;case V.TouchCancel:r?this.touchActive=!1:this.mouse.classList.remove("touch-active");break;default:f.dispatchEvent(u)}break}case T.Scroll:{if(a.id===-1)break;if(this.usingVirtualDom){const u=this.virtualDom.mirror.getNode(a.id);if(!u)return this.debugNodeNotFound(a,a.id);u.scrollData=a;break}this.applyScroll(a,r);break}case T.ViewportResize:this.emitter.emit(q.Resize,{width:a.width,height:a.height});break;case T.Input:{if(a.id===-1)break;if(this.usingVirtualDom){const u=this.virtualDom.mirror.getNode(a.id);if(!u)return this.debugNodeNotFound(a,a.id);u.inputData=a;break}this.applyInput(a);break}case T.MediaInteraction:{const u=this.usingVirtualDom?this.virtualDom.mirror.getNode(a.id):this.mirror.getNode(a.id);if(!u)return this.debugNodeNotFound(a,a.id);const f=u,{events:l}=this.service.state.context;this.mediaManager.mediaMutation({target:f,timeOffset:t.timestamp-l[0].timestamp,mutation:a});break}case T.StyleSheetRule:case T.StyleDeclaration:{this.usingVirtualDom?a.styleId?this.constructedStyleMutations.push(a):a.id&&((i=this.virtualDom.mirror.getNode(a.id))==null||i.rules.push(a)):this.applyStyleSheetMutation(a);break}case T.CanvasMutation:{if(!this.config.UNSAFE_replayCanvas)return;if(this.usingVirtualDom){const u=this.virtualDom.mirror.getNode(a.id);if(!u)return this.debugNodeNotFound(a,a.id);u.canvasMutations.push({event:t,mutation:a})}else{const u=this.mirror.getNode(a.id);if(!u)return this.debugNodeNotFound(a,a.id);ds({event:t,mutation:a,target:u,imageMap:this.imageMap,canvasEventMap:this.canvasEventMap,errorHandler:this.warnCanvasMutationFailed.bind(this)})}break}case T.Font:{try{const u=new FontFace(a.family,a.buffer?new Uint8Array(JSON.parse(a.fontSource)):a.fontSource,a.descriptors);(o=this.iframe.contentDocument)==null||o.fonts.add(u)}catch(u){this.warn(u)}break}case T.Selection:{if(r){this.lastSelectionData=a;break}this.applySelection(a);break}case T.AdoptedStyleSheet:{this.usingVirtualDom?this.adoptedStyleSheets.push(a):this.applyAdoptedStyleSheet(a);break}}}applyMutation(t,r){if(this.config.useVirtualDom&&!this.usingVirtualDom&&r&&(this.usingVirtualDom=!0,Eu(this.iframe.contentDocument,this.mirror,this.virtualDom),Object.keys(this.legacy_missingNodeRetryMap).length))for(const f in this.legacy_missingNodeRetryMap)try{const l=this.legacy_missingNodeRetryMap[f],n=Ao(l.node,this.virtualDom,this.mirror);n&&(l.node=n)}catch(l){this.warn(l)}const s=this.usingVirtualDom?this.virtualDom.mirror:this.mirror;t.removes=t.removes.filter(f=>s.getNode(f.id)?!0:(this.warnNodeNotFound(t,f.id),!1)),t.removes.forEach(f=>{var l;const n=s.getNode(f.id);if(!n)return;let c=s.getNode(f.parentId);if(!c)return this.warnNodeNotFound(t,f.parentId);if(f.isShadow&&Oe(c)&&(c=c.shadowRoot),s.removeNodeFromMap(n),c)try{c.removeChild(n),this.usingVirtualDom&&n.nodeName==="#text"&&c.nodeName==="STYLE"&&((l=c.rules)==null?void 0:l.length)>0&&(c.rules=[])}catch(d){if(d instanceof DOMException)this.warn("parent could not remove child in mutation",c,n,t);else throw d}});const i=L({},this.legacy_missingNodeRetryMap),o=[],a=f=>{var l,n;if(!this.iframe.contentDocument)return this.warn("Looks like your replayer has been destroyed.");let c=s.getNode(f.parentId);if(!c)return f.node.type===Ee.Document?this.newDocumentQueue.push(f):t.adds.some(S=>S.node.id===f.parentId)?o.push(f):void 0;f.node.isShadow&&(Oe(c)||c.attachShadow({mode:"open"}),c=c.shadowRoot);let d=null,h=null;if(f.previousId&&(d=s.getNode(f.previousId)),f.nextId&&(h=s.getNode(f.nextId)),f.node.rootId&&!s.getNode(f.node.rootId))return;const p=f.node.rootId?s.getNode(f.node.rootId):this.usingVirtualDom?this.virtualDom:this.iframe.contentDocument;if(Qe(c,s)){this.attachDocumentToIframe(f,c);return}const m=(y,S)=>{if(!this.usingVirtualDom){Mt(y);for(const E of this.config.plugins||[])E.onBuild&&E.onBuild(y,{id:S,replayer:this})}},g=it(f.node,{doc:p,mirror:s,skipChild:!0,hackCss:!0,cache:this.cache,afterAppend:m});if(f.previousId===-1||f.nextId===-1){i[f.node.id]={node:g,mutation:f};return}const w=s.getMeta(c);if(w&&w.type===Ee.Element&&f.node.type===Ee.Text){const y=Array.isArray(c.childNodes)?c.childNodes:Array.from(c.childNodes);if(w.tagName==="textarea")for(const S of y)S.nodeType===c.TEXT_NODE&&c.removeChild(S);else if(w.tagName==="style"&&y.length===1)for(const S of y)S.nodeType===c.TEXT_NODE&&!s.hasNode(S)&&(g.textContent=S.textContent,c.removeChild(S))}else if((w==null?void 0:w.type)===Ee.Document){const y=c;f.node.type===Ee.DocumentType&&((l=y.childNodes[0])==null?void 0:l.nodeType)===Node.DOCUMENT_TYPE_NODE&&y.removeChild(y.childNodes[0]),g.nodeName==="HTML"&&y.documentElement&&y.removeChild(y.documentElement)}if(d&&d.nextSibling&&d.nextSibling.parentNode?c.insertBefore(g,d.nextSibling):h&&h.parentNode?c.contains(h)?c.insertBefore(g,h):c.insertBefore(g,null):c.appendChild(g),m(g,f.node.id),this.usingVirtualDom&&g.nodeName==="#text"&&c.nodeName==="STYLE"&&((n=c.rules)==null?void 0:n.length)>0&&(c.rules=[]),Qe(g,this.mirror)){const y=this.mirror.getId(g),S=this.newDocumentQueue.find(E=>E.parentId===y);S&&(this.attachDocumentToIframe(S,g),this.newDocumentQueue=this.newDocumentQueue.filter(E=>E!==S))}(f.previousId||f.nextId)&&this.legacy_resolveMissingNode(i,c,g,f)};t.adds.forEach(f=>{a(f)});const u=performance.now();for(;o.length;){const f=Lo(o);if(o.length=0,performance.now()-u>150){this.warn("Timeout in the loop, please check the resolve tree data:",f);break}for(const l of f)s.getNode(l.value.parentId)?js(l,c=>{a(c)}):this.debug("Drop resolve tree since there is no parent for the root node.",l)}Object.keys(i).length&&Object.assign(this.legacy_missingNodeRetryMap,i),Fo(t.texts).forEach(f=>{var l;const n=s.getNode(f.id);if(!n)return t.removes.find(c=>c.id===f.id)?void 0:this.warnNodeNotFound(t,f.id);if(n.textContent=f.value,this.usingVirtualDom){const c=n.parentNode;((l=c==null?void 0:c.rules)==null?void 0:l.length)>0&&(c.rules=[])}}),t.attributes.forEach(f=>{var l;const n=s.getNode(f.id);if(!n)return t.removes.find(c=>c.id===f.id)?void 0:this.warnNodeNotFound(t,f.id);for(const c in f.attributes)if(typeof c=="string"){const d=f.attributes[c];if(d===null)n.removeAttribute(c),c==="open"&&Oc(n,f);else if(typeof d=="string")try{if(c==="_cssText"&&(n.nodeName==="LINK"||n.nodeName==="STYLE"))try{const h=s.getMeta(n);Object.assign(h.attributes,f.attributes);const p=it(h,{doc:n.ownerDocument,mirror:s,skipChild:!0,hackCss:!0,cache:this.cache}),m=n.nextSibling,g=n.parentNode;if(p&&g){g.removeChild(n),g.insertBefore(p,m),s.replace(f.id,p);break}}catch(h){}if(c==="value"&&n.nodeName==="TEXTAREA"){const h=n;h.childNodes.forEach(m=>h.removeChild(m));const p=(l=n.ownerDocument)==null?void 0:l.createTextNode(d);p&&h.appendChild(p)}else n.setAttribute(c,d);c==="rr_open_mode"&&n.nodeName==="DIALOG"&&Mt(n,f)}catch(h){this.warn("An error occurred may due to the checkout feature.",h)}else if(c==="style"){const h=d,p=n;for(const m in h)if(h[m]===!1)p.style.removeProperty(m);else if(h[m]instanceof Array){const g=h[m];p.style.setProperty(m,g[0],g[1])}else{const g=h[m];p.style.setProperty(m,g)}}}})}applyScroll(t,r){var s,i;const o=this.mirror.getNode(t.id);if(!o)return this.debugNodeNotFound(t,t.id);const a=this.mirror.getMeta(o);if(o===this.iframe.contentDocument)(s=this.iframe.contentWindow)==null||s.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"});else if((a==null?void 0:a.type)===Ee.Document)(i=o.defaultView)==null||i.scrollTo({top:t.y,left:t.x,behavior:r?"auto":"smooth"});else try{o.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:o,end:a,endOffset:u})=>{const f=this.mirror.getNode(i),l=this.mirror.getNode(a);if(!f||!l)return;const n=new Range;n.setStart(f,o),n.setEnd(l,u);const c=f.ownerDocument,d=c==null?void 0:c.getSelection();return d&&r.add(d),{range:n,selection:d}});r.forEach(i=>i.removeAllRanges()),s.forEach(i=>{var o;return i&&((o=i.selection)==null?void 0:o.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===T.StyleSheetRule?this.applyStyleSheetRule(t,s):t.source===T.StyleDeclaration&&this.applyStyleDeclaration(t,s))}applyStyleSheetRule(t,r){var s,i,o,a;if((s=t.adds)==null||s.forEach(({rule:u,index:f})=>{try{if(Array.isArray(f)){const{positions:l,index:n}=hs(f);Je(r.cssRules,l).insertRule(u,n)}else{const l=f===void 0?void 0:Math.min(f,r.cssRules.length);r==null||r.insertRule(u,l)}}catch(l){}}),(i=t.removes)==null||i.forEach(({index:u})=>{try{if(Array.isArray(u)){const{positions:f,index:l}=hs(u);Je(r.cssRules,f).deleteRule(l||0)}else r==null||r.deleteRule(u)}catch(f){}}),t.replace)try{(o=r.replace)==null||o.call(r,t.replace)}catch(u){}if(t.replaceSync)try{(a=r.replaceSync)==null||a.call(r,t.replaceSync)}catch(u){}}applyStyleDeclaration(t,r){var s,i;if(t.set){const o=Je(r.rules,t.index);(s=o==null?void 0:o.style)==null||s.setProperty(t.set.property,t.set.value,t.set.priority)}if(t.remove){const o=Je(r.rules,t.index);(i=o==null?void 0:o.style)==null||i.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 f;let l=null,n=null;if(Oe(s)?n=((f=s.ownerDocument)==null?void 0:f.defaultView)||null:s.nodeName==="#document"&&(n=s.defaultView),!!n)try{l=new n.CSSStyleSheet,this.styleMirror.add(l,u.styleId),this.applyStyleSheetRule({source:T.StyleSheetRule,adds:u.rules},l)}catch(c){}});const i=10;let o=0;const a=(u,f)=>{const l=f.map(n=>this.styleMirror.getStyle(n)).filter(n=>n!==null);Oe(u)?u.shadowRoot.adoptedStyleSheets=l:u.nodeName==="#document"&&(u.adoptedStyleSheets=l),l.length!==f.length&&o<i&&(setTimeout(()=>a(u,f),0+100*o),o++)};a(s,t.styleIds)}legacy_resolveMissingNode(t,r,s,i){const{previousId:o,nextId:a}=i,u=o&&t[o],f=a&&t[a];if(u){const{node:l,mutation:n}=u;r.insertBefore(l,s),delete t[n.node.id],delete this.legacy_missingNodeRetryMap[n.node.id],(n.previousId||n.nextId)&&this.legacy_resolveMissingNode(t,r,l,n)}if(f){const{node:l,mutation:n}=f;r.insertBefore(l,s.nextSibling),delete t[n.node.id],delete this.legacy_missingNodeRetryMap[n.node.id],(n.previousId||n.nextId)&&this.legacy_resolveMissingNode(t,r,l,n)}}moveAndHover(t,r,s,i,o){const a=this.mirror.getNode(s);if(!a)return this.debugNodeNotFound(o,s);const u=Gs(a,this.iframe),f=t*u.absoluteScale+u.x,l=r*u.absoluteScale+u.y;this.mouse.style.left=`${f}px`,this.mouse.style.top=`${l}px`,i||this.drawMouseTail({x:f,y:l}),this.hoverElements(a)}drawMouseTail(t){if(!this.mouseTail)return;const{lineCap:r,lineWidth:s,strokeStyle:i,duration:o}=this.config.mouseTail===!0?ls:Object.assign({},ls,this.config.mouseTail),a=()=>{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(f=>u.lineTo(f.x,f.y)),u.stroke())};this.tailPositions.push(t),a(),setTimeout(()=>{this.tailPositions=this.tailPositions.filter(u=>u!==t),a()},o/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!==P.IncrementalSnapshot?!1:t.data.source>T.Mutation&&t.data.source<=T.Input}backToNormal(){this.nextUserInteractionEvent=null,!this.speedService.state.matches("normal")&&(this.speedService.send({type:"BACK_TO_NORMAL"}),this.emitter.emit(q.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(jn,...t)}debug(...t){this.config.showDebug&&this.config.logger.log(jn,...t)}}const{addCustomEvent:_c}=ke,{freezePage:Pc}=ke,{takeFullSnapshot:kc}=ke;exports.EventType=P;exports.IncrementalSource=T;exports.MouseInteractions=V;exports.Replayer=Tc;exports.ReplayerEvents=q;exports.addCustomEvent=_c;exports.canvasMutation=ds;exports.freezePage=Pc;exports.record=ke;exports.takeFullSnapshot=kc;exports.utils=Bu;
|
|
148
148
|
;if (typeof module.exports == "object" && typeof exports == "object") {
|
|
149
149
|
var __cp = (to, from, except, desc) => {
|
|
150
150
|
if ((from && typeof from === "object") || typeof from === "function") {
|