MCPcopy
hub / github.com/rrweb-io/rrweb / initScrollObserver

Function initScrollObserver

packages/rrweb/src/record/observer.ts:311–352  ·  view source on GitHub ↗
({
  scrollCb,
  doc,
  mirror,
  blockClass,
  blockSelector,
  sampling,
}: Pick<
  observerParam,
  'scrollCb' | 'doc' | 'mirror' | 'blockClass' | 'blockSelector' | 'sampling'
>)

Source from the content-addressed store, hash-verified

309}
310
311export function initScrollObserver({
312 scrollCb,
313 doc,
314 mirror,
315 blockClass,
316 blockSelector,
317 sampling,
318}: Pick<
319 observerParam,
320 'scrollCb' | 'doc' | 'mirror' | 'blockClass' | 'blockSelector' | 'sampling'
321>): listenerHandler {
322 const updatePosition = callbackWrapper(
323 throttle<UIEvent>(
324 callbackWrapper((evt) => {
325 const target = getEventTarget(evt);
326 if (
327 !target ||
328 isBlocked(target as Node, blockClass, blockSelector, true)
329 ) {
330 return;
331 }
332 const id = mirror.getId(target as Node);
333 if (target === doc && doc.defaultView) {
334 const scrollLeftTop = getWindowScroll(doc.defaultView);
335 scrollCb({
336 id,
337 x: scrollLeftTop.left,
338 y: scrollLeftTop.top,
339 });
340 } else {
341 scrollCb({
342 id,
343 x: (target as HTMLElement).scrollLeft,
344 y: (target as HTMLElement).scrollTop,
345 });
346 }
347 }),
348 sampling.scroll || 100,
349 ),
350 );
351 return on('scroll', updatePosition, doc);
352}
353
354function initViewportResizeObserver(
355 { viewportResizeCb }: observerParam,

Callers 2

addShadowRootMethod · 0.90
initObserversFunction · 0.85

Calls 7

callbackWrapperFunction · 0.90
throttleFunction · 0.90
isBlockedFunction · 0.90
getWindowScrollFunction · 0.90
onFunction · 0.90
getEventTargetFunction · 0.85
getIdMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…