Skip to content

Editor Module Component (components/Editor/editorModule.tsx)

Overview

A React component that wraps the Lexical editor with additional functionality for managing editor state, view modes, and evidence handling. The component serves as a bridge between the application and the core editor implementation.

Features

  • State management
  • View mode control
  • Evidence integration
  • UUID handling
  • Read-only states
  • Export capabilities
  • Collaboration support
  • State persistence
  • Event handling
  • Responsive layout

Implementation

type EditorProps = {
  stateID: string;
  state: string;
  shouldExport: boolean;
  isFullView: boolean;
  citedEvidence: citedEvidence | null;
  evidence_scale: string | null;
  isInitialState: boolean;
  editedState: boolean;
  clicked: boolean;
  n_requests: number;
  onStateChange: (newState: boolean) => void;
  onClicked: (value: boolean) => void;
};

export function Editor({
  stateID,
  state,
  shouldExport,
  isFullView,
  citedEvidence,
  evidence_scale,
  editedState,
  clicked,
  n_requests,
  isInitialState,
  onStateChange,
  onClicked
}: EditorProps) {
  const uuids = citedEvidence && citedEvidence.length > 0
    ? citedEvidence.flatMap(evidence => evidence.citations.map(citation => citation.uuid))
    : [];

  const readOnly = isFullView ? false : true;

  return (
    <div
      id="editor-wrapper"
      className="relative prose mx-auto w-5/6 max-w-full prose-slate prose-p:my-0 prose-headings:mb-4 prose-headings:mt-2"
    >
      <LexicalEditor
        stateID={stateID}
        state={state}
        shouldExport={shouldExport}
        isFullView={isFullView}
        citedEvidence={citedEvidence}
        evidence_scale={evidence_scale}
        uuids={uuids}
        readOnly={readOnly}
        isInitialState={isInitialState}
        n_requests={n_requests}
        editedState={editedState}
        onStateChange={onStateChange}
        clicked={clicked}
        onClicked={onClicked}
        collaboratorID={collaboratorID}
      />
    </div>
  );
}

Dependencies

import { LexicalEditor } from "./lexicalEditor"
import { ExportInformation } from "./plugins/exportEditorStatePlugin"
import { citedEvidence } from "./citedEvidence"
import { EditorProps } from './types'

Components Used

Notes

  • Manages editor state
  • Controls view modes
  • Handles evidence data
  • Processes UUIDs
  • Manages read-only states
  • Supports collaboration
  • Maintains responsiveness
  • Handles state changes
  • Manages click events
  • Integrates with plugins

Props Description

  • stateID: Unique identifier for editor state
  • state: Current editor content state
  • shouldExport: Flag for export functionality
  • isFullView: Controls edit/read-only mode
  • citedEvidence: Array of evidence citations
  • evidence_scale: Scale for evidence evaluation
  • isInitialState: Flag for initial render state
  • editedState: Tracks content modifications
  • clicked: Tracks user interactions
  • n_requests: Number of pending requests
  • onStateChange: State change callback
  • onClicked: Click event callback

Components Using This

Integration Points

  • Lexical Editor configuration
  • Evidence citation system
  • Export functionality
  • State management
  • View mode controls
  • Collaborative features

Notes

  • Handles evidence UUID extraction
  • Manages read-only state
  • Supports collaborative editing
  • Implements responsive design
  • Uses prose styling for content
  • Maintains state consistency