@atlaskit/editor-plugin-block-controls
Version:
Block controls plugin for @atlaskit/editor-core
36 lines (35 loc) • 1.68 kB
TypeScript
/**
* @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 {};