The attributes passed into the component.
The root DOM element for the component.
Class component state that is persisted between redraws.
Updating this will not automatically trigger a redraw, unlike other frameworks.
This is different to Vnode state, which is always an instance of your class component.
This is undefined by default.
Returns a jQuery object for this component's element. If you pass in a selector string, this method will return a jQuery object, using the current element as its buffer.
For example, calling component.$('li') will return a jQuery object
containing all of the li elements inside the DOM element of this
component.
Optionalselector: stringa jQuery-compatible selector string
the jQuery object for the DOM node
Begin settling mode for the given target. Fully tears down any in-progress settling first to avoid listener and timer leaks on consecutive jumps, then arms fresh listeners and timers.
Work out which posts (by number) are currently visible in the viewport, and fire an event with the information.
When fallbackToTarget is true and the DOM scan finds no loaded post with
a data-number, the settling target's post number is used as the start.
This allows an immediate URL emit right after a programmatic scroll lands,
before async content has finished loading.
Disconnect the ResizeObserver, end settling mode, and release tracked data.
Called from onremove to prevent memory leaks.
Passes updatePosition: false to endSettling so that no history entry is
written after the user has already navigated away from this discussion.
Compute which post numbers are currently visible in the viewport, without emitting anything. Pure calculation.
Emit a position update to the host page. Single path to call onPositionChange.
Exit settling mode: stop watching for layout shifts, remove listeners, clear timers, and optionally update the URL/scrubber to match the final viewport.
updatePosition defaults to true (normal end-of-settling reconciliation).
Pass false when called from the unmount path so no stale history entry is
written after the user has already navigated away.
'Flash' the given post, drawing the user's attention to it.
Get the distance from the top of the viewport to the point at which we would consider a post to be the first one visible.
Check if either extreme of the post stream is in the viewport, and if so, trigger loading the next/previous page.
Observe any newly-rendered .PostStream-item elements that are not yet
tracked. Called on every onupdate to pick up items added by infinite
scroll or lazy loading.
Re-scroll to the locked target post. Uses the same offset logic as scrollToItem's post-load adjustment. Called synchronously from the ResizeObserver callback so the correction is applied before the browser paints, preventing visible flicker.
Reset (or start) the stability timer. If no ResizeObserver callback fires within 3 seconds, we consider the layout stable and exit settling.
Resolve a definitive post number from the current settling target, for use as an immediate-emit fallback when the DOM scan finds no loaded post.
Returns undefined when no number can be determined (placeholder targets, reply targets) — callers should skip the emit in that case.
Scroll down to a certain post by index.
Whether or not to scroll to the reply placeholder.
Scroll down to the given post.
Whether or not to force scrolling to the item, even if it is already in the viewport.
Whether or not to scroll to the reply placeholder.
Scroll down to a certain post by number and 'flash' it.
Set up a ResizeObserver that watches .PostStream-item elements for size
changes. During the "settling" phase (after a programmatic scroll), any
observed resize triggers an immediate re-scroll to the target post so the
viewport stays locked on it while asynchronous content loads.
Register global event listeners that end settling when the user takes control (scrolling, touching, or pressing a key).
Remove the user-interaction listeners registered by startSettlingListeners.
Start scrolling, if appropriate, to a newly-targeted post.
StaticcomponentConvenience method to attach a component without JSX.
Has the same effect as calling m(THIS_CLASS, attrs, children).
StaticinitInitialize the component's attrs.
This can be used to assign default values for missing, optional attrs.
The
PostStreamcomponent displays an infinitely-scrollable wall of posts in a discussion. Posts that have not loaded will be displayed as placeholders.Attrs
discussionstreamtargetPostonPositionChange