Почему не работает отрисовка списка во Vuejs

На странице (vue2) есть горизонтальный список элементов. Он находится в некотором контейнере. Я хочу, чтобы при изменении этого списка, или при изменении размера контейнера, скрывались те элементы, которые не влезают, а справа показывалось их количество. Готовое использовать не могу.

Мой прототип: https://jsfiddle.net/z7nmb0ao/11/

Поведение почему-то чередуется, а результат ожидаю такой:

введите сюда описание изображения

А получаю такой:

введите сюда описание изображения

Помогите, пожалуйста, понять, в чём проблема. Или может есть другой подход или пример.

new Vue({
    components: {
    },
    data: {
    options: [
      { value: 1, label: '1111' },
      { value: 2, label: '2222' },
      { value: 3, label: '3333' },
      { value: 4, label: '4444' },
      { value: 5, label: '5555' },
    ],
    newItemValue: "",
    visibleCount: 0,
    tagRefs: []
    },
  mounted: function() {
    this.$nextTick(this.calculateVisible());
  },
  created: function() {
    window.addEventListener('resize', this.calculateVisible);
  },
  methods: {
    addItem() {
        this.options.push({ value: Math.floor(Math.random() * 100000), label: this.newItemValue });
      
      this.$nextTick(this.calculateVisible());
    },
    deleteItem(index) {
      this.options.splice(index, 1);
      
      this.$nextTick(this.calculateVisible());
    },
    calculateVisible() {
      const wrapper = this.$refs.wrapper as HTMLElement;
      
      if (!wrapper) return;

      let totalWidth = 0;
      let count = 0;

      const wrapperWidth = wrapper.clientWidth - 50;

      for (let i = 0; i < this.options.length; i++) {
        const el = this.tagRefs[i];
        if (!el) break;

        const elWidth = el.offsetWidth;
        if (totalWidth + elWidth <= wrapperWidth) {
          totalWidth += elWidth;
          count++;
        } else {
          break;
        }
      }

      this.visibleCount = count;
    }
  },
  computed: {
    hiddenCount: function () {
      return this.options.length - this.visibleCount;
    }
  }
}).$mount('#app')
<div id="app">
  <div class="new-item-input">
    <input type="text" v-model="newItemValue" />
    <input type="button" value="+" @click="addItem" />
  </div>

  <div class="wrapper" ref="wrapper">
    <span
      v-for="(item, index) in options"
      :key="item.value"
      :ref="el => tagRefs[index] = el"
      class="tag"
      @click="deleteItem(index)"
      v-show="index < visibleCount"
    >
      {{ item.label }}
    </span>
    
    <span v-if="hiddenCount > 0" class="tag more">
      +{{ hiddenCount }}
    </span>
    
  </div>
</div>


Ответы (0 шт):