@atlaskit/editor-plugin-status
Version:
Status plugin for @atlaskit/editor-core
73 lines (72 loc) • 3.2 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.createStatusBlockMenuItem = void 0;
var _react = _interopRequireDefault(require("react"));
var _reactIntl = require("react-intl");
var _analytics = require("@atlaskit/editor-common/analytics");
var _messages = require("@atlaskit/editor-common/messages");
var _editorToolbar = require("@atlaskit/editor-toolbar");
var _lozenge = _interopRequireDefault(require("@atlaskit/icon-lab/core/lozenge"));
var _pluginKey = require("../pm-plugins/plugin-key");
var _createStatusNode = require("../utils/createStatusNode");
var StatusBlockMenuItem = function StatusBlockMenuItem(_ref) {
var api = _ref.api,
isSuggested = _ref.isSuggested;
var _useIntl = (0, _reactIntl.useIntl)(),
formatMessage = _useIntl.formatMessage;
var handleClick = function handleClick() {
api === null || api === void 0 || api.core.actions.execute(function (_ref2) {
var _api$blockMenu, _api$analytics;
var tr = _ref2.tr;
var command = api === null || api === void 0 || (_api$blockMenu = api.blockMenu) === null || _api$blockMenu === void 0 ? void 0 : _api$blockMenu.commands.transformInlineNode({
buildInlineNode: function buildInlineNode(source) {
return (0, _createStatusNode.createStatusNode)(tr.doc.type.schema, {
text: source.textContent.trim()
});
},
isSuggested: isSuggested,
targetTypeName: 'status'
});
var nextTr = command === null || command === void 0 ? void 0 : command({
tr: tr
});
if (!(nextTr !== null && nextTr !== void 0 && nextTr.docChanged)) {
return null;
}
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({
action: _analytics.ACTION.INSERTED,
actionSubject: _analytics.ACTION_SUBJECT.DOCUMENT,
actionSubjectId: _analytics.ACTION_SUBJECT_ID.STATUS,
attributes: {
inputMethod: _analytics.INPUT_METHOD.BLOCK_MENU
},
eventType: _analytics.EVENT_TYPE.TRACK
})(nextTr);
return nextTr.setMeta(_pluginKey.pluginKey, {
focusStatusInput: true,
isNew: true,
showStatusPickerAt: nextTr.selection.from
});
});
};
return /*#__PURE__*/_react.default.createElement(_editorToolbar.ToolbarDropdownItem, {
onClick: handleClick,
elemBefore: /*#__PURE__*/_react.default.createElement(_lozenge.default, {
label: "",
size: "small"
})
}, formatMessage(_messages.toolbarInsertBlockMessages.status));
};
var createStatusBlockMenuItem = exports.createStatusBlockMenuItem = function createStatusBlockMenuItem(api) {
return function () {
var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
isSuggested = _ref3.isSuggested;
return /*#__PURE__*/_react.default.createElement(StatusBlockMenuItem, {
api: api,
isSuggested: isSuggested
});
};
};