import Vue from 'vue/dist/vue.esm' import store from './store' import cloneDeep from 'lodash.clonedeep'

import VueAssignModel from 'vue-assign-model' Vue.use(VueAssignModel)

const storeState = cloneDeep(store.state) var vms = [] var options = {} var requireContext = require.context(“./options”, false, /.js$/) requireContext.keys().forEach(key => {

let name = key.split('/').pop().split('.').shift()
options[name] = requireContext(key).default

})

document.addEventListener('turbolinks:load', () => {

let templates = document.querySelectorAll('[data-vue]')
for (let el of templates) {
  let vm = new Vue(
    Object.assign(options[el.dataset.vue], { el, store })
  )
  vms.push(vm)
}

})

document.addEventListener('turbolinks:visit', () => {

for (let vm of vms) {
  vm.$destroy()
}
vms = []
store.replaceState(cloneDeep(storeState))

})