window._ = require('lodash');

// Axios
window.axios = require('axios');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

// Token
let token = document.head.querySelector('meta[name="csrf-token"]');
if (token) {
    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
} else {
    console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');
}

// Vuetify
import Vuetify, {
    VApp,
    VTextField, 
    VBtn,
    VBreadcrumbs,
    VSwitch,
    VRadioGroup,
    VRadio
} from 'vuetify/lib';
// import 'material-design-icons-iconfont/dist/material-design-icons.css';
import 'vuetify/src/stylus/app.styl';

Vue.use(Vuetify, {
    components: {
        VApp,
        VTextField,
        VBtn,
        VBreadcrumbs,
        VSwitch,
        VRadioGroup,
        VRadio
    },
    options: {
        customProperties: true
    },
    iconfont: 'md' || 'mdi',
});

// Vue Meta
import VueMeta from 'vue-meta'
Vue.use(VueMeta)

// Boostrap
import BootstrapVue from 'bootstrap-vue'
Vue.use(BootstrapVue);

// Form Wiziard
import VueFormWizard from 'vue-form-wizard'
import 'vue-form-wizard/dist/vue-form-wizard.min.css'
Vue.use(VueFormWizard);

// Tags Input
import VueTagsInput from '@johmun/vue-tags-input';
Vue.component('vue-tags-input', VueTagsInput);

// Toasted
import Toasted from 'vue-toasted';
let Options = {
     // iconPack : 'fontawesome'
}
Vue.use(Toasted, Options);

// Sprintf
window.Sprintf = require('sprintf-js').sprintf;

// Youtube
import VueYouTubeEmbed from 'vue-youtube-embed';
Vue.use(VueYouTubeEmbed);

// VueElementLoading
import VueElementLoading from 'vue-element-loading';
Vue.component('vue-element-loading', VueElementLoading);

//Utilities
import Form from './utilities/form';
window.Form = Form;

import Constants from './utilities/constants';
window.Constants = Constants;

window.General = require('./utilities/general');

window.NavigationAccess = require('./utilities/navigationAccess');

import En from './langs/en';
window.En = En;

import ENV from './utilities/env';
window.ENV = ENV;

/**
 * Echo exposes an expressive API for subscribing to channels and listening
 * for events that are broadcast by Laravel. Echo and event broadcasting
 * allows your team to easily build robust real-time web applications.
 */

// import Echo from 'laravel-echo';

// window.Pusher = require('pusher-js');

// window.Echo = new Echo({
//     broadcaster: 'pusher',
//     key: process.env.MIX_PUSHER_APP_KEY,
//     cluster: process.env.MIX_PUSHER_APP_CLUSTER,
//     forceTLS: true
// });

