UNPKG

@atlaskit/editor-plugin-block-controls

Version:

Block controls plugin for @atlaskit/editor-core

36 lines (35 loc) • 1.68 kB
/** * @jsxRuntime classic * @jsx jsx */ import React from 'react'; import { jsx } from '@emotion/react'; import type { ExtractInjectionAPI } from '@atlaskit/editor-common/types/next-editor-plugin'; import type { BlockControlsPlugin } from '../blockControlsPluginType'; interface VisibilityContainerProps { api?: ExtractInjectionAPI<BlockControlsPlugin>; children: React.ReactNode; controlSide?: 'left' | 'right'; forceVisibleOnMouseOut?: boolean; isPersistent?: boolean; /** * Set when the container should not create its own layout box while its descendants retain theirs. */ shouldUseDisplayContents?: boolean; } type VisibilityWrapperProps = Pick<VisibilityContainerProps, 'children' | 'shouldUseDisplayContents'> & { shouldHide: boolean; useCssStyles: boolean; }; type BlockControlsVisibilityOptions = Omit<VisibilityContainerProps, 'children' | 'shouldUseDisplayContents'>; /** * Resolves visibility once so a surface can apply the same state to each rendered control without * creating a plugin-state subscription and hide-delay timer for every control wrapper. */ export declare const useBlockControlsVisibility: ({ api, controlSide, forceVisibleOnMouseOut, isPersistent, }: BlockControlsVisibilityOptions) => { shouldHide: boolean; useCssStyles: boolean; }; export declare const VisibilityWrapper: ({ children, shouldHide, shouldUseDisplayContents, useCssStyles, }: VisibilityWrapperProps) => jsx.JSX.Element; export declare const VisibilityContainer: ({ api, children, controlSide, forceVisibleOnMouseOut, isPersistent, shouldUseDisplayContents, }: VisibilityContainerProps) => jsx.JSX.Element; export {};