Skip to main content

Class: ScrollList<P>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:54

A scrollable list.

Extends

Extended by

Type Parameters

Type ParameterDefault type
P extends ScrollListPropsScrollListProps

Constructors

Constructor

new ScrollList<P>(props): ScrollList<P>

Defined in: sdk/components/FSComponent.ts:73

Creates an instance of a DisplayComponent.

Parameters

ParameterTypeDescription
propsPThe propertis of the component.

Returns

ScrollList<P>

Inherited from

DisplayComponent.constructor

Properties

_animationTargetScrollPos

protected readonly _animationTargetScrollPos: Subject<undefined | number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:182


_firstVisibleIndex

protected readonly _firstVisibleIndex: MappedSubject<[number, number], number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:199


_itemsPerPage

protected readonly _itemsPerPage: undefined | Subject<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:72


_lengthPx

protected readonly _lengthPx: Subscribable<number> | MappedSubscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:100


_listItemLengthWithMarginPx

protected readonly _listItemLengthWithMarginPx: MappedSubject<[number, number], number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:81


_maxScrollPos

protected readonly _maxScrollPos: MappedSubject<[number, number], number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:126


_renderWindow

protected readonly _renderWindow: Vec2Subject

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:231


_scrollPos

protected readonly _scrollPos: Subject<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:139


_totalLengthPx

protected readonly _totalLengthPx: MappedSubject<[number, number, number], number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:89


animateFunc()

protected readonly animateFunc: () => void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:238

Called once per animation frame while we are animating.

Returns

void


animationTargetScrollPos

readonly animationTargetScrollPos: Subscribable<undefined | number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:187

The scroll position targeted by this list's current scrolling animation, in pixels, or undefined if scrolling is not currently animated or the animation has no defined target scroll position.


context?

optional context: [] = undefined

Defined in: sdk/components/FSComponent.ts:64

The context on this component, if any.

Inherited from

DisplayComponent.context


contextType?

readonly optional contextType: readonly [] = undefined

Defined in: sdk/components/FSComponent.ts:67

The type of context for this component, if any.

Inherited from

DisplayComponent.contextType


cssClassSub?

protected optional cssClassSub: Subscription | Subscription[]

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:254


deltaTimeSeconds

protected deltaTimeSeconds: number = 0

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:243


firstVisibleIndex

readonly firstVisibleIndex: Subscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:207


goToAnimationTargetPos

protected goToAnimationTargetPos: boolean = false

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:249


interval?

protected optional interval: number

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:250


isAnimating

protected isAnimating: boolean = false

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:240


itemCount

protected readonly itemCount: Subscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:67


itemsContainerRef

protected readonly itemsContainerRef: NodeReference<HTMLDivElement>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:59


itemsPerPage

readonly itemsPerPage: undefined | Subscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:77

The number of visible list items per page displayed by this list, or undefined if the number of items per page is not prescribed.


itemsPerPageProp

protected readonly itemsPerPageProp: undefined | Subscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:63


lastTimeSeconds

protected lastTimeSeconds: number = 0

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:242


lengthPx

readonly lengthPx: Subscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:113

The visible length of this list, in pixels, along its scroll axis.


listItemLengthPx

protected readonly listItemLengthPx: Subject<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:65


listItemLengthPxProp

protected readonly listItemLengthPxProp: Subscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:61


listItemLengthWithMarginPx

readonly listItemLengthWithMarginPx: Subscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:87

The length, in pixels, of one item in this list plus its margin along this list's scroll axis.


listItemParamSubs

protected readonly listItemParamSubs: Subscription[] = []

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:252


listItemSpacingPx

protected readonly listItemSpacingPx: Subject<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:66


listItemSpacingPxProp

protected readonly listItemSpacingPxProp: Subscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:62


maxOverscrollPx

protected readonly maxOverscrollPx: Subscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:137

How many pixels we will allow overscrolling before stopping.


maxRenderedItemCount

protected readonly maxRenderedItemCount: undefined | MappedSubject<[number, number], number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:209


maxScrollPos

readonly maxScrollPos: Subscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:134

This list's maximum allowed scroll position, in pixels. Does not include overscroll.


maxTimeInOverscrollSeconds

protected maxTimeInOverscrollSeconds: number = 0.5

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:246

How long to wait while overscrolled before snapping back.


pageLength

protected readonly pageLength: MappedSubscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:116

The length of one page, in pixels, along this list's scroll axis.


props

props: P & ComponentProps

Defined in: sdk/components/FSComponent.ts:61

The properties of the component.

Inherited from

DisplayComponent.props


renderWindow

readonly renderWindow: Subscribable<Readonly<Omit<Float64Array<ArrayBufferLike>, "set" | "sort" | "copyWithin">>>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:236

The window of rendered list items, as [startIndex, endIndex], where startIndex is the index of the first rendered item, inclusive, and endIndex is the index of the last rendered item, exclusive.


renderWindowStartIndex

protected readonly renderWindowStartIndex: Subject<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:217


renderWindowStartPos

protected readonly renderWindowStartPos: MappedSubject<[number, number], number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:218


rootRef

protected readonly rootRef: NodeReference<HTMLDivElement>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:57


scrollAxis

readonly scrollAxis: "y" | "x"

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:70

The axis along which this list scrolls.


scrollBarLengthFraction

readonly scrollBarLengthFraction: Subscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:174

The fraction of this list's visible length compared to the total length of all items in this list plus their margins along this list's scroll axis.


scrollPos

readonly scrollPos: Subscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:144

This list's current scroll position, in pixels. The scroll position is zero when the list is scrolled to the beginning (without overscroll) and increases as the list is scrolled toward the end.


scrollPosFraction

readonly scrollPosFraction: Subscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:150

This list's current scroll position, normalized such that 0 represents when the list is scrolled to the beginning (without overscroll) and 1 represents when the list is scrolled to the end (without overscroll).


snappingTransitionSpeed

protected snappingTransitionSpeed: number = 200

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:248

Once at or below this velocity, we pick that target Y to snap to.


snapToItem

protected readonly snapToItem: boolean

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:79


targetScrollPos

readonly targetScrollPos: MappedSubject<[undefined | number, number], number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:193

This list's current target scroll position, in pixels. The target scroll position is equal to the current animation target if it is defined; otherwise it is equal to the current scroll position.


timeInOverscrollSeconds

protected timeInOverscrollSeconds: number = 0

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:244


totalLengthPx

readonly totalLengthPx: Subscribable<number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:98

The total length, in pixels, of all items in this list plus their margins along this list's scroll axis.


translatableRef

protected readonly translatableRef: NodeReference<HTMLDivElement>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:58


trueScrollPos

protected readonly trueScrollPos: MappedSubject<[number, number], number>

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:225

This list's current scroll position adjusted for the render window.


velocity

protected velocity: number = 0

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:241


RESERVED_CLASSES

protected readonly static RESERVED_CLASSES: string[]

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:55

Methods

animate()

protected animate(): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:485

Called once per animation frame while we are animating.

Returns

void


animateSnapback()

protected animateSnapback(): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:554

Animates scrolling back when overscrolled.

Returns

void


animateSnapping()

protected animateSnapping(deltaTimeSeconds): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:585

If we have a target Y position to stop scrolling at, animate towards a smooth stop right at that point.

Parameters

ParameterTypeDescription
deltaTimeSecondsnumberSeconds since last animation frame.

Returns

void


animateVelocity()

protected animateVelocity(deltaTimeSeconds): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:529

Applies the velocity to the scroll position, which gives it the "flick" effect. Also slows the velocity down overtime.

Parameters

ParameterTypeDescription
deltaTimeSecondsnumberSeconds since last animation frame.

Returns

void


changeRenderWindow()

protected changeRenderWindow(scrollPos, renderCount, itemLength, windowLength): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:736

Changes this list's item render window.

Parameters

ParameterTypeDescription
scrollPosnumberThe scroll position on which to center the new render window, in pixels.
renderCountnumberThe number of items to render in the new window.
itemLengthnumberThe length of each item to render, including margin, in pixels.
windowLengthnumberThe length of the render window, in pixels.

Returns

void


destroy()

destroy(): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:867

Destroys this component.

Returns

void

Overrides

DisplayComponent.destroy


ensureScrollIsInBounds()

protected ensureScrollIsInBounds(): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:763

Checks if the list is scrolled past the maximum limit, and if so, snaps the list back to the limit.

Returns

void


executeScrollTo()

protected executeScrollTo(pos, animate): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:446

Executes a scroll to a specifed position.

Parameters

ParameterTypeDescription
posnumberThe position to which to scroll.
animatebooleanWhether to animate the scroll.

Returns

void


getContainerRef()

getContainerRef(): HTMLDivElement

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:303

Returns a reference to the element where the list items should be added.

Returns

HTMLDivElement

A reference to the element where the list items should be added.


getContext()

protected getContext(context): never

Defined in: sdk/components/FSComponent.ts:106

Gets a context data subscription from the context collection.

Parameters

ParameterTypeDescription
contextneverThe context to get the subscription for.

Returns

never

The requested context.

Throws

An error if no data for the specified context type could be found.

Inherited from

DisplayComponent.getContext


getDampening()

protected getDampening(direction): number

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:779

Returns a number used to dampen the mouse movement when overscrolled.

Parameters

ParameterTypeDescription
directionnumberWhat direction os the mouse moving in.

Returns

number

a number used to dampen the mouse movement when overscrolled.


getOverscrollPx()

protected getOverscrollPx(): number

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:811

Gets the distance by which this list is currently overscrolled, in pixels along the scroll axis.

Returns

number

The distance by which this list is currently overscrolled, in pixels along the scroll axis.


getReservedCssClasses()

protected getReservedCssClasses(): readonly string[]

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:862

Gets an array of this list's reserved CSS classes.

Returns

readonly string[]

An array of this list's reserved CSS classes.


isOverscrolled()

protected isOverscrolled(): boolean

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:825

Returns whether this list is currently overscrolled.

Returns

boolean

Whether this list is currently overscrolled.


onAfterRender()

onAfterRender(): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:257

A callback that is called after the component is rendered.

Returns

void

Overrides

DisplayComponent.onAfterRender


onBeforeRender()

onBeforeRender(): void

Defined in: sdk/components/FSComponent.ts:80

A callback that is called before the component is rendered.

Returns

void

Inherited from

DisplayComponent.onBeforeRender


onListItemParamChanged()

protected onListItemParamChanged(pipeTo, value): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:691

Responds to when one of this list's item parameters changes when the list supports snapping to items.

Parameters

ParameterTypeDescription
pipeToMutableSubscribable<number>The mutable subscribable to which to pipe the new parameter value.
valuenumberThe new parameter value.

Returns

void


pageBack()

pageBack(): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:310

Scrolls backward by one full page length.

Returns

void


pageForward()

pageForward(): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:325

Scrolls forward by one full page length.

Returns

void


pickNearestSnapToPos()

protected pickNearestSnapToPos(pos): number

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:682

Picks the scroll position, in pixels, of the snap-to target that is nearest to a given scroll position.

Parameters

ParameterTypeDescription
posnumberThe scroll position, in pixels, for which to find the nearest snap-to target.

Returns

number

The scroll position, in pixels, of the snap-to target that is nearest to the specified scroll position.


render()

render(): VNode

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:830

Renders the component.

Returns

VNode

A JSX element to be rendered.

Overrides

DisplayComponent.render


scrollToIndex()

scrollToIndex(index, position, animate): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:346

Scrolls until the item at a specified index is in view.

Parameters

ParameterTypeDescription
indexnumberThe index of the item to which to scroll.
positionnumberThe position to place the target item at the end of the scroll. Position 0 is the top/left-most visible slot, position 1 is the next slot, and so on. Values greater than or equal to the number of visible items per page will be clamped. Negative values will be interpreted as counting backwards from the bottom/right-most visible slot starting with -1. Ignored if this list does not support snapping to list items.
animatebooleanWhether to animate the scroll.

Returns

void


scrollToIndexWithMargin()

scrollToIndexWithMargin(index, margin, animate): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:402

Scrolls the minimum possible distance until the item at a specified index is in view with a given margin from the edges of the visible list.

Parameters

ParameterTypeDescription
indexnumberThe index of the item to which to scroll.
marginnumberThe margin from the edges of the visible list to respect when scrolling to the target item. In other words, the scrolling operation will attempt to place the target item at least as far from the edges of the visible list as the specified margin. If this list supports snapping to items, then the margin should be expressed as an item count. If this list does not support snapping to items, then the margin should be expressed as pixels. The margin will be clamped between zero and the largest possible value such that an item can be placed within the visible list while respecting the margin value on both sides.
animatebooleanWhether to animate the scroll.

Returns

void


startAnimating()

protected startAnimating(): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:463

Reset the animation vars and start the animation, if not already started.

Returns

void


stopAnimating()

protected stopAnimating(): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:475

Stop the animation.

Returns

void


updateRenderWindow()

protected updateRenderWindow(): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:706

Updates this list's item render window.

Returns

void


updateTransformX()

protected updateTransformX(scrollPos): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:748

Updates this list's item container's x-transform based on the current true scroll position.

Parameters

ParameterTypeDescription
scrollPosnumberThe current true scroll position, in pixels.

Returns

void


updateTransformY()

protected updateTransformY(scrollPos): void

Defined in: workingtitle-instruments-epic2/shared/Components/List/ScrollList.tsx:756

Updates this list's item container's y-transform based on the current true scroll position.

Parameters

ParameterTypeDescription
scrollPosnumberThe current true scroll position, in pixels.

Returns

void