import { setupDrag } from './setupDrag'; import { CompanyTypeEnum } from '@lib/shared/enums/commonEnum'; interface ScriptOptions { identifier: string; // 脚本标识 } const scriptElementsMap = new Map(); function extractSQLBotId(input: string) { const regex = /sqlbot-[^\s"']+/; const match = input.match(regex); return match ? match[0] : null; } export function loadScript(scriptContent: string, options: ScriptOptions): Promise { if (!scriptContent) { return Promise.reject(new Error('scriptContent is empty')); } return new Promise((resolve, reject) => { const content = scriptContent?.trim(); if (scriptElementsMap.has(options.identifier)) return; // 处理IIFE格式 if (content.startsWith('(function')) { const scriptId = extractSQLBotId(content); if (scriptId) { scriptElementsMap.set(options.identifier, scriptId); } // eslint-disable-next-line no-eval eval(content); setTimeout(() => { const button = document.querySelector('.sqlbot-assistant-chat-button'); setupDrag(button as HTMLElement); }, 300); // 等待DOM渲染 resolve(); return; } // 处理