import React from 'react'; import { Editor } from '@tinymce/tinymce-react'; // 1. Define as propriedades que nosso componente vai receber interface MainEditorProps { initialValue: string; onEditorChange: (content: string) => void; margins: { top: string; bottom: string; left: string; right: string; }; size: { width: number; height: number; }; } const MainEditor: React.FC = ({ initialValue, onEditorChange, margins, size }) => { return (
{ const customTemplates = [ { title: 'Qualificação das Partes (Casamento)', description: 'Insere o bloco de qualificação para contraentes.', content: `

QUALIFICAÇÃO DOS CONTRAENTES: Ele, brasileiro, solteiro, maior, [Profissão], portador da CI nº [RG], inscrito no CPF sob o nº [CPF], residente e domiciliado em [Endereço]. Ela, brasileira, solteira, maior, [Profissão], portadora da CI nº [RG], inscrita no CPF sob o nº [CPF], residente e domiciliada em [Endereço].


`, }, { title: 'Cláusula de Regime de Bens', description: 'Cláusula padrão de Comunhão Parcial de Bens.', content: '

O regime de bens adotado é o da Comunhão Parcial de Bens, nos termos dos artigos 1.658 e seguintes do Código Civil brasileiro.


', }, { title: 'Cláusula de Encerramento (Selo)', description: 'Texto final com espaço para o selo digital.', content: '

O referido é verdade e dou fé. Emitida nesta data. Selo Digital de Fiscalização: [Número do Selo]

', }, ]; editor.ui.registry.addMenuButton('customTemplates', { text: 'Modelos', // O texto que aparecerá no botão fetch: (callback: any) => { const items = customTemplates.map((template) => ({ type: 'menuitem', text: template.title, onAction: () => { // 3. Ação que acontece ao clicar no item do menu: insere o conteúdo editor.insertContent(template.content); }, })); callback(items); }, }); }, quickbars_selection_toolbar: 'bold italic underline | fontfamily | fontsize | quicklink blockquote | quicklink', quickbars_insert_toolbar: 'bold italic underline fontfamily fontsize quicklink blockquote quicklink quickimage quicktable hr', quickbars_image_toolbar: 'alignleft aligncenter alignright | rotateleft rotateright | imageoptions', fontsize_formats: '4pt 5pt 6pt 7pt 8pt 9pt 10pt 12pt 14pt 16pt 18pt 20pt 22pt 24pt 26pt 28pt 30pt 32pt 34pt 36pt', font_family_formats: ` Times New Roman=Times New Roman, Times, serif; Arial=Arial, Helvetica, sans-serif; Calibri=Calibri, sans-serif; Courier New=Courier New, Courier, monospace; Georgia=Georgia, serif; Verdana=Verdana, Geneva, sans-serif;`, fullscreen_native: true, content_style: ` body { font-family: 'Times New Roman', Times, serif; font-size: 12pt; background: #fff; margin: ${margins.top}cm ${margins.right}cm ${margins.bottom}cm ${margins.left}cm; } .mce-pagebreak { /* Estiliza a linha da quebra de página no editor */ border-top: 1px dashed #bbb; width: 100%; margin-top: 15px; cursor: default; } .borda-superior { border-top: 1px solid #000; padding-top: 5px; margin-top: 5px; } .borda-inferior { border-bottom: 1px solid #000; padding-bottom: 5px; margin-bottom: 5px; } `, }} />
); }; export default MainEditor;