Guia TypeScript
Instalação de Tipos
O pacote @iarastt/adapters já inclui as definições de tipos TypeScript:
import { IaraSyncfusionAdapter } from '@iarastt/adapters';// Tipos são importados automaticamenteInterfaces Principais
IaraSyncfusionConfig
Interface de configuração do adapter.
interface IaraSyncfusionConfig { // Assistente de IA assistant?: { enabled: boolean; enableDiffHighlighting?: boolean; impression?: { itemizedOutput: boolean; }; user_rules?: { report?: string[]; impression?: string[]; }; draggable?: { containerId: string; defaultPosition: { x: number; y: number }; }; };
// Funcionalidades enableSpeechRecognition?: boolean; saveReport?: boolean; highlightInference?: boolean;
// Interface replaceToolbar?: boolean; showFinishReportButton?: boolean; showBookmarks?: boolean; mouseButton?: boolean;
// Comportamento navigateAdditiveMode?: 'use' | 'registry';
// Aparência darkMode?: boolean; language?: 'pt-BR' | 'es'; zoomFactor?: string;
// Fonte font?: { family: string; size: number; availableFamilies?: string[]; availableSizes?: number[]; };
// Ribbon ribbon?: { displayMode: 'Classic' | 'Simplified'; collections?: { logo?: boolean; file?: boolean; insert?: boolean; clipboard?: boolean; navigation?: boolean; font?: boolean; paragraph?: boolean; export?: boolean; }; };}IaraSyncfusionContentManager
Interface do gerenciador de conteúdo.
interface IaraSyncfusionContentManager { reader: { getHtmlContent(): Promise<string>; getPlainTextContent(): Promise<string>; getRtfContent(): Promise<string>; getSfdtContent(): Promise<IaraSFDT>; };}IaraSFDT
Formato de documento Syncfusion.
interface IaraSFDT { sections: Array<{ blocks: Array<{ paragraphFormat?: any; characterFormat?: any; inlines?: any[]; }>; }>; characterFormat?: any; paragraphFormat?: any; defaultTabWidth?: number; enforcement?: boolean; hashValue?: string; saltValue?: string; formatting?: boolean; protectionType?: string; dontUseHTMLParagraphAutoSpacing?: boolean; alignTablesRowByRow?: boolean; formFieldShading?: boolean; styles?: any[]; lists?: any[]; abstractLists?: any[]; background?: any; footnotes?: any; endnotes?: any;}Exemplo Completo TypeScript
import { IaraSyncfusionAdapter, type IaraSyncfusionConfig } from '@iarastt/adapters';import { DocumentEditorContainer, Toolbar } from '@syncfusion/ej2-documenteditor';
// Declarar tipo global do Iara Speech SDK (vem do HTML via CDN)declare const IaraSpeechRecognition: any;
// Configuração tipada COMPLETAconst config: IaraSyncfusionConfig = { assistant: { enabled: true, impression: { itemizedOutput: true }, user_rules: { report: ['Usar terminologia médica padrão'], impression: ['Ser conciso'] } }, enableSpeechRecognition: true, saveReport: true, language: 'pt-BR', darkMode: false, mouseButton: false, replaceToolbar: false, showBookmarks: false, showFinishReportButton: false, highlightInference: true, zoomFactor: '100%', font: { availableFamilies: ['Arial', 'Times New Roman', 'Calibri'], availableSizes: [10, 11, 12, 14, 16, 18], family: 'Arial', size: 12 }};
// Função de inicialização tipadaasync function initializeEditor( editorContainer: any, // DocumentEditorContainer do Syncfusion recognition: any // IaraSpeechRecognition não tem tipos públicos): Promise<IaraSyncfusionAdapter> { return new Promise((resolve, reject) => { recognition.init({ userId: process.env.IARA_USER_ID, apiToken: process.env.IARA_API_TOKEN, engine: 'Iara Desktop', lang: 'pt-BR', region: 'south-america', interimResults: true }) .done(() => { try { const adapter = new IaraSyncfusionAdapter( editorContainer.documentEditor, recognition, config ); resolve(adapter); } catch (error) { reject(error); } }) .fail((error: Error) => { reject(error); }); });}
DocumentEditorContainer.Inject(Toolbar);
const editorContainer = new DocumentEditorContainer({ enableToolbar: true, height: "600px"});editorContainer.appendTo('#editor-container');
const recognition = new IaraSpeechRecognition();
initializeEditor(editorContainer, recognition) .then(adapter => { console.log('✅ Adapter inicializado:', adapter);
// Callback tipado adapter.onIaraCommand = (command: string) => { console.log('Comando:', command); };
// ✅ CORRETO: Usar event listener para salvar addEventListener('IaraOnSaveReport', () => { console.log('💾 Salvando relatório'); // Aqui você implementa a lógica de salvamento }); }) .catch(error => { console.error('❌ Erro:', error); });Próximos Passos
- API Reference - Documentação completa da API
- Configuração Avançada - Todas as opções de configuração
- Exemplos - Mais exemplos práticos