import { createApp, provide } from 'vue';
// global css
import 'virtual:uno.css';
import '@/assets/styles/index.scss';
import 'element-plus/theme-chalk/dark/css-vars.css';

// App、router、store
import App from './App.vue';
import store from './store';
import router from './router';

// 自定义指令
import directive from './directive';
import {
  detectingNullValues,
  limitSolve,
  parseData,
  clearObjNull,
  clearArrNull,
  clearNull,
  parseTime,
  getFinalData,
  testColor
} from '@/utils/scrin';
import request from '@/utils/request';

// 注册插件
import plugins from './plugins/index'; // plugins

// 高亮组件
// import 'highlight.js/styles/a11y-light.css';
import 'highlight.js/styles/atom-one-dark.css';
import 'highlight.js/lib/common';
import HighLight from '@highlightjs/vue-plugin';

// svg图标
import 'virtual:svg-icons-register';
import ElementIcons from '@/plugins/svgicon';


import ElementPlus from 'element-plus';
import 'element-plus/dist/index.css';
import VForm3 from 'vform3-builds';
import 'vform3-builds/dist/designer.style.css';

// permission control
import './permission';

// 国际化
import i18n from '@/lang/index';

// vxeTable
import VXETable from 'vxe-table';
import 'vxe-table/lib/style.css';


VXETable.config({
  zIndex: 999999
});

// 修改 el-dialog 默认点击遮照为不关闭
import { ElDialog } from 'element-plus';

ElDialog.props.closeOnClickModal.default = false;

import vue3SeamlessScroll from 'vue3-seamless-scroll';

const app = createApp(App);


app.provide('$limitSolve', limitSolve);
app.provide('$clearObjNull', clearObjNull);
app.provide('$clearArrNull', clearArrNull);
app.provide('$clearNull', clearNull);
app.provide('$parseData', parseData);
app.provide('$parseTime', parseTime);
app.provide('$request', request);
app.provide('$detectingNullValues', detectingNullValues);
app.provide('$getFinalData', getFinalData);
app.provide('$testColor', testColor);

app.use(vue3SeamlessScroll);
app.use(HighLight);
app.use(ElementIcons);
app.use(ElementPlus);
app.use(VForm3);
app.use(router);
app.use(store);
app.use(i18n);
app.use(VXETable);
app.use(plugins);
// 自定义指令
directive(app);

app.mount('#app');
