/**
 * Outputs the styles and selectors for the DragAndDropWrapper component.
 * 
 * @param {string} $primary-stylename (v-ddwrapper) - the primary style name for the selectors
 * 
 * @group drag-n-drop
 */
@mixin valo-dragwrapper ($primary-stylename: v-ddwrapper) {

  [draggable=true] {
    -khtml-user-drag: element;
    -webkit-user-drag: element;
  }

  .#{$primary-stylename}.v-active-drag-source {
    // This breaks file upload dragging (for some reason the ddwrapper gets this class when an active file drag is over it)
    // visibility: hidden;
  }

  .#{$primary-stylename} {
    position: relative;
  }

  .#{$primary-stylename}-over:before,
  .#{$primary-stylename}-over:after {
    content: "";
    position: absolute;
    z-index: 10;
    top: -1px;
    right: -1px;
    bottom: -1px;
    left: -1px;
    border: 0 solid $v-focus-color;
  }

  .#{$primary-stylename}-over-top:before {
    border-top-width: 2px;
  }

  .#{$primary-stylename}-over-right:before {
    border-right-width: 2px;
  }

  .#{$primary-stylename}-over-bottom:before {
    border-bottom-width: 2px;
  }

  .#{$primary-stylename}-over-left:before {
    border-left-width: 2px;
  }

  .no-vertical-drag-hints {
    .#{$primary-stylename}-over-top,
    &.#{$primary-stylename}-over-top {
      &:before {
        border-top-width: 0;
      }
      &:after {
        @include valo-ddwrapper-box-hint-style;
      }
    }

    .#{$primary-stylename}-over-bottom,
    &.#{$primary-stylename}-over-bottom {
      &:before {
        border-bottom-width: 0;
      }
      &:after {
        @include valo-ddwrapper-box-hint-style;
      }
    }
  }

  .no-horizontal-drag-hints {
    &.#{$primary-stylename}-over-left,
    .#{$primary-stylename}-over-left {
      &:before {
        border-left-width: 0;
      }
      &:after {
        @include valo-ddwrapper-box-hint-style;
      }
    }

    &.#{$primary-stylename}-over-right,
    .#{$primary-stylename}-over-right {
      &:before {
        border-right-width: 0;
      }
      &:after {
        @include valo-ddwrapper-box-hint-style;
      }
    }
  }

  .#{$primary-stylename}-over-middle:after,
  .#{$primary-stylename}-over-center:after {
    @include valo-ddwrapper-box-hint-style;
  }

  .no-box-drag-hints {
    &.#{$primary-stylename}:after,
    .#{$primary-stylename}:after {
      display: none !important;
      content: none;
    }
  }


}


/**
 * Outputs the styles for a drop target when the drag is on top of it.
 * 
 * @group drag-n-drop
 */
@mixin valo-ddwrapper-box-hint-style {
  border-width: 2px;
  border-radius: $v-border-radius;
  @include opacity(.3);

  $focus-color: $v-focus-color;
  @if is-dark-color($focus-color) {
    background: scale-color($focus-color, $lightness: 50%);
  } @else {
    background: scale-color($focus-color, $lightness: -50%);
  }
}
