From 1a0d20ec481d4d072eda08968db6a734e427af6a Mon Sep 17 00:00:00 2001 From: Daniel Souza Date: Wed, 31 Jul 2024 12:06:03 -0300 Subject: [PATCH] PRT-2119 feat: allow setting the config in runtime --- src/editor/index.ts | 21 +++++++++++++-------- src/syncfusion/index.ts | 30 +++++++++++++++--------------- src/tinymce/index.ts | 4 ++-- 3 files changed, 30 insertions(+), 25 deletions(-) diff --git a/src/editor/index.ts b/src/editor/index.ts index 3fc52ec..d52473b 100644 --- a/src/editor/index.ts +++ b/src/editor/index.ts @@ -7,6 +7,7 @@ import { IaraEditorStyleManager } from "./style"; export interface IaraEditorConfig { darkMode: boolean; + enableSpeechRecognition: boolean; font?: { availableFamilies: string[]; availableSizes: number[]; @@ -26,7 +27,6 @@ export abstract class EditorAdapter { template: unknown, metadata: unknown ) => Promise; - public iaraRecognizes = true; public selectedField: { content: string; title: string; @@ -37,6 +37,7 @@ export abstract class EditorAdapter { protected abstract _navigationFieldManager: IaraEditorNavigationFieldManager; protected static DefaultConfig: IaraEditorConfig = { darkMode: false, + enableSpeechRecognition: true, saveReport: true, zoomFactor: "100%", language: "pt-BR", @@ -48,13 +49,14 @@ export abstract class EditorAdapter { { key: "iaraSpeechRecognitionResult", callback: (event?: CustomEvent) => { - if (event?.detail && this.iaraRecognizes) - this.insertInference(event.detail); + if (!event?.detail || !this.config.enableSpeechRecognition) return; + this.insertInference(event.detail); }, }, { key: "iaraSpeechRecognitionStart", callback: () => { + if (!this.config.enableSpeechRecognition) return; this.blockEditorWhileSpeaking(true); }, }, @@ -62,18 +64,21 @@ export abstract class EditorAdapter { { key: "iaraSpeechRecognitionStop", callback: () => { + if (!this.config.enableSpeechRecognition) return; this.blockEditorWhileSpeaking(false); }, }, { key: "iaraSpeechRecognitionVADVoiceStart", callback: () => { + if (!this.config.enableSpeechRecognition) return; this.blockEditorWhileSpeaking(true); }, }, { key: "iaraSpeechRecognitionVADVoiceStop", callback: () => { + if (!this.config.enableSpeechRecognition) return; this.blockEditorWhileSpeaking(false); }, }, @@ -81,9 +86,9 @@ export abstract class EditorAdapter { constructor( protected _recognition: IaraSpeechRecognition, - protected _config: IaraEditorConfig = EditorAdapter.DefaultConfig + public config: IaraEditorConfig = EditorAdapter.DefaultConfig ) { - switch (this._config.language) { + switch (this.config.language) { case "es": this._locale = Locales["es"]; break; @@ -106,12 +111,12 @@ export abstract class EditorAdapter { abstract print(): void; async beginReport(): Promise { - if (!this._config.saveReport) return; + if (!this.config.saveReport) return; return this._recognition.report.begin("", ""); } async finishReport(): Promise { - if (!this._config.saveReport) return; + if (!this.config.saveReport) return; const content = await this.copyReport(); this.clearReport(); await this._recognition.report.finish(content[0], content[1]); @@ -239,7 +244,7 @@ export abstract class EditorAdapter { } protected async _beginReport(): Promise { - if (this._config.saveReport && !this._recognition.report["_key"]) { + if (this.config.saveReport && !this._recognition.report["_key"]) { if (this._recognition.ready) { this._recognition.report["_key"] = await this.beginReport(); } else { diff --git a/src/syncfusion/index.ts b/src/syncfusion/index.ts index 94432b0..ecda105 100644 --- a/src/syncfusion/index.ts +++ b/src/syncfusion/index.ts @@ -69,9 +69,9 @@ export class IaraSyncfusionAdapter constructor( _editorInstance: DocumentEditorContainer | DocumentEditor, protected _recognition: IaraSpeechRecognition, - protected _config: IaraSyncfusionConfig = IaraSyncfusionAdapter.DefaultConfig + public config: IaraSyncfusionConfig = IaraSyncfusionAdapter.DefaultConfig ) { - super(_recognition, _config); + super(_recognition, config); IaraSyncfusionAdapter.IARA_API_URL = this._recognition.internal.initParams.region === "europe" @@ -83,26 +83,26 @@ export class IaraSyncfusionAdapter this._editorContainer = _editorInstance; this._documentEditor = _editorInstance.documentEditor; this._editorContainer.documentEditorSettings.showBookmarks = - this._config.showBookmarks; + this.config.showBookmarks; } else { this._documentEditor = _editorInstance; } - this._languageManager = new IaraSyncfusionLanguageManager(this._config); + this._languageManager = new IaraSyncfusionLanguageManager(this.config); this._contentManager = new IaraSyncfusionEditorContentManager( this._documentEditor, - () => (this._config.saveReport ? this._debouncedSaveReport() : undefined) + () => (this.config.saveReport ? this._debouncedSaveReport() : undefined) ); this._styleManager = new IaraSyncfusionStyleManager( this._documentEditor, - this._config + this.config ); this._navigationFieldManager = new IaraSyncfusionNavigationFieldManager( this._documentEditor, - this._config, + this.config, this._recognition, this._languageManager ); @@ -113,10 +113,10 @@ export class IaraSyncfusionAdapter this._recognition ); - if (this._config.replaceToolbar && this._editorContainer) { + if (this.config.replaceToolbar && this._editorContainer) { this._toolbarManager = new IaraSyncfusionToolbarManager( this._editorContainer, - this._config, + this.config, this._navigationFieldManager, this._languageManager ); @@ -334,7 +334,7 @@ export class IaraSyncfusionAdapter this._styleManager.setEditorDefaultFont({ fontFamily: this._documentEditor.selection.characterFormat.fontFamily, fontSize: this._documentEditor.selection.characterFormat.fontSize, - fontColor: this._config.darkMode ? "#fff" : "#000", + fontColor: this.config.darkMode ? "#fff" : "#000", }); this._navigationFieldManager.getBookmarks(); @@ -486,9 +486,9 @@ export class IaraSyncfusionAdapter } print(): void { - if (this._config.darkMode) this._styleManager.setEditorFontColor("#000"); + if (this.config.darkMode) this._styleManager.setEditorFontColor("#000"); this._documentEditor.print(); - if (this._config.darkMode) this._styleManager.setEditorFontColor("#fff"); + if (this.config.darkMode) this._styleManager.setEditorFontColor("#fff"); } replaceParagraph( @@ -516,7 +516,7 @@ export class IaraSyncfusionAdapter if (event.button === 1) { this._cursorSelection = new IaraSyncfusionSelectionManager( this._documentEditor, - this._config + this.config ); } }); @@ -558,12 +558,12 @@ export class IaraSyncfusionAdapter this._selectionManager = new IaraSyncfusionSelectionManager( this._documentEditor, - this._config, + this.config, inference.inferenceId ? `inferenceId_${inference.inferenceId}` : undefined, true, - this._config.highlightInference + this.config.highlightInference ); this._inferenceBookmarksManager.addBookmark( diff --git a/src/tinymce/index.ts b/src/tinymce/index.ts index c9cf72f..25cbddc 100644 --- a/src/tinymce/index.ts +++ b/src/tinymce/index.ts @@ -16,9 +16,9 @@ export class IaraTinyMCEAdapter extends EditorAdapter implements EditorAdapter { constructor( protected _editor: Editor, protected _recognition: IaraSpeechRecognition, - protected _config: IaraEditorConfig + public config: IaraEditorConfig ) { - super(_recognition, _config); + super(_recognition, config); this._inferenceFormatter = new IaraEditorInferenceFormatter(); this._styleManager = new IaraTinyMceStyleManager(); this._navigationFieldManager = new IaraTinyMceNavigationFieldManager(