diff options
Diffstat (limited to 'ext/js/pages/action-popup-main.js')
-rw-r--r-- | ext/js/pages/action-popup-main.js | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/ext/js/pages/action-popup-main.js b/ext/js/pages/action-popup-main.js index 86201e83..6d2c85ab 100644 --- a/ext/js/pages/action-popup-main.js +++ b/ext/js/pages/action-popup-main.js @@ -16,13 +16,18 @@ * along with this program. If not, see <https://www.gnu.org/licenses/>. */ +import {Application} from '../application.js'; import {getAllPermissions, hasRequiredPermissionsForOptions} from '../data/permissions-util.js'; import {querySelectorNotNull} from '../dom/query-selector.js'; import {HotkeyHelpController} from '../input/hotkey-help-controller.js'; -import {yomitan} from '../yomitan.js'; class DisplayController { - constructor() { + /** + * @param {import('../comm/api.js').API} api + */ + constructor(api) { + /** @type {import('../comm/api.js').API} */ + this._api = api; /** @type {?import('settings').Options} */ this._optionsFull = null; } @@ -36,7 +41,7 @@ class DisplayController { this._setupButtonEvents('.action-open-search', 'openSearchPage', chrome.runtime.getURL('/search.html'), this._onSearchClick.bind(this)); this._setupButtonEvents('.action-open-info', 'openInfoPage', chrome.runtime.getURL('/info.html')); - const optionsFull = await yomitan.api.optionsGetFull(); + const optionsFull = await this._api.optionsGetFull(); this._optionsFull = optionsFull; this._setupHotkeys(); @@ -108,7 +113,7 @@ class DisplayController { const result = customHandler(e); if (typeof result !== 'undefined') { return; } } - yomitan.api.commandExec(command, {mode: e.ctrlKey ? 'newTab' : 'existingOrNewTab'}); + this._api.commandExec(command, {mode: e.ctrlKey ? 'newTab' : 'existingOrNewTab'}); e.preventDefault(); }; /** @@ -116,7 +121,7 @@ class DisplayController { */ const onAuxClick = (e) => { if (e.button !== 1) { return; } - yomitan.api.commandExec(command, {mode: 'newTab'}); + this._api.commandExec(command, {mode: 'newTab'}); e.preventDefault(); }; node.addEventListener('click', onClick, false); @@ -180,7 +185,7 @@ class DisplayController { */ _setupOptions({options}) { const extensionEnabled = options.general.enable; - const onToggleChanged = () => yomitan.api.commandExec('toggleTextScanning'); + const onToggleChanged = () => this._api.commandExec('toggleTextScanning'); for (const toggle of /** @type {NodeListOf<HTMLInputElement>} */ (document.querySelectorAll('#enable-search,#enable-search2'))) { toggle.checked = extensionEnabled; toggle.addEventListener('change', onToggleChanged, false); @@ -192,7 +197,7 @@ class DisplayController { /** */ async _setupHotkeys() { const hotkeyHelpController = new HotkeyHelpController(); - await hotkeyHelpController.prepare(); + await hotkeyHelpController.prepare(this._api); const {profiles, profileCurrent} = /** @type {import('settings').Options} */ (this._optionsFull); const primaryProfile = (profileCurrent >= 0 && profileCurrent < profiles.length) ? profiles[profileCurrent] : null; @@ -250,7 +255,7 @@ class DisplayController { scope: 'global', optionsContext: null }; - await yomitan.api.modifySettings([modification], 'action-popup'); + await this._api.modifySettings([modification], 'action-popup'); } /** @@ -258,7 +263,7 @@ class DisplayController { */ async _updateDictionariesEnabledWarnings(options) { const noDictionariesEnabledWarnings = /** @type {NodeListOf<HTMLElement>} */ (document.querySelectorAll('.no-dictionaries-enabled-warning')); - const dictionaries = await yomitan.api.getDictionaryInfo(); + const dictionaries = await this._api.getDictionaryInfo(); const enabledDictionaries = new Set(); for (const {name, enabled} of options.dictionaries) { @@ -295,21 +300,22 @@ class DisplayController { /** @returns {Promise<boolean>} */ async _isSafari() { - const {browser} = await yomitan.api.getEnvironmentInfo(); + const {browser} = await this._api.getEnvironmentInfo(); return browser === 'safari'; } } /** Entry point. */ async function main() { - await yomitan.prepare(); + const application = new Application(); + await application.prepare(); - yomitan.api.logIndicatorClear(); + application.api.logIndicatorClear(); - const displayController = new DisplayController(); + const displayController = new DisplayController(application.api); displayController.prepare(); - yomitan.ready(); + application.ready(); } await main(); |