/**
 * common function
 */
// const _q = function (selector){
//     return document.querySelector(selector);
// }


/**
 * First we will load all of this project's JavaScript dependencies which
 * includes Vue and other libraries. It is a great starting point when
 * building robust, powerful web applications using Vue and Laravel.
 */

import './bootstrap';

import { createApp } from 'vue';
import ToastPlugin from 'vue-toast-notification';
import {useToast} from 'vue-toast-notification';
import store from "./components/libs/store.js";
import chartjs from 'chart.js/auto';
// import './panel/raw.js';
import './panel/navbar.js';
import './panel/list-checkboxs.js';
import './panel/general-events.js';
import './panel/editor-handle.js';
import './panel/step-controller.js';
import './panel/product-upload-controller.js';
import './panel/setting-section-controller.js';
import './panel/sotable-controller.js';
import './panel/prototypes.js';
import './panel/panel-window-loader.js';
import './panel/responsive-control.js';
import './panel/fast-edit.js';
import './panel/fast-attachment.js';
// import './panel/seo-analyzer.js';

// chartjs.defaults.defaultFontFamily = "Vazir";
// chartjs.defaults.defaultFontSize = 18;

// chartjs.defaults.backgroundColor = '#0097ff';
chartjs.defaults.borderColor = 'rgba(255,255,255,0.05)';
chartjs.defaults.color = '#fff';
chartjs.defaults.font.family = 'Vazir';
// chartjs.defaults.font.size = '14';
// chartjs.defaults.font.weight = '100';


window.chartjs = chartjs;
window.isPaintedChart = false;

/**
 * Next, we will create a fresh Vue application instance. You may then begin
 * registering components with the application instance so they are ready
 * to use in your application's views. An example is included for you.
 */

const app = createApp({});
const $toast = useToast({
    duration: 10000,
});

import ExampleComponent from './components/ExampleComponent.vue';
app.component('example-component', ExampleComponent);

import VueJalaliCalendar from './components/vueJalaliCalendar.vue';
app.component('vue-jalali-calendar', VueJalaliCalendar);

import CurrencyInput from './components/CurrencyInput.vue';
app.component('currency-input',CurrencyInput);

import RemixIconPicker from './components/RemixIconPicker.vue';
app.component('remix-icon-picker', RemixIconPicker);

import FontAwesomeIconPicker from "./components/FontAwesomeIconPicker.vue";
app.component('awesome-icon-picker', FontAwesomeIconPicker);

import vueDateTimePicker from "./components/vueDateTimePicker.vue";
app.component('vue-datetime-picker-input', vueDateTimePicker);

import vueDateRangePicker from "./components/vueDateRangePicker.vue";
app.component('vue-date-range-picker-input', vueDateRangePicker);

import SearchableSelect from "./components/SearchableSelect.vue";
app.component('searchable-select', SearchableSelect);

import SearchableMultiSelect from "./components/SearchableMultiSelect.vue";
app.component('searchable-multi-select', SearchableMultiSelect);

import Increment from "./components/Increment.vue";
app.component('increment', Increment);

import TagInput from "./components/TagInput.vue";
app.component('tag-input', TagInput);

import SliderData from "./components/SliderData.vue";
app.component('slider-data', SliderData);

import AddressInput from "./components/AddressInput.vue";
app.component('address-input', AddressInput);

import PropTypeInput from "./components/PropTypeInput.vue";
app.component('props-type-input', PropTypeInput);

import MetaInput from "./components/MetaInput.vue";
app.component('meta-input', MetaInput);

import MorphSelector from "./components/MorphSelector.vue";
app.component('morph-selector', MorphSelector);

import Gfxer from "./components/Gfxer.vue";
app.component('gfxer', Gfxer);

import AreaDesginer from "./components/AreaDesginer.vue";
app.component('area-designer', AreaDesginer);

import Latlng from "./components/latlng.vue";
app.component('lat-lng', Latlng);

import MenuItemInput from "./components/MenuItemInput.vue";
app.component('menu-item-input', MenuItemInput);


import VueTimepicker from "./components/vueTimePicker.vue";
app.component('vue-time-picker', VueTimepicker);


import fastAttaching from "./components/FastAttaching.vue";
app.component('fast-attaching', fastAttaching);

/**
 * The following block of code may be used to automatically register your
 * Vue components. It will recursively scan this directory for the Vue
 * components and automatically register them with their "basename".
 *
 * Eg. ./components/ExampleComponent.vue -> <example-component></example-component>
 */

// Object.entries(import.meta.glob('./**/*.vue', { eager: true })).forEach(([path, definition]) => {
//     app.component(path.split('/').pop().replace(/\.\w+$/, ''), definition.default);
// });

/**
 * Finally, we will attach the application instance to a HTML element with
 * an "id" attribute of "app". This element is included with the "auth"
 * scaffolding. Otherwise, you will need to add an element yourself.
 */
app.use(ToastPlugin);
app.use(store);
app.mount('#app');

window.app = app;
window.$toast = $toast;
window.store = store;
