/**
 * gridstack SASS styles 8.4.0
 * Copyright (c) 2021 Alain Dumesny - see GridStack root license
 */

$columns: 12 !default;
$animation_speed: .3s !default;

@function fixed($float) {
  @return calc(round($float * 1000) / 1000); // total 4-5 digits being %
}

@mixin vendor($property, $value...){
  // -webkit-#{$property}: $value;
  // -moz-#{$property}: $value;
  // -ms-#{$property}: $value;
  // -o-#{$property}: $value;
  #{$property}: $value;
}

.grid-stack {
  position: relative;
}

.grid-stack-rtl {
  direction: ltr;
  > .grid-stack-item {
    direction: rtl;
  }
}

.grid-stack-placeholder > .placeholder-content {
  background-color: rgba(0,0,0,0.1);
  margin: 0;
  position: absolute;
  width: auto;
  z-index: 0 !important;
}

// make those more unique as to not conflict with side panel items
.grid-stack > .grid-stack-item {
  position: absolute;
  top: 0px;
  left: 0%;
  padding: 0;

  > .grid-stack-item-content {
    margin: 0;
    position: absolute;
    width: auto;
    overflow-x: hidden;
    overflow-y: auto;
  }
}

.grid-stack-item {
  > .ui-resizable-handle {
    position: absolute;
    font-size: 0.1px;
    display: block;
    -ms-touch-action: none;
    touch-action: none;
  }

  &.ui-resizable-disabled > .ui-resizable-handle,
  &.ui-resizable-autohide > .ui-resizable-handle { display: none; }

  > .ui-resizable-ne,
  > .ui-resizable-nw,
  > .ui-resizable-se,
  > .ui-resizable-sw {
    background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8IS0tIEdlbmVyYXRvcjogQWRvYmUgSWxsdXN0cmF0b3IgMTYuMC4wLCBTVkcgRXhwb3J0IFBsdWctSW4gLiBTVkcgVmVyc2lvbjogNi4wMCBCdWlsZCAwKSAgLS0+CjwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjE2cHgiIGhlaWdodD0iMTZweCIgdmlld0JveD0iMCAwIDUxMS42MjYgNTExLjYyNyIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTExLjYyNiA1MTEuNjI3OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+CjxnPgoJPHBhdGggZD0iTTMyOC45MDYsNDAxLjk5NGgtMzYuNTUzVjEwOS42MzZoMzYuNTUzYzQuOTQ4LDAsOS4yMzYtMS44MDksMTIuODQ3LTUuNDI2YzMuNjEzLTMuNjE1LDUuNDIxLTcuODk4LDUuNDIxLTEyLjg0NSAgIGMwLTQuOTQ5LTEuODAxLTkuMjMxLTUuNDI4LTEyLjg1MWwtNzMuMDg3LTczLjA5QzI2NS4wNDQsMS44MDksMjYwLjc2LDAsMjU1LjgxMywwYy00Ljk0OCwwLTkuMjI5LDEuODA5LTEyLjg0Nyw1LjQyNCAgIGwtNzMuMDg4LDczLjA5Yy0zLjYxOCwzLjYxOS01LjQyNCw3LjkwMi01LjQyNCwxMi44NTFjMCw0Ljk0NiwxLjgwNyw5LjIyOSw1LjQyNCwxMi44NDVjMy42MTksMy42MTcsNy45MDEsNS40MjYsMTIuODUsNS40MjYgICBoMzYuNTQ1djI5Mi4zNThoLTM2LjU0MmMtNC45NTIsMC05LjIzNSwxLjgwOC0xMi44NSw1LjQyMWMtMy42MTcsMy42MjEtNS40MjQsNy45MDUtNS40MjQsMTIuODU0ICAgYzAsNC45NDUsMS44MDcsOS4yMjcsNS40MjQsMTIuODQ3bDczLjA4OSw3My4wODhjMy42MTcsMy42MTcsNy44OTgsNS40MjQsMTIuODQ3LDUuNDI0YzQuOTUsMCw5LjIzNC0xLjgwNywxMi44NDktNS40MjQgICBsNzMuMDg3LTczLjA4OGMzLjYxMy0zLjYyLDUuNDIxLTcuOTAxLDUuNDIxLTEyLjg0N2MwLTQuOTQ4LTEuODA4LTkuMjMyLTUuNDIxLTEyLjg1NCAgIEMzMzguMTQyLDQwMy44MDIsMzMzLjg1Nyw0MDEuOTk0LDMyOC45MDYsNDAxLjk5NHoiIGZpbGw9IiM2NjY2NjYiLz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8Zz4KPC9nPgo8L3N2Zz4K);
    background-repeat: no-repeat;
    background-position: center;
  }

  > .ui-resizable-ne {
    @include vendor(transform, translate(0, 10px) rotate(45deg));
  }
  > .ui-resizable-sw {
    @include vendor(transform, rotate(45deg));
  }

  > .ui-resizable-nw {
    @include vendor(transform, translate(0, 10px) rotate(-45deg));
  }
  > .ui-resizable-se {
    @include vendor(transform, rotate(-45deg));
  }

  > .ui-resizable-nw { cursor: nw-resize; width: 20px; height: 20px; top: 0; }
  > .ui-resizable-n  { cursor: n-resize;  height: 10px; top: 0; left: 25px; right: 25px; }
  > .ui-resizable-ne { cursor: ne-resize; width: 20px; height: 20px; top: 0; }
  > .ui-resizable-e  { cursor: e-resize;  width: 10px; top: 15px; bottom: 15px; }
  > .ui-resizable-se { cursor: se-resize; width: 20px; height: 20px;}
  > .ui-resizable-s  { cursor: s-resize;  height: 10px; left: 25px; bottom: 0; right: 25px; }
  > .ui-resizable-sw { cursor: sw-resize; width: 20px; height: 20px;}
  > .ui-resizable-w  { cursor: w-resize;  width: 10px; top: 15px; bottom: 15px; }

  &.ui-draggable-dragging {
    &> .ui-resizable-handle {
      display: none !important;
    }
  }

  &.ui-draggable-dragging {
    will-change: left, top;
    cursor: move;
  }

  &.ui-resizable-resizing {
    will-change: width, height;
  }
}

// not .grid-stack-item specific to also affect dragIn regions
.ui-draggable-dragging,
.ui-resizable-resizing {
  z-index: 10000; // bootstrap modal has a z-index of 1050

  > .grid-stack-item-content {
    box-shadow: 1px 4px 6px rgba(0, 0, 0, 0.2);
    opacity: 0.8;
  }
}

.grid-stack-animate,
.grid-stack-animate .grid-stack-item {
  @include vendor(transition, left $animation_speed, top $animation_speed, height $animation_speed, width $animation_speed);
}

.grid-stack-animate .grid-stack-item.ui-draggable-dragging,
.grid-stack-animate .grid-stack-item.ui-resizable-resizing,
.grid-stack-animate .grid-stack-item.grid-stack-placeholder{
  @include vendor(transition, left 0s, top 0s, height 0s, width 0s);
}

.gs-#{$columns} > .grid-stack-item {
  width: fixed(calc(100% / $columns));
  @for $i from 1 through ($columns - 1) {
    &[gs-x='#{$i}'] { left: fixed(calc(100% / $columns) * $i); }
    &[gs-w='#{$i + 1}'] { width: fixed(calc(100% / $columns) * ($i + 1)); }
  }
}

.gs-1 > .grid-stack-item {
  width: 100%;
}
