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