/** * Injects the content scripts into the active tab to enable Kintone helper functionality * @param {Object} tab - The active tab object from Chrome API * @returns {Promise} Resolves when all scripts are injected successfully */ const injectKintoneHelperScripts = async (tab) => { const scriptFiles = ['fields.js', 'dom.js', 'main.js']; try { // Inject all scripts in parallel for better performance await Promise.all( scriptFiles.map(file => chrome.scripting.executeScript({ target: { tabId: tab.id }, files: [file], world: 'MAIN', }) ) ); console.log('Kintone helper scripts injected successfully'); } catch (error) { console.error('Failed to inject Kintone helper scripts:', error); throw error; // Re-throw to allow caller to handle if needed } }; /** * Handles the extension action click event * @param {Object} tab - The active tab that triggered the action */ const handleActionClick = async (tab) => { try { await injectKintoneHelperScripts(tab); } catch (error) { // Error already logged in injectKintoneHelperScripts // Could add user notification here if needed } }; // Register the click handler for the browser action chrome.action.onClicked.addListener(handleActionClick);