/** @format */
import { createApp } from "vue";
import { QuillEditor } from "@vueup/vue-quill";
import "@vueup/vue-quill/dist/vue-quill.snow.css";
import Cookies from "js-cookie";
// import dialog from "./dialog";
import ElementPlus from "element-plus";
import VueHtmlToPaper from "vue-html-to-paper";
import locale from "element-plus/lib/locale/lang/zh-cn"; // 中文语言
import moment from "moment"; //导入文件
// Vite.prototype.$moment = moment; //赋值使用
import print from "vue3-print-nb";
import "@/assets/styles/index.scss"; // global css
import "babel-polyfill";
import "event-source-polyfill";
import App from "./App";
import store from "./store";
import router from "./router";
import directive from "./directive"; // directive

// 注册指令
import plugins from "./plugins"; // plugins
import { download } from "@/utils/request";

//el-dialog
import elDragDialog from "./dialog";
// Vue.directive("el-drag-dialog", elDragDialog); //添加标签事件绑定 可以放大移动弹窗
//弹窗默认点击遮罩改为不关闭 为了防止和拖拽冲突 ，这句需要放在use ElementUI之前（也可以不加这句，自己测试区别）
// ElementUI.Dialog.props.closeOnClickModal.default = false;

// svg图标
import "virtual:svg-icons-register";
import SvgIcon from "@/components/SvgIcon";
import elementIcons from "@/components/SvgIcon/svgicon";

import "./permission"; // permission control

import { useDict } from "@/utils/dict";
// import { getConfigKey } from "@/api/system/config";
// Vue.prototype.getConfigKey = getConfigKey;
import {
  parseTime,
  resetForm,
  addDateRange,
  handleTree,
  selectDictLabel,
  selectDictLabels,
} from "@/utils/ruoyi";
// import Base64 from "@/base64.min.js";
// 分页组件
import Pagination from "@/components/Pagination";
// 自定义表格工具组件
import RightToolbar from "@/components/RightToolbar";
// 富文本组件
import Editor from "@/components/Editor";
// 文件上传组件
import FileUpload from "@/components/FileUpload";
// 图片上传组件
import ImageUpload from "@/components/ImageUpload";
// 图片预览组件
import ImagePreview from "@/components/ImagePreview";
// 自定义树选择组件
import TreeSelect from "@/components/TreeSelect";
// 字典标签组件
import DictTag from "@/components/DictTag";

import "dayjs/locale/zh-cn";
// pdf组件

// main.js

const app = createApp(App);
app.component("QuillEditor", QuillEditor);
// 全局方法挂载
app.config.globalProperties.useDict = useDict;
app.config.globalProperties.download = download;
app.config.globalProperties.parseTime = parseTime;
app.config.globalProperties.resetForm = resetForm;
app.config.globalProperties.handleTree = handleTree;
app.config.globalProperties.addDateRange = addDateRange;
app.config.globalProperties.selectDictLabel = selectDictLabel;
app.config.globalProperties.selectDictLabels = selectDictLabels;
// app.config.globalProperties.getConfigKey = getConfigKey;

// 全局组件挂载
// app.component("PdfViewer", PdfViewer);
app.component("DictTag", DictTag);
// app.component("Base64", Base64);
app.component("Pagination", Pagination);
app.component("TreeSelect", TreeSelect);
app.component("FileUpload", FileUpload);
app.component("ImageUpload", ImageUpload);
app.component("ImagePreview", ImagePreview);
app.component("RightToolbar", RightToolbar);
app.component("Editor", Editor);

////////////////////////////
import { defineAsyncComponent } from "vue";

const options = {
  name: "_blank",
  specs: ["fullscreen=yes", "titlebar=yes", "scrollbars=yes"],
  styles: [
    "https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css",
    "https://unpkg.com/kidlat-css/css/kidlat.css",
  ],
};

app.use(VueHtmlToPaper, options);
//////////////////////////

app.use(router);
app.use(store);
app.use(plugins);
app.use(elementIcons);
app.component("svg-icon", SvgIcon);
app.use(print);
directive(app);

// 使用element-plus 并且设置全局的大小
app.use(ElementPlus, {
  locale: locale,
  // 支持 large、default、small
  size: Cookies.get("size") || "default",
});

app.mount("#app");
