@atlaskit/editor-plugin-block-controls
Version:
Block controls plugin for @atlaskit/editor-core
41 lines • 1.83 kB
JavaScript
import React from 'react';
import { BLOCK_CONTROL_UI_CONTEXT } from '@atlaskit/editor-common/block-controls/block-control-ui-context';
import { BLOCK_CONTROLS_LEFT_SURFACE, BLOCK_CONTROLS_RIGHT_SURFACE } from '@atlaskit/editor-common/block-controls/surface-keys';
import { SurfaceRenderer } from '@atlaskit/editor-ui-control-model/surface-renderer';
import { isExperimentEnabled } from '@atlaskit/platform-feature-experiments/is-experiment-enabled';
import { BlockControlsVisibilityProvider } from '../ui/block-controls-surface-components';
import { getBlockControlsSurfaceControlSide } from '../ui/block-controls-surface-context';
import { useBlockControlsVisibility } from '../ui/visibility-container';
/** Renders one block-controls surface for either side on the CLS fix path. */
export const BlockControlsSurfaceWithClsFix = ({
api,
components,
forceVisibleOnMouseOut,
placement,
side,
source,
surfaceContext,
SurfaceWrapper
}) => {
const controlSide = side === 'left' ? getBlockControlsSurfaceControlSide(surfaceContext.get(BLOCK_CONTROL_UI_CONTEXT), isExperimentEnabled('platform_editor_controls_reliable_anchor')) : 'right';
const {
shouldHide: shouldHideHoverControls,
useCssStyles
} = useBlockControlsVisibility({
api,
controlSide,
forceVisibleOnMouseOut
});
return /*#__PURE__*/React.createElement(SurfaceWrapper, {
placement: placement,
source: source,
surfaceContext: surfaceContext
}, /*#__PURE__*/React.createElement(BlockControlsVisibilityProvider, {
shouldHideHoverControls: shouldHideHoverControls,
useCssStyles: useCssStyles
}, /*#__PURE__*/React.createElement(SurfaceRenderer, {
components: components,
surface: side === 'left' ? BLOCK_CONTROLS_LEFT_SURFACE : BLOCK_CONTROLS_RIGHT_SURFACE,
surfaceContext: surfaceContext
})));
};