<Styles xmlns="https://github.com/avaloniaui"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:converters="clr-namespace:Avalonia.Controls.Converters;assembly=Avalonia.Controls">
  <Style Selector="ScrollViewer">
    <Setter Property="Background"
            Value="Transparent" />
    <Setter Property="Template">
      <ControlTemplate>
        <Grid ColumnDefinitions="*,Auto" RowDefinitions="*,Auto">
          <ScrollContentPresenter Name="PART_ContentPresenter"
                                  Background="{TemplateBinding Background}"
                                  CanHorizontallyScroll="{TemplateBinding CanHorizontallyScroll}"
                                  CanVerticallyScroll="{TemplateBinding CanVerticallyScroll}"
                                  Content="{TemplateBinding Content}"
                                  Extent="{TemplateBinding Extent, Mode=TwoWay}"
                                  Padding="{TemplateBinding Padding}"
                                  Offset="{TemplateBinding Offset, Mode=TwoWay}"
                                  Viewport="{TemplateBinding Viewport, Mode=TwoWay}"
                                  IsScrollChainingEnabled="{TemplateBinding IsScrollChainingEnabled}">
            <ScrollContentPresenter.GestureRecognizers>
              <ScrollGestureRecognizer
                CanHorizontallyScroll="{TemplateBinding CanHorizontallyScroll}"
                CanVerticallyScroll="{TemplateBinding CanVerticallyScroll}"
            />
            </ScrollContentPresenter.GestureRecognizers>
          </ScrollContentPresenter>
          <ScrollBar Name="horizontalScrollBar"
                     Orientation="Horizontal"
                     LargeChange="{Binding LargeChange.Width, RelativeSource={RelativeSource TemplatedParent}}"
                     SmallChange="{Binding SmallChange.Width, RelativeSource={RelativeSource TemplatedParent}}"
                     Maximum="{TemplateBinding HorizontalScrollBarMaximum}"
                     Value="{TemplateBinding HorizontalScrollBarValue, Mode=TwoWay}"
                     ViewportSize="{TemplateBinding HorizontalScrollBarViewportSize}"
                     Visibility="{TemplateBinding HorizontalScrollBarVisibility}"
                     Grid.Row="1"
                     Focusable="False"/>
          <ScrollBar Name="verticalScrollBar"
                     Orientation="Vertical"
                     LargeChange="{Binding LargeChange.Height, RelativeSource={RelativeSource TemplatedParent}}"
                     SmallChange="{Binding SmallChange.Height, RelativeSource={RelativeSource TemplatedParent}}"
                     Maximum="{TemplateBinding VerticalScrollBarMaximum}"
                     Value="{TemplateBinding VerticalScrollBarValue, Mode=TwoWay}"
                     ViewportSize="{TemplateBinding VerticalScrollBarViewportSize}"
                     Visibility="{TemplateBinding VerticalScrollBarVisibility}"
                     Grid.Column="1"
                     Focusable="False"/>
          <Panel Grid.Row="1" Grid.Column="1" Background="{DynamicResource ThemeControlMidBrush}"/>
        </Grid>
      </ControlTemplate>
    </Setter>
  </Style>

  <Style Selector="ScrollViewer.menuscroller">
    <Setter Property="Template">
      <ControlTemplate>
        <DockPanel>
          <RepeatButton DockPanel.Dock="Top"
                        BorderThickness="0"
                        Background="Transparent"
                        Command="{Binding LineUp, RelativeSource={RelativeSource TemplatedParent}}">
            <RepeatButton.IsVisible>
              <MultiBinding Converter="{x:Static converters:MenuScrollingVisibilityConverter.Instance}"
                            ConverterParameter="0">
                <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="VerticalScrollBarVisibility"/>
                <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Offset.Y"/>
                <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Extent.Height"/>
                <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Viewport.Height"/>
              </MultiBinding>
            </RepeatButton.IsVisible>
            <Path Data="M 0 4 L 8 4 L 4 0 Z"/>
          </RepeatButton>
          <RepeatButton DockPanel.Dock="Bottom"
                        BorderThickness="0"
                        Background="Transparent"
                        Command="{Binding LineDown, RelativeSource={RelativeSource TemplatedParent}}">
            <RepeatButton.IsVisible>
              <MultiBinding Converter="{x:Static converters:MenuScrollingVisibilityConverter.Instance}"
                            ConverterParameter="100">
                <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="VerticalScrollBarVisibility"/>
                <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Offset.Y"/>
                <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Extent.Height"/>
                <Binding RelativeSource="{RelativeSource TemplatedParent}" Path="Viewport.Height"/>
              </MultiBinding>
            </RepeatButton.IsVisible>
            <Path Data="M 0 0 L 4 4 L 8 0 Z"/>
          </RepeatButton>
          <ScrollContentPresenter Name="PART_ContentPresenter"
                                  CanHorizontallyScroll="{TemplateBinding CanHorizontallyScroll}"
                                  CanVerticallyScroll="{TemplateBinding CanVerticallyScroll}"
                                  Content="{TemplateBinding Content}"
                                  Extent="{TemplateBinding Extent, Mode=TwoWay}"
                                  Margin="{TemplateBinding Padding}"
                                  Offset="{TemplateBinding Offset, Mode=TwoWay}"
                                  Viewport="{TemplateBinding Viewport, Mode=TwoWay}"/>
        </DockPanel>
      </ControlTemplate>
    </Setter>
  </Style>
  <Style Selector="ScrollViewer.menuscroller /template/ RepeatButton > Path">
    <Setter Property="Fill" Value="{DynamicResource ThemeForegroundLowBrush}" />
  </Style>

  <Style Selector="ScrollViewer.menuscroller /template/ RepeatButton:pointerover > Path">
    <Setter Property="Fill" Value="{DynamicResource ThemeAccentBrush}" />
  </Style>
</Styles>
