UNPKG

im-ui-mobile

Version:

A Vue3.0 + Typescript instant messaging component library for Uniapp

97 lines (82 loc) 2.61 kB
import { nextTick } from 'vue'; import { UViewPlusPlugin } from './plugins/uview-plus.js' import eventBus from "./utils/eventBus.js"; import datetime from "./utils/datetime.js"; import Emoji from "./utils/emoji.js"; import dom from "./utils/dom.js"; import messageType from "./utils/messageType.js"; import RecorderApp from "./utils/recorderApp.js"; import RecorderH5 from "./utils/recorderH5.js"; import Requester from "./utils/requester.js"; import url from "./utils/url.js"; import { useDynamicRefs } from "./utils/useDynamicRefs.js"; import WebSocket from "./utils/websocket.js"; import { MESSAGE_TYPE, RTC_STATE, TERMINAL_TYPE, MESSAGE_STATUS } from "./utils/enums.js"; import { configManager } from './utils/config.js' const importComponents = import.meta.glob('./components/im-*/im-*.vue', { eager: true }) const components = []; for (const key in importComponents) { const component = importComponents[key].default; // 1. 从文件路径中提取组件名(更可靠的方法) const fileName = key.split('/').pop(); // 获取文件名,如 im-button.vue const componentName = fileName .replace('.vue', '') // 去掉 .vue 后缀 .replace(/\b\w/g, l => l.toUpperCase()) // 首字母大写,如 ImButton // 2. 添加到组件列表 if (component) { // 如果组件本身没有 name,给它设置一个 if (!component.name) { component.name = componentName; } components.push(component); } } // 全局配置对象 let config = {} let emoji = null const install = (app, upuiParams = '') => { // 初始化自定义配置 if (upuiParams) { uni.upuiParams = upuiParams const params = upuiParams() if (params.options) { config = params.options configManager.setConfig(params.options) } } // 安装插件 app.use(UViewPlusPlugin) // 注册组件 components.forEach(component => { app.component(component.name || '', component) }) } // 使用自定义配置的对象实例化 nextTick(() => { emoji = new Emoji(); }) const getConfig = () => ({ ...config }); const webSocket = new WebSocket(); export { getConfig, emoji, eventBus, datetime, dom, messageType, RecorderApp, RecorderH5, Requester, url, useDynamicRefs, WebSocket, webSocket, // Enums MESSAGE_TYPE, RTC_STATE, TERMINAL_TYPE, MESSAGE_STATUS } export default { install }