UNPKG

@atlaskit/editor-plugin-card

Version:

Card plugin for @atlaskit/editor-core

162 lines (159 loc) 7.03 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _react2 = require("@emotion/react"); var _reactIntl = require("react-intl"); var _messages = require("@atlaskit/editor-common/messages"); var _ui = require("@atlaskit/editor-common/ui"); var _uiMenu = require("@atlaskit/editor-common/ui-menu"); var _chevronDown = _interopRequireDefault(require("@atlaskit/icon/core/chevron-down")); var _edit = _interopRequireDefault(require("@atlaskit/icon/core/edit")); var _menu = require("@atlaskit/menu"); var _compiled = require("@atlaskit/primitives/compiled"); var _utils = require("../../pm-plugins/utils"); var _editDatasourceAction = require("../editDatasourceAction"); /** * @jsxRuntime classic * @jsx jsx */ // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports var dropdownExpandContainer = (0, _react2.css)({ margin: "0px ".concat("var(--ds-space-negative-050, -4px)") }); var EditToolbarButtonPresentation = function EditToolbarButtonPresentation(_ref) { var datasourceId = _ref.datasourceId, currentAppearance = _ref.currentAppearance, editorAnalyticsApi = _ref.editorAnalyticsApi, editVariant = _ref.editVariant, editorView = _ref.editorView, extensionKey = _ref.extensionKey, onLinkEditClick = _ref.onLinkEditClick, intl = _ref.intl, areAnyNewToolbarFlagsEnabled = _ref.areAnyNewToolbarFlagsEnabled; var _useState = (0, _react.useState)(false), _useState2 = (0, _slicedToArray2.default)(_useState, 2), isOpen = _useState2[0], setIsOpen = _useState2[1]; var containerRef = (0, _react.useRef)(); var toggleOpen = function toggleOpen() { return setIsOpen(function (open) { return !open; }); }; var onClose = function onClose() { return setIsOpen(false); }; var onEditLink = (0, _react.useCallback)(function () { if (editorView) { onLinkEditClick(editorView.state, editorView.dispatch); (0, _utils.focusEditorView)(editorView); } }, [editorView, onLinkEditClick]); var onEditDatasource = (0, _react.useCallback)(function () { if (editorView && datasourceId) { (0, _editDatasourceAction.editDatasource)(datasourceId, editorAnalyticsApi, currentAppearance, extensionKey)(editorView.state, editorView.dispatch); (0, _utils.focusEditorView)(editorView); } }, [currentAppearance, datasourceId, editorAnalyticsApi, editorView, extensionKey]); var icon = areAnyNewToolbarFlagsEnabled ? (0, _react2.jsx)(_edit.default, { label: "" }) : undefined; var tooltipContent = areAnyNewToolbarFlagsEnabled ? intl.formatMessage(_messages.linkToolbarMessages.editLink) : undefined; switch (editVariant) { case 'edit-link': { return (0, _react2.jsx)(_compiled.Flex, { gap: "space.050" }, (0, _react2.jsx)(_ui.FloatingToolbarButton, { testId: "edit-link", onClick: onEditLink, icon: icon, tooltipContent: tooltipContent, areAnyNewToolbarFlagsEnabled: areAnyNewToolbarFlagsEnabled }, !areAnyNewToolbarFlagsEnabled && (0, _react2.jsx)(_reactIntl.FormattedMessage // Ignored via go/ees005 // eslint-disable-next-line react/jsx-props-no-spreading , _messages.linkToolbarMessages.editLink)), !areAnyNewToolbarFlagsEnabled && (0, _react2.jsx)(_ui.FloatingToolbarSeparator, { areAnyNewToolbarFlagsEnabled: false })); } case 'edit-datasource': { return (0, _react2.jsx)(_compiled.Flex, { gap: "space.050" }, (0, _react2.jsx)(_ui.FloatingToolbarButton, { testId: "edit-datasource", tooltipContent: intl.formatMessage(_messages.linkToolbarMessages.editDatasourceStandaloneTooltip), onClick: onEditDatasource, areAnyNewToolbarFlagsEnabled: areAnyNewToolbarFlagsEnabled }, (0, _react2.jsx)(_reactIntl.FormattedMessage // Ignored via go/ees005 // eslint-disable-next-line react/jsx-props-no-spreading , _messages.linkToolbarMessages.editDatasourceStandalone)), !areAnyNewToolbarFlagsEnabled && (0, _react2.jsx)(_ui.FloatingToolbarSeparator, { areAnyNewToolbarFlagsEnabled: false })); } case 'edit-dropdown': { var trigger = (0, _react2.jsx)(_compiled.Flex, { gap: "space.050" }, (0, _react2.jsx)(_ui.FloatingToolbarButton, { testId: "edit-dropdown-trigger", iconAfter: (0, _react2.jsx)("span", { css: dropdownExpandContainer }, (0, _react2.jsx)(_chevronDown.default, { label: intl.formatMessage(_messages.cardMessages.editDropdownTriggerTitle), size: "small" })), onClick: toggleOpen, selected: isOpen, disabled: false, ariaHasPopup: true, areAnyNewToolbarFlagsEnabled: areAnyNewToolbarFlagsEnabled }, (0, _react2.jsx)(_reactIntl.FormattedMessage // Ignored via go/ees005 // eslint-disable-next-line react/jsx-props-no-spreading , _messages.cardMessages.editDropdownTriggerTitle)), !areAnyNewToolbarFlagsEnabled && (0, _react2.jsx)(_ui.FloatingToolbarSeparator, { areAnyNewToolbarFlagsEnabled: false })); return (0, _react2.jsx)(_compiled.Flex, { ref: containerRef }, (0, _react2.jsx)(_uiMenu.DropdownContainer, { mountTo: containerRef.current, isOpen: isOpen, handleClickOutside: onClose, handleEscapeKeydown: onClose, trigger: trigger, scrollableElement: containerRef.current // eslint-disable-next-line @atlassian/perf-linting/no-unstable-inline-props -- Ignored via go/ees017 (to be fixed) , arrowKeyNavigationProviderOptions: { type: _uiMenu.ArrowKeyNavigationType.MENU } }, (0, _react2.jsx)(_menu.ButtonItem, { key: "edit.link", onClick: onEditLink, testId: "edit-dropdown-edit-link-item" }, (0, _react2.jsx)(_reactIntl.FormattedMessage // Ignored via go/ees005 // eslint-disable-next-line react/jsx-props-no-spreading , _messages.cardMessages.editDropdownEditLinkTitle)), (0, _react2.jsx)(_menu.ButtonItem, { key: "edit.datasource", onClick: onEditDatasource, testId: "edit-dropdown-edit-datasource-item" }, (0, _react2.jsx)(_reactIntl.FormattedMessage // Ignored via go/ees005 // eslint-disable-next-line react/jsx-props-no-spreading , _messages.cardMessages.editDropdownEditDatasourceTitle)))); } case 'none': default: return null; } }; var _default = exports.default = EditToolbarButtonPresentation;