| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | 'use strict'/* global $, Vue, _, socket */if ($('#search-input').length) {  $('#search-input').focus()  $('.searchresults').css('display', 'block')  var vueHeader = new Vue({    el: '#header-container',    data: {      searchq: '',      searchres: [],      searchsuggest: [],      searchload: 0,      searchactive: false,      searchmoveidx: 0,      searchmovekey: '',      searchmovearr: []    },    watch: {      searchq: (val, oldVal) => {        vueHeader.searchmoveidx = 0        if (val.length >= 3) {          vueHeader.searchactive = true          vueHeader.searchload++          socket.emit('search', { terms: val }, (data) => {            vueHeader.searchres = data.match            vueHeader.searchsuggest = data.suggest            vueHeader.searchmovearr = _.concat([], vueHeader.searchres, vueHeader.searchsuggest)            if (vueHeader.searchload > 0) { vueHeader.searchload-- }          })        } else {          vueHeader.searchactive = false          vueHeader.searchres = []          vueHeader.searchsuggest = []          vueHeader.searchmovearr = []          vueHeader.searchload = 0        }      },      searchmoveidx: (val, oldVal) => {        if (val > 0) {          vueHeader.searchmovekey = (vueHeader.searchmovearr[val - 1])            ? 'res.' + vueHeader.searchmovearr[val - 1].entryPath            : 'sug.' + vueHeader.searchmovearr[val - 1]        } else {          vueHeader.searchmovekey = ''        }      }    },    methods: {      useSuggestion: (sug) => {        vueHeader.searchq = sug      },      closeSearch: () => {        vueHeader.searchq = ''      },      moveSelectSearch: () => {        if (vueHeader.searchmoveidx < 1) { return }        let i = vueHeader.searchmoveidx - 1        if (vueHeader.searchmovearr[i]) {          window.location.assign('/' + vueHeader.searchmovearr[i].entryPath)        } else {          vueHeader.searchq = vueHeader.searchmovearr[i]        }      },      moveDownSearch: () => {        if (vueHeader.searchmoveidx < vueHeader.searchmovearr.length) {          vueHeader.searchmoveidx++        }      },      moveUpSearch: () => {        if (vueHeader.searchmoveidx > 0) {          vueHeader.searchmoveidx--        }      }    }  })  $('main').on('click', vueHeader.closeSearch)}
 |