({
scrollCb,
doc,
mirror,
blockClass,
blockSelector,
sampling,
}: Pick<
observerParam,
'scrollCb' | 'doc' | 'mirror' | 'blockClass' | 'blockSelector' | 'sampling'
>)
| 309 | } |
| 310 | |
| 311 | export 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 | |
| 354 | function initViewportResizeObserver( |
| 355 | { viewportResizeCb }: observerParam, |
no test coverage detected
searching dependent graphs…