@atlaskit/editor-plugin-media
Version:
Media plugin for @atlaskit/editor-core
74 lines (73 loc) • 4.71 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.commentButton = void 0;
var _react = _interopRequireDefault(require("react"));
var _analytics = require("@atlaskit/editor-common/analytics");
var _keymaps = require("@atlaskit/editor-common/keymaps");
var _media = require("@atlaskit/editor-common/media");
var _messages = require("@atlaskit/editor-common/messages");
var _editorPluginConnectivity = require("@atlaskit/editor-plugin-connectivity");
var _comment = _interopRequireDefault(require("@atlaskit/icon/core/comment"));
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
var _utils = require("./utils");
var commentButton = exports.commentButton = function commentButton(intl, state, api, onCommentButtonMount, createCommentExperience) {
var _getSelectedMediaSing, _api$annotation, _api$connectivity;
var selectMediaNode = (_getSelectedMediaSing = (0, _utils.getSelectedMediaSingle)(state)) === null || _getSelectedMediaSing === void 0 ? void 0 : _getSelectedMediaSing.node.firstChild;
var hasActiveComments = false;
var annotations = api === null || api === void 0 || (_api$annotation = api.annotation) === null || _api$annotation === void 0 || (_api$annotation = _api$annotation.sharedState.currentState()) === null || _api$annotation === void 0 ? void 0 : _api$annotation.annotations;
if (selectMediaNode && annotations) {
hasActiveComments = selectMediaNode.marks.some(function (mark) {
return mark.type.name === 'annotation' && !annotations[mark.attrs.id];
});
}
var title = intl.formatMessage(hasActiveComments ? _media.commentMessages.viewCommentsOnMedia : _media.commentMessages.addCommentOnMedia);
var buttonLabel = intl.formatMessage(_messages.annotationMessages.createComment);
var onClickHandler = function onClickHandler(state, dispatch) {
if (api !== null && api !== void 0 && api.annotation && selectMediaNode) {
var _api$annotation$actio = api.annotation.actions,
showCommentForBlockNode = _api$annotation$actio.showCommentForBlockNode,
setInlineCommentDraftState = _api$annotation$actio.setInlineCommentDraftState;
var isOpeningMediaCommentFromToolbar = (0, _platformFeatureFlags.fg)('confluence_frontend_media_scroll_fix') ? true : false;
if (!showCommentForBlockNode(selectMediaNode, _analytics.VIEW_METHOD.COMMENT_BUTTON, isOpeningMediaCommentFromToolbar)(state, dispatch)) {
var _selectMediaNode$attr;
if ((0, _platformFeatureFlags.fg)('confluence_fe_create_inline_comment_exp_coverage_2')) {
createCommentExperience === null || createCommentExperience === void 0 || createCommentExperience.start({
attributes: {
pageClass: 'editor',
commentType: 'block',
blockType: 'media',
entryPoint: 'highlightActionsSimple'
}
});
createCommentExperience === null || createCommentExperience === void 0 || createCommentExperience.initExperience.start();
}
setInlineCommentDraftState(true,
// TODO: ED-26962 - might need to update to reflect it's from media floating toolbar
_analytics.INPUT_METHOD.FLOATING_TB, 'block', (_selectMediaNode$attr = selectMediaNode.attrs) === null || _selectMediaNode$attr === void 0 ? void 0 : _selectMediaNode$attr.id, isOpeningMediaCommentFromToolbar)(state, dispatch);
}
}
return true;
};
return {
type: 'button',
testId: 'add-comment-media-button',
icon: _comment.default,
title: (0, _experiments.editorExperiment)('platform_editor_controls', 'control') ? title : buttonLabel,
showTitle: (0, _experiments.editorExperiment)('platform_editor_controls', 'control') ? undefined : true,
onClick: onClickHandler,
tooltipContent: /*#__PURE__*/_react.default.createElement(_keymaps.ToolTipContent, {
description: title
}),
supportsViewMode: true,
disabled: (0, _editorPluginConnectivity.isOfflineMode)(api === null || api === void 0 || (_api$connectivity = api.connectivity) === null || _api$connectivity === void 0 || (_api$connectivity = _api$connectivity.sharedState) === null || _api$connectivity === void 0 || (_api$connectivity = _api$connectivity.currentState()) === null || _api$connectivity === void 0 ? void 0 : _api$connectivity.mode),
onMount: function onMount() {
if ((0, _platformFeatureFlags.fg)('confluence_frontend_preload_inline_comment_editor')) {
onCommentButtonMount && onCommentButtonMount();
}
}
};
};