.d-editor-container {
  display: flex;
  flex-grow: 1;
  max-width: 100%;
}

.d-editor {
  display: flex;
  flex-grow: 1;
  min-height: 0;
}

.d-editor-textarea-wrapper,
.d-editor-preview-wrapper {
  flex: 1;
}

.d-editor-textarea-wrapper {
  display: flex;
  flex-direction: column;
  background-color: var(--secondary);
  position: relative;
  border: 1px solid var(--primary-medium);

  textarea {
    background: transparent;
  }

  &.in-focus {
    @include default-focus;

    textarea {
      outline: 0;
    }
  }

  &.disabled {
    cursor: not-allowed;
    .d-editor-button-bar {
      visibility: hidden;
    }
  }
}

.d-editor-preview-wrapper {
  max-width: 49%;
  margin-left: 1%;
  display: flex;
  flex-direction: column;
}

.d-editor-button-bar {
  display: flex;
  align-items: center;
  min-height: 30px;
  border-bottom: 1px solid var(--primary-low);

  .btn,
  .btn-default {
    background-color: transparent;
    display: inline-block;
    color: var(--primary-medium);
    .d-icon {
      color: currentColor;
    }
    &:hover {
      color: var(--primary-low);
    }

    svg {
      -webkit-transform: translate3d(
        0,
        0,
        0
      ); // Hack: Reduces composer icon jitter while scrolling in Safari on iOS12
    }
  }

  .d-editor-spacer {
    height: 1em;
    display: inline-block;
    border-left: 1px solid var(--primary-low-mid);
  }

  .btn:not(.no-text) {
    font-size: $font-up-1;
  }

  .btn.bold {
    font-weight: bolder;
  }

  .btn.italic {
    font-style: italic;
  }
}

.d-editor-preview-wrapper {
  overflow: auto;
  cursor: default;
  -webkit-overflow-scrolling: touch;
  // the below gives text little space to overflow without being cropped (e.g., Õ in headings)
  padding-top: 1em;
  margin-top: -1em;
}

.d-editor-input,
.d-editor-preview {
  box-sizing: border-box;
  flex: 1 1 100%;
  width: 100%;
  margin: 0;
  min-height: auto;
  word-wrap: break-word;
  -webkit-appearance: none;
  border-radius: 0;
}

.d-editor-input {
  border: 0;
  padding: 10px;
  height: 100%;
  overflow-x: hidden;
  resize: none;
}

.d-editor-preview {
  height: auto;
}

.d-editor-plugin {
  display: flex;
  flex: 1 1;
  overflow: auto;
}

.composing-whisper .d-editor-preview {
  font-style: italic;
  color: var(--primary-medium) !important;
}

.hide-preview .d-editor-preview-wrapper {
  display: none;
  flex: 0;
}

.edit-category-tab-topic-template {
  .emoji.btn {
    display: none;
  }
}

.user-preferences .bio-composer,
.group-form-bio,
.edit-category-tab-topic-template {
  textarea {
    width: 100%;
    height: 100%;
    min-height: 10em;
  }
  .local-dates.btn {
    display: none;
  }
  .d-editor-container {
    display: block;
  }
  .d-editor-textarea-wrapper {
    border: 1px solid var(--primary-low);
  }
  .d-editor-preview-wrapper {
    max-width: 100%;
    margin: 0;
    padding: 0;
  }
  .d-editor-preview {
    background-color: var(--primary-very-low);
    margin-top: 1em;
    padding: 0.667em;
    &:empty {
      margin: 0;
      padding: 0;
    }
  }
}

.user-preferences .bio-composer,
.group-form-bio {
  padding: 10px;
  border: 1px solid var(--primary-low);
}

.d-editor-preview img {
  padding-bottom: 1.4em;
  &.emoji,
  &.avatar,
  &.site-icon {
    padding-bottom: 0;
  }
  &.resizable {
    object-fit: cover;
    object-position: top;
  }
}

.d-editor-preview .image-wrapper {
  --resizer-height: 1.75em;
  position: relative;
  display: inline-block;
  .desktop-view & {
    // need the extra space on mobile because controls are always visible
    padding-bottom: var(--resizer-height);
    margin-bottom: calc(var(--resizer-height) * -1);
  }

  img {
    padding-bottom: 0;
  }

  &:hover {
    .button-wrapper {
      opacity: 1;
    }
  }
  .button-wrapper {
    position: absolute;
    height: var(--resizer-height);
    bottom: 0;
    left: 0;
    opacity: 0;
    display: flex;
    align-items: center;
    transition: all 0.25s;
    z-index: 1; // needs to be higher than image
    width: 100%;
    background: var(--secondary); // for when images are wider than controls

    .scale-btn {
      background: var(--secondary); // for when controls are wider than image
      color: var(--tertiary);
      padding: 0 1em;
      &:first-child,
      &:last-child {
        padding: 0;
      }

      &.active {
        font-weight: bold;
        color: var(--primary);
      }

      &:not(.active):hover {
        text-decoration: underline;
        cursor: pointer;
      }
    }
  }
}

.mobile-view .d-editor-preview .image-wrapper .button-wrapper {
  opacity: 1;
}

// d-editor bar button sizing for all editors - this is kept seprate to keep
// everything in one place
.d-editor-button-bar {
  margin: 0.25em;

  // shared styles for all font sizes
  .btn,
  .btn-default {
    padding: 0.5em;
  }
  .d-editor-spacer {
    margin: 0 0.25em;
  }

  // small text size
  .text-size-smaller & {
    @include breakpoint(mobile-large) {
      .btn,
      .btn-default {
        padding: 0 0.4em;
      }
    }
    @include breakpoint(mobile-medium) {
      .btn,
      .btn-default {
        padding: 0 0.3em;
      }
      .d-editor-spacer {
        margin: 0 0.25em;
      }
    }
  }

  // normal text size
  .text-size-normal & {
    @include breakpoint(mobile-large) {
      .btn,
      .btn-default {
        padding: 0 0.35em;
      }
    }
    @include breakpoint(mobile-medium) {
      .btn,
      .btn-default {
        padding: 0 0.25em;
      }
    }
  }

  // larger text size
  .text-size-larger & {
    @include breakpoint(mobile-large) {
      .btn,
      .btn-default {
        padding: 0 0.3em;
      }
    }
    @include breakpoint(mobile-medium) {
      .btn,
      .btn-default {
        padding: 0 0.2em;
      }
    }
  }

  // largest text size
  .text-size-largest & {
    .btn,
    .btn-default {
      font-size: $font-down-1;
    }

    @include breakpoint(mobile-large) {
      .btn,
      .btn-default {
        padding: 0 0.3em;
      }
    }
    @include breakpoint(mobile-medium) {
      .btn,
      .btn-default {
        padding: 0 0.2em;
      }
    }
  }
}
