@import (inline) 'codemirror/lib/codemirror.css';
@import (inline) 'codemirror/addon/fold/foldgutter.css';
@import (inline) 'codemirror/addon/hint/show-hint.css'; // start-ctrl+空格代码提示补全
@import (inline) 'codemirror/addon/scroll/simplescrollbars.css';

@import './token.less';
@import './status.less';

.disabled-style() {
  background-color: @input-color-bg_disabled;
  cursor: not-allowed;
  color: @input-color-text_disabled;
  -webkit-text-fill-color: @input-color-text_disabled;
  border-color: @input-color-border_disabled;

  &:hover {
    border-color: @input-color-border_disabled;
    background-color: @input-color-bg_disabled;
    color: @input-color-text_disabled;
  }

  &::placeholder {
    color: @input-color-text_disabled;
  }
}

.input-style() {
  outline: none;
  appearance: none;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0%);
  width: 100%;
  border-radius: @input-border-radius;
  color: @input-color-text;
  padding-left: @input-padding-horizontal;
  padding-right: @input-padding-horizontal;
  font-size: @input-size-middle-font-size;
  box-sizing: border-box;
  transition: color @animation-duration-2 @ease-base-linear,
    border-color @animation-duration-2 @ease-base-linear,
    background-color @animation-duration-2 @ease-base-linear;
  border: @input-border-width solid @input-color-border;
  background-color: @input-color-bg;

  &::placeholder {
    color: @input-color-placeholder-text;
  }

  &:hover {
    background-color: @input-color-bg_hover;
    border-color: @input-color-border_hover;
  }

  &:focus,
  &&-focus {
    border-color: @input-color-border_focus;
    background-color: @input-color-bg_focus;
    box-shadow: 0 0 0 @input-size-shadow_focus @input-color-shadow_focus;
  }

  .input-status(quickstatic);
  .input-status(quickedit);
  .input-status(warning);
  .input-status(error);
}

.@{ns}-Editor {
  height: 100%;
  position: relative;
  .input-style();
  padding: 0;
  &-disabled {
    .disabled-style();
  }

  &-fullBtn {
    width: 18px !important;
    height: 18px !important;
    font-size: 16px;
    position: absolute !important;
    right: 10px;
    top: 2px;
    z-index: 9 !important;
    cursor: pointer;
  }

  &-full {
    border: 0 !important;
  }

  &-quickstatic,
  &-readonly,
  &-str {
    .react-codemirror2 .CodeMirror-cursors {
      visibility: hidden !important;
    }
  }

  &-str {
    overflow: hidden;
    .CodeMirror-simplescroll-horizontal,
    .CodeMirror-simplescroll-vertical,
    .CodeMirror-gutters {
      display: none !important;
    }
    .CodeMirror-sizer,
    .CodeMirror-lines {
      margin: 0;
      padding: 0;
    }
    .react-codemirror2 .CodeMirror {
      background-color: transparent !important;
    }

    .CodeMirror-activeline-background {
      background-color: transparent !important;
    }

    .@{ns}-Editor-fullBtn {
      right: 0 !important;
      top: 0 !important;
    }
  }

  .code-footer {
    position: absolute;
    bottom: 5px;
    right: 5px;
    width: fit-content;
    min-width: 100px;
    padding: 0px 0px;
    border-radius: 4px;
    background-color: #656565;
    color: #fff;
    line-height: 1;
    cursor: pointer;
    z-index: 10;

    &.fixed-foot {
      width: 100px;
      height: 24px;
      text-align: center;
      line-height: 24px;
    }

    .pd-Select-view {
      color: #fff !important;
    }
    .pd-Select-suffix {
      display: none;
    }
    .pd-Select-view-selector,
    input {
      text-align: center;
    }
    input::placeholder {
      color: rgba(255, 255, 255, 0.6);
      text-align: center;
    }
  }
  .react-codemirror2 {
    width: 100%;
    height: 100%;
    overflow: hidden;

    .CodeMirror {
      height: 100% !important;
      background-color: #fff;
      clip-path: none !important;
    }
  }

  .cm-s-default {
    .CodeMirror-gutters {
      border-right-color: rgba(0, 0, 0, 0.05) !important;
      background-color: #f9fbfc !important;
    }

    .CodeMirror-linenumber {
      color: #b8bbc3 !important;
      font-weight: 700;
    }

    .CodeMirror-activeline-gutter {
      .CodeMirror-linenumber {
        color: #0b216f !important;
      }
    }

    .CodeMirror-matchingbracket {
      color: var(--primary-6) !important;
      background-color: var(--primary-3);
      border-radius: 2px;
      box-shadow: inset 0 -1px 0 var(--primary-5);
    }

    .CodeMirror-nonmatchingbracket {
      color: var(--danger-6) !important;
      background-color: var(--danger-1);
      border-radius: 2px;
      box-shadow: inset 0 -1px 0 var(--danger-5);
    }

    .CodeMirror-foldgutter-open:after {
      font-family: codicon !important;
      content: '\eab4' !important;
    }

    .CodeMirror-foldgutter-folded:after {
      font-family: codicon !important;
      content: '\eab6' !important;
    }

    .CodeMirror-simplescroll-vertical {
      width: 14px !important;
    }

    .CodeMirror-simplescroll-horizontal {
      height: 14px !important;
    }

    .CodeMirror-simplescroll-horizontal {
      // 滚动条边框
      background: transparent !important;
    }

    .CodeMirror-simplescroll-vertical {
      // 滚动条边框
      background: transparent !important;
      border-left: none !important;
    }

    .CodeMirror-simplescroll-horizontal div,
    .CodeMirror-simplescroll-vertical div {
      // 滚动条轴
      background: rgba(121, 121, 121, 0.4) !important;
      border: none !important;
    }

    .CodeMirror-scrollbar-filler,
    .CodeMirror-gutter-filler {
      // 滚动条交汇处
      background: transparent !important;
    }
  }

  .cm-s-material {
    &.CodeMirror {
      background-color: #1e1e1e !important;
    }

    .CodeMirror-gutters {
      background: #1e1e1e !important;
    }

    .CodeMirror-linenumber {
      color: #858585 !important;
    }

    .CodeMirror-activeline-gutter {
      .CodeMirror-linenumber {
        color: #c6c6c6 !important;
      }
    }

    .CodeMirror-foldgutter-open:after {
      font-family: codicon !important;
      content: '\eab4' !important;
      color: #c5c5c5 !important;
    }

    .CodeMirror-foldgutter-folded:after {
      font-family: codicon !important;
      content: '\eab6' !important;
      color: #c5c5c5 !important;
    }

    .CodeMirror-simplescroll-vertical {
      width: 14px !important;
    }

    .CodeMirror-simplescroll-horizontal {
      height: 14px !important;
    }

    .CodeMirror-simplescroll-horizontal {
      // 滚动条边框
      background: transparent !important;
    }

    .CodeMirror-simplescroll-vertical {
      // 滚动条边框
      background: transparent !important;
      border-left: 1px solid rgba(90, 93, 94, 0.31) !important;
    }

    .CodeMirror-simplescroll-horizontal div,
    .CodeMirror-simplescroll-vertical div {
      // 滚动条轴
      background: rgba(121, 121, 121, 0.4) !important;
      border: none !important;
    }

    .CodeMirror-scrollbar-filler,
    .CodeMirror-gutter-filler {
      // 滚动条交汇处
      background: transparent !important;
    }
  }

  .pd-Trigger {
    .pd-Empty {
      padding: 10px 30px;
    }
    .pd-Select-popup-inner {
      min-width: 150px;
    }
    .Select-highlight {
      color: red;
    }
  }
}
