import type { DocNode } from '@atlaskit/adf-schema'; import type { CreateUIAnalyticsEvent } from '@atlaskit/analytics-next'; import type { ExtensionHandlers, ExtensionParams, Parameters } from '@atlaskit/editor-common/extensions'; import type { ProviderFactory } from '@atlaskit/editor-common/provider-factory'; import type { AnnotationProviders } from '@atlaskit/editor-common/types'; import type { EventHandlers } from '@atlaskit/editor-common/ui'; import type { UnsupportedContentLevelsTracking } from '@atlaskit/editor-common/utils'; import type { ADFStage } from '@atlaskit/editor-common/validator'; import type { Schema } from '@atlaskit/editor-prosemirror/model'; import type { EmojiResourceConfig } from '@atlaskit/emoji/resource'; import type { GetPMNodeHeight } from '@atlaskit/editor-common/extensibility'; import type { ReactSerializerInit, RendererContext, Serializer } from '../'; import type { TextHighlighter, ExtensionViewportSize } from '../react/types'; import type { RenderOutputStat } from '../render-document'; import type { MediaOptions } from '../types/mediaOptions'; import type { SmartLinksOptions } from '../types/smartLinksOptions'; import type { HeadingAnchorLinksProps, NodeComponentsProps, RendererAppearance, RendererContentMode, StickyHeaderProps } from './Renderer/types'; interface RawObjectFeatureFlags { ['renderer-render-tracking']: string; } export interface RendererProps { /** * When enabled a trailing telepointer will be added to the rendered document * following content updates. * * Content is updated by passing a new value prop to the renderer. * * The trailing pointer is updated by dom injection to the last text node which * is updated as a result of a content update. */ addTelepointer?: boolean; adfStage?: ADFStage; allowAltTextOnImages?: boolean; allowAnnotations?: boolean; allowColumnSorting?: boolean; allowCopyToClipboard?: boolean; allowCustomPanels?: boolean; allowFixedColumnWidthOption?: boolean; allowHeadingAnchorLinks?: HeadingAnchorLinksProps; allowPlaceholderText?: boolean; allowRendererContainerStyles?: boolean; allowSelectAllTrap?: boolean; allowUgcScrubber?: boolean; allowWrapCodeBlock?: boolean; analyticsEventSeverityTracking?: { enabled: boolean; severityDegradedThreshold: number; severityNormalThreshold: number; }; annotationProvider?: AnnotationProviders | null; appearance?: RendererAppearance; /** * **WARNING** this attribute is not supported outside of Confluence Full Page editors * * Configures the content mode of the editor. * * - `"standard"` | `undefined` - normal content mode <- Default * - `"compact"` - content in editor has reduced size * * @private * @deprecated this attribute is not supported outside of Confluence Full Page editors */ contentMode?: RendererContentMode; createAnalyticsEvent?: CreateUIAnalyticsEvent; /** * Creates a new `Serializer` to transform the ADF `document` into `JSX.Element`. * Allows Confluence to implement {@link https://hello.atlassian.net/wiki/spaces/~lmarinov/pages/5177285037/COMPLEXIT+Progressive+rendering+of+ADF progressive rendering}. */ createSerializer?(init: ReactSerializerInit): Serializer | null; dataProviders?: ProviderFactory; disableActions?: boolean; disableHeadingIDs?: boolean; /** * When true, disables the overflow shadow (visual indication) on the edges * of tables. */ disableTableOverflowShadow?: boolean; document: DocNode; emojiResourceConfig?: EmojiResourceConfig; enableSsrInlineScripts?: boolean; eventHandlers?: EventHandlers; extensionHandlers?: ExtensionHandlers; extensionViewportSizes?: ExtensionViewportSize[]; fadeOutHeight?: number; /** * @default undefined * @description * Short lived feature flags for experiments and gradual rollouts * Flags are expected to follow these rules or they are filtered out * * 1. cased in kebab-case (match [a-z-]) * 2. have boolean values or object {} values * * @example * ```tsx * (); * getFeatureFlags()?.myFeature === true; * ``` * * @example * ```tsx * (); * getFeatureFlags()?.myFeature === undefined; * ``` * * @example * ```tsx * (); * getFeatureFlags()?.myFeature === undefined; * getFeatureFlags()?.productMyFeature === undefined; * ``` */ featureFlags?: { [featureFlag: string]: boolean; } | Partial; getExtensionHeight?: GetPMNodeHeight; includeNodesCountInStats?: boolean; innerRef?: React.RefObject; isInsideOfInlineExtension?: boolean; isTopLevelRenderer?: boolean; maxHeight?: number; media?: MediaOptions; nodeComponents?: NodeComponentsProps; noOpSSRInlineScript?: boolean; onComplete?: (stat: RenderOutputStat) => void; onError?: (error: any) => void; /** * Optional callback to programatically determine the link target for rendered links. Controls whether a link should render as external or not. * Return _blank if the url should render as an external link. * Return undefined to use the links default behavior and target. * * @param url - The URL of the link being rendered * @returns '_blank' to render as an external link or undefined to not change the link */ onSetLinkTarget?: (url: string) => '_blank' | undefined; portal?: HTMLElement; rendererContext?: RendererContext; schema?: Schema; /** * Optional callback to scroll an element into view when using block links (#block-xxx). * When provided, this is used instead of the default scrollIntoView for accurate positioning * in product-specific scroll containers (e.g. Confluence view page). */ scrollToBlock?: (element: HTMLElement) => void; /** * Determines if the extension should be displayed as inline based on the extension parameters. * @param extensionParams - The extension parameters. * @returns True if the extension should be displayed as inline, false otherwise. */ shouldDisplayExtensionAsInline?: (extensionParams: ExtensionParams) => boolean; shouldOpenMediaViewer?: boolean; shouldRemoveEmptySpaceAroundContent?: boolean; smartLinks?: SmartLinksOptions; stickyHeaders?: StickyHeaderProps; textHighlighter?: TextHighlighter; timeZone?: string; truncated?: boolean; UNSTABLE_allowTableAlignment?: boolean; UNSTABLE_allowTableResizing?: boolean; /** * When true, elements may render without their default semantic roles * (e.g., using role="presentation"), indicating that they are used solely for layout or styling purposes. * Elements currently affected: Tables. */ UNSTABLE_isPresentational?: boolean; /** @deprecated {@link https://hello.atlassian.net/browse/ENGHEALTH-26490 Internal documentation for deprecation (no external access)} This prop has been marked stable and therefore replaced by the `textHighlighter` prop. Please use `textHighlighter` prop instead. */ UNSTABLE_textHighlighter?: TextHighlighter; unsupportedContentLevelsTracking?: UnsupportedContentLevelsTracking; /** @deprecated {@link https://hello.atlassian.net/browse/ENGHEALTH-3649 Internal documentation for deprecation (no external access)} This prop will be removed and set as default enabled, as the same flag on the Editor is also now default enabled. */ useSpecBasedValidator?: boolean; } export {};