import React, { forwardRef, useImperativeHandle, useState } from 'react';
import NotesEditor from './NotesEditor';

import './NotesCellEditor.scss';

/**
 * Composant d'édition d'une note (texte riche) dans une cellule d'AG Grid.
 *
 * @component
 * @example
 * return (
 * <NotesCellEditor />
 * )
 */

//TODO composant à refactoriser via un AbstractCellEditor (à la manière de AbstractPopinEditor)
const NotesCellEditor = forwardRef((props, ref) => {
    const [notes, setNotes] = useState(props.value);

    /* Component Editor Lifecycle methods */
    useImperativeHandle(ref, () => {
        return {
            getValue() {
                return notes;
            },

            isCancelBeforeStart() {
                return false;
            },

            isCancelAfterEnd() {
                return false;
            }
        };
    });

    // On donne au NotesEditor l'api Ag Grid et le setter de la cellule pour pouvoir modifier la valeur et arrêter l'édition
    return <NotesEditor notes={props.value} setNotes={setNotes} AGGridApi={props.api} isOpen={true} />;
});

export default NotesCellEditor;
