Prevent duplicate service registrations

This commit is contained in:
Simon Rozman 2024-06-18 09:35:14 +02:00
parent b2fcaab30b
commit 843d2d5b1f

View File

@ -87,6 +87,17 @@ class BesService {
this.clearCorrectionPanel() 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 * Called initially when grammar-checking run is started
*/ */
@ -796,7 +807,9 @@ class BesDOMService extends BesTreeService {
* @returns {BesDOMService} Grammar checking service instance * @returns {BesDOMService} Grammar checking service instance
*/ */
static register(hostElement) { static register(hostElement) {
let service = new BesDOMService(hostElement) let service = BesService.getServiceByElement(hostElement)
if (service) return service
service = new BesDOMService(hostElement)
service.proofAll() service.proofAll()
return service return service
} }
@ -878,7 +891,9 @@ class BesCKService extends BesTreeService {
* @returns {BesCKService} Grammar checking service instance * @returns {BesCKService} Grammar checking service instance
*/ */
static register(hostElement, ckEditorInstance) { 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() service.proofAll()
return service return service
} }
@ -1289,7 +1304,7 @@ class BesPlainTextService extends BesService {
/** /**
* Simple string compare. * Simple string compare.
* *
* For performance reasons, this method compares only string beginnings and endings. Maximum one * For performance reasons, this method compares only string beginnings and endings. Maximum one
* difference is reported. * difference is reported.
* *
@ -1347,7 +1362,9 @@ class BesDOMPlainTextService extends BesPlainTextService {
* @returns {BesDOMPlainTextService} Grammar checking service instance * @returns {BesDOMPlainTextService} Grammar checking service instance
*/ */
static register(hostElement) { static register(hostElement) {
let service = new BesDOMPlainTextService(hostElement) let service = BesService.getServiceByElement(hostElement)
if (service) return service
service = new BesDOMPlainTextService(hostElement)
service.proofAll() service.proofAll()
return service return service
} }
@ -1483,7 +1500,9 @@ class BesTAService extends BesPlainTextService {
* @returns {BesTAService} Grammar checking service instance * @returns {BesTAService} Grammar checking service instance
*/ */
static register(hostElement) { static register(hostElement) {
let service = new BesTAService(hostElement) let service = BesService.getServiceByElement(hostElement)
if (service) return service
service = new BesTAService(hostElement)
service.proofAll() service.proofAll()
return service return service
} }