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()
}
/**
* 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
}