UNPKG

@atlaskit/editor-plugin-block-menu

Version:

BlockMenu plugin for @atlaskit/editor-core

107 lines (104 loc) 5.64 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports.CopyLinkDropdownItem = void 0; var _react = _interopRequireWildcard(require("react")); var _reactIntl = require("react-intl"); var _analytics = require("@atlaskit/editor-common/analytics"); var _blockMenu = require("@atlaskit/editor-common/block-menu"); var _hooks = require("@atlaskit/editor-common/hooks"); var _keymaps = require("@atlaskit/editor-common/keymaps"); var _messages = require("@atlaskit/editor-common/messages"); var _editorToolbar = require("@atlaskit/editor-toolbar"); var _link = _interopRequireDefault(require("@atlaskit/icon/core/link")); var _platformFeatureFlags = require("@atlaskit/platform-feature-flags"); var _blockMenuPluginType = require("../blockMenuPluginType"); var _main = require("../pm-plugins/main"); var _blockMenuProvider = require("./block-menu-provider"); var _consts = require("./consts"); var _copyLink = require("./utils/copyLink"); function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); } var CopyLinkDropdownItemContent = function CopyLinkDropdownItemContent(_ref) { var api = _ref.api, config = _ref.config; var _useIntl = (0, _reactIntl.useIntl)(), formatMessage = _useIntl.formatMessage; var _useBlockMenu = (0, _blockMenuProvider.useBlockMenu)(), onDropdownOpenChanged = _useBlockMenu.onDropdownOpenChanged; var _ref2 = config || {}, getLinkPath = _ref2.getLinkPath, blockLinkHashPrefix = _ref2.blockLinkHashPrefix; var shortcut = (0, _keymaps.formatShortcut)(_keymaps.copyLinkToBlock); var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['blockControls', 'selection'], function (_ref3) { var blockControlsState = _ref3.blockControlsState, selectionState = _ref3.selectionState; return { preservedSelection: blockControlsState === null || blockControlsState === void 0 ? void 0 : blockControlsState.preservedSelection, defaultSelection: selectionState === null || selectionState === void 0 ? void 0 : selectionState.selection }; }), preservedSelection = _useSharedPluginState.preservedSelection, defaultSelection = _useSharedPluginState.defaultSelection; var selection = preservedSelection || defaultSelection; var handleClick = (0, _react.useCallback)(function () { if (!selection) { return; } api === null || api === void 0 || api.core.actions.execute(function (_ref4) { var _api$analytics, _api$blockControls; var tr = _ref4.tr; var payload = { action: _analytics.ACTION.CLICKED, actionSubject: _analytics.ACTION_SUBJECT.BLOCK_MENU_ITEM, attributes: { menuItemName: _consts.BLOCK_MENU_ITEM_NAME.COPY_LINK_TO_BLOCK }, eventType: _analytics.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); api === null || api === void 0 || (_api$blockControls = api.blockControls) === null || _api$blockControls === void 0 || (_api$blockControls = _api$blockControls.commands) === null || _api$blockControls === void 0 || _api$blockControls.toggleBlockMenu({ closeMenu: true })({ tr: tr }); return tr; }); onDropdownOpenChanged(false); (0, _copyLink.copyLink)({ getLinkPath: getLinkPath, blockLinkHashPrefix: blockLinkHashPrefix, selection: selection }).then(function (success) { if (success) { api === null || api === void 0 || api.core.actions.execute(function (_ref5) { var tr = _ref5.tr; tr.setMeta(_main.blockMenuPluginKey, { showFlag: _blockMenuPluginType.FLAG_ID.LINK_COPIED_TO_CLIPBOARD }); return tr; }); } }); }, [api, blockLinkHashPrefix, getLinkPath, onDropdownOpenChanged, selection]); // Hide copy link when `platform_editor_adf_with_localid` feature flag is off if (!(0, _platformFeatureFlags.fg)('platform_editor_adf_with_localid')) { return null; } return /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarDropdownItem, { onClick: handleClick, elemBefore: /*#__PURE__*/_react.default.createElement(_link.default, { label: "", size: "small" }), elemAfter: shortcut ? /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarKeyboardShortcutHint, { shortcut: shortcut }) : undefined, ariaKeyshortcuts: shortcut, testId: _blockMenu.BLOCK_MENU_ACTION_TEST_ID.COPY_LINK }, formatMessage(_messages.blockMenuMessages.copyLinkToSelection)); }; // eslint-disable-next-line @typescript-eslint/ban-types var CopyLinkDropdownItem = exports.CopyLinkDropdownItem = (0, _reactIntl.injectIntl)(CopyLinkDropdownItemContent);