UNPKG

@atlaskit/editor-plugin-code-block

Version:

Code block plugin for @atlaskit/editor-core

61 lines 2.89 kB
import React, { useCallback } from 'react'; import { useIntl } from 'react-intl'; import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/hooks'; import { codeBlockButtonMessages } from '@atlaskit/editor-common/messages'; import AkFlag, { FlagGroup } from '@atlaskit/flag'; import StatusErrorIcon from '@atlaskit/icon/core/status-error'; import { ACTIONS } from '../pm-plugins/actions'; import { pluginKey } from '../pm-plugins/plugin-key'; var FormatCodeErrorFlagItem = function FormatCodeErrorFlagItem(_ref) { var formatCodeError = _ref.formatCodeError; var _useIntl = useIntl(), formatMessage = _useIntl.formatMessage; return /*#__PURE__*/React.createElement(AkFlag, { description: formatMessage(formatCodeError.languageSource === 'auto-detected' ? codeBlockButtonMessages.formatCodeFailedAutoDetectedDescription : codeBlockButtonMessages.formatCodeFailedDescription), icon: /*#__PURE__*/React.createElement(StatusErrorIcon, { color: "var(--ds-icon-danger, #C9372C)", label: "" }), id: formatCodeError.localId, title: formatMessage(codeBlockButtonMessages.formatCodeFailed) }); }; export var FormatCodeErrorFlag = function FormatCodeErrorFlag(_ref2) { var api = _ref2.api; var _useSharedPluginState = useSharedPluginStateWithSelector(api, ['codeBlock'], function (states) { var _states$codeBlockStat, _states$codeBlockStat2; return { formatCodeErrors: (_states$codeBlockStat = (_states$codeBlockStat2 = states.codeBlockState) === null || _states$codeBlockStat2 === void 0 ? void 0 : _states$codeBlockStat2.formatCodeErrors) !== null && _states$codeBlockStat !== void 0 ? _states$codeBlockStat : {} }; }), formatCodeErrors = _useSharedPluginState.formatCodeErrors; var onDismissed = useCallback(function (localId) { var _api$core, _api$core2; api === null || api === void 0 || (_api$core = api.core) === null || _api$core === void 0 || _api$core.actions.execute(function (_ref3) { var tr = _ref3.tr; tr.setMeta(pluginKey, { type: ACTIONS.CLEAR_FORMAT_CODE_ERROR, data: { localId: localId } }); return tr; }); api === null || api === void 0 || (_api$core2 = api.core) === null || _api$core2 === void 0 || _api$core2.actions.focus(); }, [api]); var onFlagGroupDismissed = useCallback(function (localId) { return onDismissed(String(localId)); }, [onDismissed]); var activeFormatCodeErrors = Object.values(formatCodeErrors); if (activeFormatCodeErrors.length === 0) { return null; } return /*#__PURE__*/React.createElement(FlagGroup, { onDismissed: onFlagGroupDismissed }, activeFormatCodeErrors.map(function (formatCodeError) { return /*#__PURE__*/React.createElement(FormatCodeErrorFlagItem, { formatCodeError: formatCodeError, key: formatCodeError.localId }); })); };