A scrollable container with custom scrollbars and indicators for more items at the start and end of the container.
The current client size.
The current scroll position.
The current scroll size.
The children to render.
An extra padding from the scroll bars.
The maximum size of the component.
The orientation, this determines which way the panel should scroll.
The size of the indicator.
Sets the state variables from the current state of the element.
This is needed to be a separate function so the provider doesn't re-subscribe every update.
Renders the component.