@import (reference) "../../../assets/css/index";

@prefixClass: ~"@{fishd-prefix}-slider";

@ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
@ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);

.borderBox() {
  box-sizing: border-box;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0); //  remove tap highlight color for mobile safari

  * {
    box-sizing: border-box;
    -webkit-tap-highlight-color: rgba(0, 0, 0, 0); //  remove tap highlight color for mobile safari
  }
}

.@{prefixClass} {
  .reset-component;
  position: relative;
  margin: @slider-margin;
  padding: 4px 0;
  height: 12px;
  cursor: pointer;
  .borderBox();

  &-with-marks {
    margin-bottom: 28px;
  }

  &-rail {
    position: absolute;
    width: 100%;
    height: 4px;
    border-radius: @slider-border-radius-base;
    background-color: @slider-rail-background-color;
    transition: background-color 0.3s;
  }

  &-track {
    position: absolute;
    height: 4px;
    border-radius: @slider-border-radius-base;
    background-color: @slider-track-background-color;
    transition: background-color 0.3s ease;
  }

  &-handle {
    position: absolute;
    margin-left: -7px;
    margin-top: -5px;
    width: 14px;
    height: 14px;
    cursor: pointer;
    cursor: -webkit-grab;
    cursor: grab;
    border-radius: 50%;
    border: solid 2px @slider-handle-color;
    background-color: @component-background;
    transition: border-color 0.3s, transform 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);
    touch-action: pan-x;

    &-custom {
      border-radius: initial;
      border-width: 0;
      outline: 0;
      width: initial;
      height: initial;
      box-shadow: unset;
    }

    &:not(&-custom):focus {
      border-color: @slider-handle-color-focus;
      box-shadow: 0 0 0 2px @slider-handle-color-focus-shadow;
      outline: none;
    }

    // ??
    &-click-focused:focus {
      border-color: tint(@primary-color, 50%);
      box-shadow: unset;
    }

    &.@{fishd-prefix}-tooltip-open {
      border-color: @slider-handle-color-tooltip-open;
    }
  }

  &:hover {
    .@{prefixClass}-rail {
      background-color: @slider-rail-background-color-hover;
    }
    .@{prefixClass}-track {
      background-color: @slider-track-background-color-hover;
    }
    .@{prefixClass}-handle:not(.@{fishd-prefix}-tooltip-open) {
      border-color: @slider-handle-color-hover;
    }
  }

  &-mark {
    position: absolute;
    top: 14px;
    left: 0;
    width: 100%;
    font-size: 14px;
  }

  &-mark-text {
    position: absolute;
    display: inline-block;
    vertical-align: middle;
    text-align: center;
    cursor: pointer;
    color: @text-color-tertiary;

    &-active {
      color: @text-color-secondary;
    }
  }

  &-step {
    position: absolute;
    width: 100%;
    height: 4px;
    background: transparent;
  }

  &-dot {
    position: absolute;
    bottom: -2px;
    margin-left: -4px;
    width: 8px;
    height: 8px;
    border: 2px solid @slider-dot-border-color;
    background-color: @component-background;
    cursor: pointer;
    border-radius: 50%;
    vertical-align: middle;
    &:first-child {
      margin-left: -4px;
    }
    &:last-child {
      margin-left: -4px;
    }
    &-active {
      border-color: @slider-dot-border-color-active;
    }
  }

  &-disabled {
    cursor: not-allowed;

    .@{prefixClass}-track {
      /* stylelint-disable-next-line declaration-no-important */
      background-color: @slider-disabled-color !important;
    }

    .@{prefixClass}-handle,
    .@{prefixClass}-dot {
      /* stylelint-disable-next-line declaration-no-important */
      border-color: @slider-disabled-color !important;
      background-color: @component-background;
      cursor: not-allowed;
      box-shadow: none;
    }

    .@{prefixClass}-mark-text,
    .@{prefixClass}-dot {
      /* stylelint-disable-next-line declaration-no-important */
      cursor: not-allowed !important;
    }
  }
}

.@{prefixClass}-vertical {
  width: 12px;
  height: 100%;
  margin: 6px 10px;
  padding: 0 4px;

  .@{prefixClass} {
    &-rail {
      height: 100%;
      width: 4px;
    }

    &-track {
      width: 4px;
    }

    &-handle {
      margin-left: -5px;
      margin-bottom: -7px;
      touch-action: pan-y;
    }

    &-mark {
      top: 0;
      left: 12px;
      width: 18px;
      height: 100%;
    }

    &-mark-text {
      left: 4px;
      white-space: nowrap;
    }

    &-step {
      width: 4px;
      height: 100%;
    }

    &-dot {
      top: auto;
      left: 2px;
      margin-bottom: -4px;
      &:first-child {
        margin-bottom: -4px;
      }
      &:last-child {
        margin-bottom: -4px;
      }
    }
  }
}
