@import '../../common/styles/variables';
$lines-width: 1px;
$bullet-size: 7px;
$cell-spacing: 25px;
$cell-padding: 10px;
$bullet-margin: 10px;
$line-border: $lines-width solid $tree-lines-color;
$line-border-erase: $lines-width solid white;

$param-name-height: 20px;

$sub-schema-offset: ($bullet-size/2) + $bullet-margin;

.param-schema {
  padding-left: $sub-schema-offset - $lines-width;
  border-left: $line-border;
}

.param-wrap {
  position: relative;
}

.param-schema:before {
  content: "";
  position: absolute;
  left: $sub-schema-offset;
  top: ($param-name-height/2) + $cell-padding;
  bottom: 0;
  border-left: $line-border;
}

.param-name {
  font-size: 14px;
  padding: $cell-padding $cell-spacing $cell-padding 0;
  font-weight: bold;
  box-sizing: border-box;
  line-height: $param-name-height;
  border-left: $line-border;
  white-space: nowrap;
  position: relative;

  > span {
    vertical-align: middle;
  }
}

.param-info {
  width: 100%;
  padding: $cell-padding 0;
  box-sizing: border-box;
  border-bottom: 1px solid #ccc;
}

.param {
  display: flex;
}

.param-required {
  color: red;
  font-weight: bold;
  font-size: 12px;
  line-height: $param-name-height;
  vertical-align: middle;
}

.param-type {
  text-transform: capitalize;
  color: #999;
  font-size: 12px;
  line-height: $param-name-height;
  vertical-align: middle;
  font-weight: bold;
}

.param-type-trivial {
  margin: 10px 10px 0;
  display: inline-block;  
}

/* tree */

// Bullet
.param-name > span:before {
  content: "";
  display: inline-block;
  width: $bullet-size;
  height: $bullet-size;
  background-color: $tree-lines-color;
  margin: 0 $bullet-margin;
  vertical-align: middle;
}

.param-name > span:after {
  content: "";
  position: absolute;
  border-top: $line-border;
  width: $bullet-margin;
  left: 0;
  top: ($param-name-height/2) + $cell-padding;
}

.param-wrap:first-of-type .param-name:before {
  content: "";
  display: block;
  position: absolute;
  left: -$lines-width;
  top: 0;
  border-left: $line-border-erase;
  height: ($param-name-height/2) + $cell-padding;
}

.param-wrap:last-of-type > .param > .param-name:after {
  content: "";
  display: block;
  position: absolute;
  left: -$lines-width;
  border-left: $line-border-erase;
  top: ($param-name-height/2) + $cell-padding + $lines-width;
  background-color: white;
  bottom: 0;
}

.param-wrap:last-of-type > .param-schema {
  border-left-color: transparent;
}

.param-schema .param-wrap:first-of-type .param-name:before {
  display: none !important;
}


/* styles for array-schema for array */
$array-marker-font-sz: 12px;
$array-marker-line-height: 1.5;
.params-wrap.params-array:before, .params-wrap.params-array:after {
  display: block;
  font-weight: bold;
  color: #999;
  font-size: $array-marker-font-sz;
  line-height: $array-marker-line-height;
}

.params-wrap.params-array:after {
  content: "]";
}

.params-wrap.params-array:before {
  content: "Array [";
}

.params-wrap.params-array {
  padding-left: $bullet-margin;
}

.param-schema.param-array:before {
  bottom: ($array-marker-font-sz * $array-marker-line-height) / 2;
  width: $bullet-margin;
  border-left-style: dashed;
  border-bottom: $lines-width dashed $tree-lines-color;
}

.params-wrap.params-array > .param-wrap:first-of-type > .param > .param-name:after {
  content: "";
  display: block;
  position: absolute;
  left: -$lines-width;
  top: 0;
  border-left: $line-border-erase;
  height: ($param-name-height/2) + $cell-padding;
}