import React, { KeyboardEvent } from 'react'; import { Field, FieldConfig, FieldError, IField } from '../common'; /** * diffCode编辑器配置项 * - codeType: 语言类型 * - height: 代码编辑器高度 * - theme: 编辑器主题风格 * - fullScreen: 是否支持全屏 * - originalCodeField: 代码原始值入参字段 * - modifiedCodeField: 代码修改值入参字段 */ export interface DiffCodeFieldConfig extends FieldConfig { type: 'diffcode'; codeType: 'xml' | 'json' | 'javascript' | 'java'; height: number; theme: 'white' | 'black'; fullScreen: boolean; originalCodeField: string; modifiedCodeField: string; } export interface IDiffCodeField { codeType: 'xml' | 'json' | 'javascript' | 'java'; fullScreenStatus: boolean; height: number; theme: 'white' | 'black'; originalCode: string; modifiedCode: string; } /** * diffCode编辑器配置项 * - codeType: 语言类型 * - height: 代码编辑器高度 * - fullScreen: 是否支持全屏 * - fullScreenStatus: 编辑器是不是处于全屏状态 */ export interface IDiffCodeFieldContainer { fullScreen: boolean; fullScreenStatus: boolean; theme: 'white' | 'black'; children: React.ReactNode; keydownCallback: (value: KeyboardEvent) => Promise; enterFull: () => void; exitFull: () => void; } interface DiffCodeFieldValue { [field: string]: any; } interface State { fullScreenStatus: boolean; } export default class DiffCodeField extends Field implements IField { state: State; get: () => Promise; reset: () => Promise; validate: (value: DiffCodeFieldValue) => Promise; keydownCallback: (e: KeyboardEvent) => void; enterFull: () => void; exitFull: () => void; renderContainer: (props: IDiffCodeFieldContainer) => JSX.Element; renderComponent: (props: IDiffCodeField) => JSX.Element; render: () => JSX.Element; } export {};