@atlaskit/renderer
Version:
Renderer component
140 lines (139 loc) • 7.4 kB
TypeScript
import type React from 'react';
import Loadable from 'react-loadable';
import type { Fragment, Node, Mark } from '@atlaskit/editor-prosemirror/model';
import { type EventHandlers } from '@atlaskit/editor-common/ui';
import Blockquote from './blockquote';
import BodiedExtension from './bodiedExtension';
import MultiBodiedExtension from './multiBodiedExtension';
import ExtensionFrame from './extensionFrame';
import BulletList from './bulletList';
import Doc, { DocWithSelectAllTrap } from './doc';
import Extension from './extension';
import HardBreak from './hardBreak';
import Heading from './heading';
import InlineExtension from './inlineExtension';
import LayoutSection from './layoutSection';
import LayoutColumn from './layoutColumn';
import ListItem from './listItem';
import Caption from './caption';
import OrderedList from './orderedList';
import Paragraph from './paragraph';
import Placeholder from './placeholder';
import Rule from './rule';
import Table from './table';
import { TableCell } from './tableCell';
import TableRow from './tableRow';
import UnknownBlock from './unknownBlock';
import type { NodeComponentsProps, RendererAppearance } from '../../ui/Renderer/types';
import type { RichMediaLayout, DatasourceAttributeProperties } from '@atlaskit/adf-schema';
import type { MediaInlineAttrs } from '@atlaskit/editor-common/media-inline';
import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory';
import type { Diff } from '@atlaskit/editor-common/utils';
import type { MediaFeatureFlags } from '@atlaskit/media-common';
import type { WithIntlProps, WrappedComponentProps } from 'react-intl';
import type { MediaSSR } from '../../types/mediaOptions';
import type { SmartLinksOptions } from '../../types/smartLinksOptions';
import type { ExpandProps } from '../../ui/Expand';
import type { WithSmartCardStorageProps } from '../../ui/SmartCardStorage';
import type { NodeProps } from '../types';
import type { Props as CodeBlockNodeProps } from './codeBlock/codeBlock';
import type { Props as DateNodeProps } from './date';
import type { Props as DecisionListNodeProps } from './decisionList';
import type { EmojiProps } from './emoji';
import type { InlineCardProps } from './inlineCard';
import type { MediaProps } from './media';
import type { MediaGroupProps } from './mediaGroup';
import type { Props as MediaSingleNodeProps } from './mediaSingle';
import type { Props as MentionNodeProps } from './mention';
import type { Props as PanelNodeProps } from './panel';
import type { Props as StatusNodeProps } from './status';
import type { Props as TaskItemNodeProps } from './taskItem';
import type { Props as TaskListNodeProps } from './taskList';
declare const WindowedCodeBlock: React.ComponentType<CodeBlockNodeProps> & Loadable.LoadableComponent;
declare const CodeBlock: React.ComponentType<WithIntlProps<CodeBlockNodeProps & WrappedComponentProps>> & Loadable.LoadableComponent;
declare const TaskList: React.ComponentType<TaskListNodeProps> & Loadable.LoadableComponent;
declare const TaskItem: React.ComponentType<NodeProps<TaskItemNodeProps>> & Loadable.LoadableComponent;
declare const DecisionList: React.ComponentType<DecisionListNodeProps> & Loadable.LoadableComponent;
declare const DecisionItem: React.ComponentType<NodeProps> & Loadable.LoadableComponent;
declare const Date: React.ComponentType<DateNodeProps> & Loadable.LoadableComponent;
declare const Status: React.ComponentType<StatusNodeProps> & Loadable.LoadableComponent;
declare const Emoji: React.ComponentType<EmojiProps> & Loadable.LoadableComponent;
declare const Panel: React.ComponentType<PanelNodeProps> & Loadable.LoadableComponent;
declare const EmbedCard: React.ComponentType<{
data?: object;
eventHandlers?: EventHandlers;
isInsideOfBlockNode?: boolean;
isInsideOfInlineExtension?: boolean;
layout: RichMediaLayout;
onSetLinkTarget?: (url: string) => '_blank' | undefined;
originalHeight?: number;
originalWidth?: number;
portal?: HTMLElement;
rendererAppearance?: RendererAppearance;
smartLinks?: SmartLinksOptions;
url?: string;
width?: number;
}> & Loadable.LoadableComponent;
declare const InlineCard: React.ComponentType<Diff<InlineCardProps & WithSmartCardStorageProps, WithSmartCardStorageProps>> & Loadable.LoadableComponent;
declare const BlockCard: React.ComponentType<{
data?: object;
datasource?: DatasourceAttributeProperties;
eventHandlers?: EventHandlers;
isNodeNested?: boolean;
layout?: string;
localId?: string;
onSetLinkTarget?: (url: string) => '_blank' | undefined;
portal?: HTMLElement;
rendererAppearance?: RendererAppearance;
smartLinks?: SmartLinksOptions;
url?: string;
}> & Loadable.LoadableComponent;
declare const Media: React.ComponentType<React.PropsWithChildren<MediaProps>> & Loadable.LoadableComponent;
declare const MediaGroup: React.ComponentType<MediaGroupProps> & Loadable.LoadableComponent;
declare const MediaInline: React.ComponentType<WithIntlProps<{
collection?: string;
eventHandlers?: EventHandlers;
fallbackMediaNameFetcher?: (id: string) => Promise<string>;
featureFlags?: MediaFeatureFlags;
id: string;
marks?: Array<Mark>;
providers: ProviderFactory;
rendererAppearance?: RendererAppearance;
ssr?: MediaSSR;
} & WrappedComponentProps & MediaInlineAttrs>> & Loadable.LoadableComponent;
declare const MediaSingle: React.ComponentType<WithIntlProps<MediaSingleNodeProps & WrappedComponentProps>> & Loadable.LoadableComponent;
declare const Mention: React.ComponentType<MentionNodeProps> & Loadable.LoadableComponent;
declare const Expand: React.ComponentType<WithIntlProps<ExpandProps & WrappedComponentProps>> & Loadable.LoadableComponent;
export declare const nodeToReact: {
[key: string]: React.ComponentType<React.PropsWithChildren<any>>;
};
interface ToReactFlags {
allowSelectAllTrap?: boolean;
allowWindowedCodeBlock?: boolean;
}
export declare const toReact: (node: Node, flags?: ToReactFlags, nodeComponents?: NodeComponentsProps) => React.ComponentType<React.PropsWithChildren<any>>;
export interface TextWrapper {
content: Node[];
nodeSize: number;
type: {
name: 'textWrapper';
};
}
interface NodeSimple {
attrs?: any;
nodeSize: number;
text?: string;
type: {
name: string;
};
}
export declare const mergeTextNodes: (nodes: (Node | NodeSimple)[]) => (Node | TextWrapper | NodeSimple)[];
export declare const isText: (type: string) => type is "text";
export declare const isTextWrapper: (node: Node | TextWrapper | NodeSimple) => node is TextWrapper;
export declare function isTextNode(node: Node | Mark): node is Node;
/**
* Detects whether a fragment contains a single paragraph node
* whose content satisfies the condition for an emoji block
*/
export declare const isEmojiDoc: (doc: Fragment) => boolean;
export { Blockquote, BodiedExtension, BulletList, BlockCard, Caption, CodeBlock, WindowedCodeBlock, Date, DecisionItem, DecisionList, Doc, DocWithSelectAllTrap, Emoji, Extension, ExtensionFrame, Expand, HardBreak, Heading, ListItem, InlineCard, InlineExtension, LayoutSection, LayoutColumn, Media, MediaGroup, MediaInline, MediaSingle, Mention, MultiBodiedExtension, OrderedList, Panel, Paragraph, Placeholder, Rule, Status, TaskItem, TaskList, Table, TableCell, TableRow, UnknownBlock, EmbedCard, };