@prisma-cms/front-editor
Version:
103 lines (102 loc) • 3.23 kB
TypeScript
/// <reference types="react" />
import { EditableObjectProps, EditableObjectState } from 'apollo-cms';
import EditorComponent from '.';
import { FrontEditorProps } from '..';
export interface ElementWithReactComponent extends Element {
reactComponent?: EditorComponent;
/**
* Используется при вставке новых компонентов в текущий HTML
*/
editorComponentObject?: EditorComponentObject;
}
export interface EditorComponentObject<P extends Record<string, any> & {
text?: string;
} = Record<string, any>> {
__typename?: string | undefined;
id?: string;
name: string;
description?: string | null;
component: string | EditorComponent;
components: Array<EditorComponentObject<P>>;
props: P & {
text?: string | undefined | null;
tag?: keyof JSX.IntrinsicElements | undefined;
query?: string | undefined;
first?: number | undefined;
style?: React.CSSProperties;
} & Record<string, any>;
createdAt?: string;
updatedAt?: string;
CreatedBy?: any;
}
export interface EditorComponentProps extends EditableObjectProps {
mode: 'main' | 'panel' | 'settings' | 'add_child';
object: EditorComponentObject;
_dirty?: Partial<EditorComponentProps['object']>;
props?: EditorComponentProps['object']['props'];
/**
* Родительский инстанс компонента.
* Нужен для того, чтобы получить доступ к родительским элементам
*/
parent?: EditorComponent | null;
deletable?: boolean;
delete_component?: Function;
/**
* Used for delete()
*/
index?: number;
/**
* Не рендерить враппер в основном режиме
*/
hide_wrapper_in_default_mode?: boolean;
/**
* Рендерить ли бейджик
*/
render_badge?: boolean;
/**
* Может ли быть редактируемым во фронт-редакторе
*/
can_be_edited?: boolean;
/**
* @deprecated
* Устанавливает заголовок для страницы
*/
page_title?: string;
/**
* @deprecated
*/
page_status?: number;
maxStructureLengthView?: number;
className?: string;
createTemplate?: FrontEditorProps['createTemplate'];
updateTemplate?: FrontEditorProps['updateTemplate'];
deleteTemplate?: FrontEditorProps['deleteTemplate'];
/**
* @deprecated
*/
component?: string;
/**
* @deprecated
*/
style?: any;
/**
* Handler on change component data
*/
onChangeState?: EditorComponent['prepareDirty'];
/**
* Show button in add children panel
*/
render_add_button?: boolean;
updateObject?: EditorComponent['updateObject'];
contentEditable?: boolean | undefined;
}
export interface EditorComponentState extends EditableObjectState {
active: boolean;
hovered: boolean;
maxStructureLengthView: EditorComponentProps['maxStructureLengthView'];
/**
* For HTMLTag
*/
focused?: boolean;
components?: EditorComponentObject['components'];
}