/*
 * https://github.com/morethanwords/tweb
 * Copyright (C) 2019-2021 Eduard Kuzmenko
 * https://github.com/morethanwords/tweb/blob/master/LICENSE
 */

@use "sass:math";

.peer-typing {
  //display: flex;
  margin-inline-end: 4px;
  
  &-container {
    --color: var(--primary-color);
    color: var(--color);
    //display: inline-block;
    //display: flex;
    //align-items: center;
  }

  /* &-description {
    @include text-overflow();
  } */

  &-flex {
    display: flex;
    align-items: center;
  }

  &:not(.peer-typing-text):not(.peer-typing-choosing-sticker) {
    display: inline-block;
    vertical-align: middle;
    transform: translateY(-1px);
  }

  &-text {
    &-dot {
      width: 6px;
      height: 6px;
      border-radius: 50%;
      background-color: currentColor;
      margin: 0 .5px;
      display: inline-block;
      vertical-align: middle;
      animation-duration: .6s;
      animation-iteration-count: infinite;
      animation-timing-function: linear;
      animation-name: dotMiddle;

      &-first {
        animation-name: dotFirst;
      }

      &-last {
        animation-name: dotLast;
      }
    }
  }

  &-upload {
    width: 13px;
    height: 5px;
    overflow: hidden;
    position: relative;
    border-radius: 2px;
    margin-inline-end: .375rem;
    
    &:before,
    &:after {
      display: block;
      content: " ";
      position: absolute;
      inset: 0;
      background-color: currentColor;
      border-radius: inherit;
    }

    &:before {
      opacity: .3;
    }

    &:after {
      animation: upload 1s ease-in-out infinite;
    }
  }

  &-record {
    margin-inline-end: .375rem;

    &:before {
      content: " ";
      display: block;
      width: 6px;
      height: 6px;
      border-radius: 50%;
      background-color: currentColor;
      animation: recordBlink 1.25s infinite;
    }
  }

  &-choosing-sticker {
    margin-inline-end: .375rem;
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    height: 16px;

    &-eye {
      width: 8px;
      height: 14px;
      border-radius: 50%;
      display: inline-block;
      vertical-align: middle;
      border: 1px solid currentColor;
      margin: 0 .0625rem;
      position: relative;
      animation: eye 1.8s ease-in-out infinite;

      &:before {
        content: " ";
        display: block;
        width: .25rem;
        height: .25rem;
        background-color: currentColor;
        border-radius: 50%;
        position: absolute;
        // left: 50%;
        top: 50%;
        // transform: translate(-50%, -50%);
        animation: eye-move 1.8s ease-in-out infinite;
        transform: translate(-1px, -50%);
      }
    }
  }
}

$scale-max: 1;
$scale-step: math.div(1, 6);
$scale-mid: $scale-max - $scale-step;
$scale-min: $scale-max - ($scale-step * 2);
$opacity-max: 1;
$opacity-step: .1;
$opacity-mid: $opacity-max - $opacity-step;
$opacity-min: $opacity-max - ($opacity-step * 2);
@keyframes dotFirst {
  0% {
    transform: scale($scale-min);
    opacity: $opacity-min;
  }
  
  50% {
    transform: scale($scale-min);
    opacity: $opacity-min;
  }

  75% {
    transform: scale($scale-max);
    opacity: $opacity-max;
  }

  100% {
    transform: scale($scale-min);
    opacity: $opacity-min;
  }
}

@keyframes dotMiddle {
  0% {
    transform: scale($scale-mid);
    opacity: $opacity-mid;
  }

  12.5% {
    transform: scale($scale-min);
    opacity: $opacity-min;
  }
  
  62.5% {
    transform: scale($scale-min);
    opacity: $opacity-min;
  }

  87.5% {
    transform: scale($scale-max);
    opacity: $opacity-max;
  }

  100% {
    transform: scale($scale-mid);
    opacity: $opacity-mid;
  }
}

@keyframes dotLast {
  0% {
    transform: scale($scale-max);
    opacity: $opacity-max;
  }

  25% {
    transform: scale($scale-min);
    opacity: $opacity-min;
  }
  
  75% {
    transform: scale($scale-min);
    opacity: $opacity-min;
  }

  100% {
    transform: scale($scale-max);
    opacity: $opacity-max;
  }
}

@keyframes upload {
  0% {
    transform: translateX(-13px);
  }

  100% {
    transform: translate(13px);
  }
}

@keyframes eye {
  0% {
    transform: scale(1.1) translateX(-.75px);
  }
  
  12.5% {
    transform: scale(1) translateX(0px);
  }

  25% {
    transform: scale(1.1) translateX(.375px);
  }

  50% {
    transform: scale(1.1) translateX(.75px);
  }
  
  62.5% {
    transform: scale(1) translateX(0px);
  }

  75% {
    transform: scale(1.1) translateX(-.375px);
  }

  100% {
    transform: scale(1.1) translateX(-.75px);
  }
}

@keyframes eye-move {
  0% {
    transform: translate(-1px, -50%);
  }

  25% {
    transform: translate(3px, -50%);
  }
  
  50% {
    transform: translate(3px, -50%);
  }

  75% {
    transform: translate(-1px, -50%);
  }
  
  100% {
    transform: translate(-1px, -50%);
  }
}
