/* * @Author: huirubai * @Date: 2025-08-22 13:11:51 * @Last Modified: huirubai * @Last Modified time: Do not edit */ import { defineCustomElement } from 'vue'; // 真正的按需引入 - 只导入需要的组件 export const loadCellButton = () => import('../components/cell.vue'); export const loadManualLink = () => import('../components/manual-link.vue'); export const loadCopyButton = () => import('../components/copy-button.vue'); // 组件注册器 const registerComponent = async (tagName: string, componentLoader: () => Promise): Promise => { if (window.customElements.get(tagName)) { return; } try { const component = await componentLoader(); customElements.define( tagName, defineCustomElement(component.default || component, { shadowRoot: false, styles: [], }), ); console.log(`✅ Component ${tagName} loaded and registered`); } catch (error) { console.error(`❌ Failed to load component ${tagName}:`, error); } }; // 按需注册函数 export const registerCellButton = () => registerComponent('cell-button', loadCellButton); export const registerManualLink = () => registerComponent('manual-link', loadManualLink); export const registerCopyButton = () => registerComponent('copy-button', loadCopyButton); // 批量注册函数 export const registerComponents = async (components: string[]) => { const loaders = { 'cell-button': loadCellButton, 'manual-link': loadManualLink, 'copy-button': loadCopyButton, }; const promises = components.map(component => { const loader = loaders[component as keyof typeof loaders]; if (loader) { return registerComponent(component, loader); } else { console.warn(`Unknown component: ${component}`); return Promise.resolve(); } }); await Promise.all(promises); }; // 默认导出 export default { registerCellButton, registerManualLink, registerCopyButton, registerComponents, };