slide method

void slide(
  1. String type, [
  2. Element? next
])

Implementation

void slide(String type, [Element? next]) {
  final activeItem = active,
    items = $element.find('.item'),
    nextItem = next ??
      (type == 'next' ? activeItem?.nextElementSibling ?? items.first :
       type == 'prev' ? activeItem?.previousElementSibling ?? items.last :
       null);
  final direction = type == 'next' ? 'left' : 'right';
  /*
      , isCycling = this.interval
  */
  _sliding = true;

  /*
  isCycling && this.pause()
  */

  final e = QueryEvent('slide.bs.carousel', data: {
    'relatedTarget': nextItem,
    'direction': direction
  });

  if (nextItem == null || nextItem.classes.contains('active'))
    return;

  final indicators = _indicators;
  if (indicators != null) {
    $(indicators).find('.active').removeClass('active');
    $element.one('slid.bs.carousel', (QueryEvent e) {
      final elems = indicators.children,
        index = activeIndex;
      if (index > -1 && index < elems.length)
        elems[index].classes.add('active');
    });
  }

  $element.triggerEvent(e);
  if (e.defaultPrevented || activeItem == null)
    return;

  if (Transition.isUsed && element.classes.contains('slide')) {
    nextItem.classes.add(type);
    $(nextItem).reflow(); // force reflow
    activeItem.classes.add(direction);
    nextItem.classes.add(direction);

    $element.one(Transition.end, (QueryEvent e) {
      nextItem.classes
        ..removeAll(['type', direction])
        ..add('active');
      activeItem.classes.removeAll(['type', direction]);
      _sliding = false;
      Timer.run(() {
        $element.trigger('slid.bs.carousel');
      });
    });

  } else {
    activeItem.classes.remove('active');
    nextItem.classes.add('active');
    _sliding = false;
    $element.trigger('slid.bs.carousel');

  }
  /*
  isCycling && this.cycle()
  */
}