import 'vue-virtual-scroller/dist/vue-virtual-scroller.css' import 'vue-resize/dist/vue-resize.css' import type { App } from 'vue' import VueVirtualScroller from 'vue-virtual-scroller' import { keys } from '@vue-devtools/shared-utils' import VueSafeTeleport from 'vue-safe-teleport' import VueResize from 'vue-resize' import VueUi, { generateHtmlIcon } from '../features/ui' import VI18n from './i18n' import Responsive from './responsive' import GlobalRefs from './global-refs' export function setupPlugins(app: App) { app.use(VueSafeTeleport) app.use(VueUi) app.use(VueResize) app.use(VueVirtualScroller) const currentLocale = 'en' const locales = require.context('../locales') const replacers = [ { reg: //g, replace: '' }, { reg: //g, replace: '' }, { reg: /<\/(input|mono)>/g, replace: '' }, { reg: /\[\[(\S+)\]\]/g, replace: '$1' }, { reg: /<<(\S+)>>/g, replace: (_, p1) => generateHtmlIcon(p1) as string }, ] app.use(VI18n, { strings: locales(`./${currentLocale}`).default, defaultValues: { keys, }, replacer: (text: string) => { for (const replacer of replacers) { // @ts-expect-error meow text = text.replace(replacer.reg, replacer.replace) } return text }, }) app.use(Responsive) app.use(GlobalRefs, { refs: { leftScroll: () => document.querySelector('.left .scroll'), leftRecycleList: () => document.querySelector('.left .vue-recycle-scroller'), rightScroll: () => document.querySelector('.right .scroll'), }, }) }