From 843d2d5b1f173540a4fa2d7004cf731bb485deba Mon Sep 17 00:00:00 2001 From: Simon Rozman Date: Tue, 18 Jun 2024 09:35:14 +0200 Subject: [PATCH] Prevent duplicate service registrations --- service.js | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/service.js b/service.js index b150703..44faa6f 100644 --- a/service.js +++ b/service.js @@ -87,6 +87,17 @@ class BesService { this.clearCorrectionPanel() } + /** + * Returns grammar checking service registered for given DOM element + * + * @param {Element} hostElement Host element + * @returns Grammar checking service registered for given DOM element; unfedined if no service + * registered. + */ + static getServiceByElement(hostElement) { + return besServices.find(service => service.hostElement === hostElement) + } + /** * Called initially when grammar-checking run is started */ @@ -796,7 +807,9 @@ class BesDOMService extends BesTreeService { * @returns {BesDOMService} Grammar checking service instance */ static register(hostElement) { - let service = new BesDOMService(hostElement) + let service = BesService.getServiceByElement(hostElement) + if (service) return service + service = new BesDOMService(hostElement) service.proofAll() return service } @@ -878,7 +891,9 @@ class BesCKService extends BesTreeService { * @returns {BesCKService} Grammar checking service instance */ static register(hostElement, ckEditorInstance) { - let service = new BesCKService(hostElement, ckEditorInstance) + let service = BesService.getServiceByElement(hostElement) + if (service) return service + service = new BesCKService(hostElement, ckEditorInstance) service.proofAll() return service } @@ -1289,7 +1304,7 @@ class BesPlainTextService extends BesService { /** * Simple string compare. - * + * * For performance reasons, this method compares only string beginnings and endings. Maximum one * difference is reported. * @@ -1347,7 +1362,9 @@ class BesDOMPlainTextService extends BesPlainTextService { * @returns {BesDOMPlainTextService} Grammar checking service instance */ static register(hostElement) { - let service = new BesDOMPlainTextService(hostElement) + let service = BesService.getServiceByElement(hostElement) + if (service) return service + service = new BesDOMPlainTextService(hostElement) service.proofAll() return service } @@ -1483,7 +1500,9 @@ class BesTAService extends BesPlainTextService { * @returns {BesTAService} Grammar checking service instance */ static register(hostElement) { - let service = new BesTAService(hostElement) + let service = BesService.getServiceByElement(hostElement) + if (service) return service + service = new BesTAService(hostElement) service.proofAll() return service }