code: function updateInkBarStyles (previousTotalWidth, previousWidthOfTabItems) {
      if (ctrl.noInkBar) {
        return;
      }
      var elements = getElements();
  
      if (!elements.tabs[ ctrl.selectedIndex ]) {
        angular.element(elements.inkBar).css({ left: 'auto', right: 'auto' });
        return;
      }
  
      if (!ctrl.tabs.length) {
        queue.push(ctrl.updateInkBarStyles);
        return;
      }
      // If the element is not visible, we will not be able to calculate sizes until it becomes
      // visible. We should treat that as a resize event rather than just updating the ink bar.
      if (!$element.prop('offsetParent')) {
        handleResizeWhenVisible();
        return;
      }
  
      var index      = ctrl.selectedIndex,
          totalWidth = elements.paging.offsetWidth,
          tab        = elements.tabs[ index ],
          left       = tab.offsetLeft,
          right      = totalWidth - left - tab.offsetWidth;
  
      if (ctrl.shouldCenterTabs) {
        // We need to use the same calculate process as in the pagination wrapper, to avoid rounding
        // deviations.
        var totalWidthOfTabItems = calcTabsWidth(elements.tabs);
  
        if (totalWidth > totalWidthOfTabItems &&
            previousTotalWidth !== totalWidth &&
            previousWidthOfTabItems !== totalWidthOfTabItems) {
          $timeout(updateInkBarStyles, 0, true, totalWidth, totalWidthOfTabItems);
        }
      }
      updateInkBarClassName();
      angular.element(elements.inkBar).css({ left: left + 'px', right: right + 'px' });
    }
docs: Repositions the ink bar to the selected tab.
  Parameters are used when calling itself recursively when md-center-tabs is used as we need to
  run two passes to properly center the tabs. These parameters ensure that we only run two passes
  and that we don't run indefinitely.
  @param {number=} previousTotalWidth previous width of pagination wrapper
  @param {number=} previousWidthOfTabItems previous width of all tab items