UNPKG

@atlaskit/editor-plugin-block-menu

Version:

BlockMenu plugin for @atlaskit/editor-core

48 lines 2.13 kB
import React, { useCallback } from 'react'; import { useIntl } from 'react-intl'; import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '@atlaskit/editor-common/analytics'; import { blockMenuMessages } from '@atlaskit/editor-common/messages'; import { ToolbarNestedDropdownMenu } from '@atlaskit/editor-toolbar'; import ChangesIcon from '@atlaskit/icon/core/changes'; import ChevronRightIcon from '@atlaskit/icon/core/chevron-right'; import { fg } from '@atlaskit/platform-feature-flags'; import { BLOCK_MENU_ITEM_NAME } from './consts'; export var FormatMenuComponent = function FormatMenuComponent(_ref) { var api = _ref.api, children = _ref.children; var _useIntl = useIntl(), formatMessage = _useIntl.formatMessage; var formatMenuLabel = fg('platform_editor_block_menu_v2_patch_2') ? blockMenuMessages.changeFormat : blockMenuMessages.turnInto; var handleClick = useCallback(function () { api === null || api === void 0 || api.core.actions.execute(function (_ref2) { var _api$analytics; var tr = _ref2.tr; var payload = { action: ACTION.CLICKED, actionSubject: ACTION_SUBJECT.BLOCK_MENU_ITEM, attributes: { menuItemName: BLOCK_MENU_ITEM_NAME.FORMAT_MENU }, eventType: EVENT_TYPE.UI }; api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 || (_api$analytics = _api$analytics.actions) === null || _api$analytics === void 0 || _api$analytics.attachAnalyticsEvent(payload)(tr); return tr; }); }, [api]); return /*#__PURE__*/React.createElement(ToolbarNestedDropdownMenu, { text: formatMessage(formatMenuLabel), elemBefore: /*#__PURE__*/React.createElement(ChangesIcon, { label: "", size: "small" }), elemAfter: /*#__PURE__*/React.createElement(ChevronRightIcon, { label: "", size: "small" }), enableMaxHeight: true, onClick: handleClick, dropdownTestId: "editor-turn-into-menu", testId: fg('cc_blocks_changeboarding') ? 'turn-into-block-menu-btn' : undefined, shouldFitContainer: true }, children); };