@atlaskit/editor-plugin-media
Version:
Media plugin for @atlaskit/editor-core
910 lines (904 loc) • 53.4 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.overflowDropdwonBtnTriggerTestId = exports.handleShowMediaViewer = exports.handleShowImageEditor = exports.floatingToolbar = void 0;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _analytics = require("@atlaskit/editor-common/analytics");
var _card = require("@atlaskit/editor-common/card");
var _editorAnalytics = require("@atlaskit/editor-common/editor-analytics");
var _mediaInline = require("@atlaskit/editor-common/media-inline");
var _messages = _interopRequireWildcard(require("@atlaskit/editor-common/messages"));
var _toolbarFlagCheck = require("@atlaskit/editor-common/toolbar-flag-check");
var _editorPluginConnectivity = require("@atlaskit/editor-plugin-connectivity");
var _state2 = require("@atlaskit/editor-prosemirror/state");
var _utils = require("@atlaskit/editor-prosemirror/utils");
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
var _imageCrop = _interopRequireDefault(require("@atlaskit/icon-lab/core/image-crop"));
var _copy = _interopRequireDefault(require("@atlaskit/icon/core/copy"));
var _delete = _interopRequireDefault(require("@atlaskit/icon/core/delete"));
var _download = _interopRequireDefault(require("@atlaskit/icon/core/download"));
var _growDiagonal = _interopRequireDefault(require("@atlaskit/icon/core/grow-diagonal"));
var _imageFullscreen = _interopRequireDefault(require("@atlaskit/icon/core/image-fullscreen"));
var _imageInline = _interopRequireDefault(require("@atlaskit/icon/core/image-inline"));
var _maximize = _interopRequireDefault(require("@atlaskit/icon/core/maximize"));
var _smartLinkCard = _interopRequireDefault(require("@atlaskit/icon/core/smart-link-card"));
var _mediaFilmstrip = require("@atlaskit/media-filmstrip");
var _mediaUi = require("@atlaskit/media-ui");
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
var _styles = require("../../nodeviews/styles");
var _altText = require("../../pm-plugins/alt-text");
var _linking = require("../../pm-plugins/commands/linking");
var _linking2 = require("../../pm-plugins/linking");
var _pixelResizing = require("../../pm-plugins/pixel-resizing");
var _ui = require("../../pm-plugins/pixel-resizing/ui");
var _pluginKey = require("../../pm-plugins/plugin-key");
var _currentMediaNode = require("../../pm-plugins/utils/current-media-node");
var _mediaSingle = require("../../pm-plugins/utils/media-single");
var _ImageBorder = _interopRequireDefault(require("../../ui/ImageBorder"));
var _altText2 = require("./alt-text");
var _commands = require("./commands");
var _comments = require("./comments");
var _imageBorder = require("./imageBorder");
var _layoutGroup = require("./layout-group");
var _linking3 = require("./linking");
var _linkingToolbarAppearance = require("./linking-toolbar-appearance");
var _mediaInline2 = require("./mediaInline");
var _pixelResizing2 = require("./pixel-resizing");
var _utils2 = require("./utils");
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); }
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var mediaTypeMessages = {
image: _mediaUi.messages.file_image_is_selected,
video: _mediaUi.messages.file_video_is_selected,
audio: _mediaUi.messages.file_audio_is_selected,
doc: _mediaUi.messages.file_doc_is_selected,
archive: _mediaUi.messages.file_archive_is_selected,
unknown: _mediaUi.messages.file_unknown_is_selected
};
var getMediaActionSubject = function getMediaActionSubject(nodeType) {
switch (nodeType.name) {
case 'mediaSingle':
return _analytics.ACTION_SUBJECT.MEDIA_SINGLE;
case 'mediaInline':
return _analytics.ACTION_SUBJECT.MEDIA_INLINE;
case 'mediaGroup':
return _analytics.ACTION_SUBJECT.MEDIA_GROUP;
default:
return _analytics.ACTION_SUBJECT.MEDIA;
}
};
var removeWithAnalytics = function removeWithAnalytics(editorAnalyticsApi, nodeType) {
if (!nodeType) {
return remove;
}
var mediaType = getMediaActionSubject(nodeType);
return (0, _editorAnalytics.withAnalytics)(editorAnalyticsApi, {
action: _analytics.ACTION.DELETED,
actionSubject: mediaType,
attributes: {
inputMethod: _analytics.INPUT_METHOD.FLOATING_TB
},
eventType: _analytics.EVENT_TYPE.TRACK
})(remove);
};
var remove = function remove(state, dispatch) {
if (dispatch) {
dispatch((0, _utils.removeSelectedNode)(state.tr));
}
return true;
};
var handleRemoveMediaGroupWithAnalytics = function handleRemoveMediaGroupWithAnalytics(editorAnalyticsApi) {
return (0, _editorAnalytics.withAnalytics)(editorAnalyticsApi, {
action: _analytics.ACTION.DELETED,
actionSubject: _analytics.ACTION_SUBJECT.MEDIA_GROUP,
attributes: {
inputMethod: _analytics.INPUT_METHOD.FLOATING_TB
},
eventType: _analytics.EVENT_TYPE.TRACK
})(handleRemoveMediaGroup);
};
var handleRemoveMediaGroup = function handleRemoveMediaGroup(state, dispatch) {
var tr = (0, _utils2.removeMediaGroupNode)(state);
if (dispatch) {
dispatch(tr);
}
return true;
};
var handleShowMediaViewer = exports.handleShowMediaViewer = function handleShowMediaViewer(_ref) {
var api = _ref.api,
mediaPluginState = _ref.mediaPluginState;
var selectedNodeAttrs = (0, _utils2.getSelectedNearestMediaContainerNodeAttrs)(mediaPluginState);
if (!selectedNodeAttrs) {
return false;
}
api === null || api === void 0 || api.core.actions.execute(api === null || api === void 0 ? void 0 : api.media.commands.showMediaViewer(selectedNodeAttrs));
};
var handleShowImageEditor = exports.handleShowImageEditor = function handleShowImageEditor(_ref2) {
var _api$mediaEditing;
var api = _ref2.api,
mediaPluginState = _ref2.mediaPluginState;
var selectedNodeAttrs = (0, _utils2.getSelectedNearestMediaContainerNodeAttrs)(mediaPluginState);
if (!selectedNodeAttrs) {
return false;
}
api === null || api === void 0 || api.core.actions.execute(api === null || api === void 0 || (_api$mediaEditing = api.mediaEditing) === null || _api$mediaEditing === void 0 ? void 0 : _api$mediaEditing.commands.showImageEditor(selectedNodeAttrs));
};
var generateMediaCardFloatingToolbar = function generateMediaCardFloatingToolbar(state, intl, mediaPluginState, hoverDecoration, pluginInjectionApi, editorAnalyticsAPI, forceFocusSelector, isViewOnly) {
var _pluginInjectionApi$c;
var disableDownloadButton = (0, _utils2.getIsDownloadDisabledByDataSecurityPolicy)(mediaPluginState);
var areAnyNewToolbarFlagsEnabled = (0, _toolbarFlagCheck.areToolbarFlagsEnabled)(Boolean(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.toolbar));
var preview = {
id: 'editor.media.viewer',
testId: 'file-preview-toolbar-button',
type: 'button',
icon: areAnyNewToolbarFlagsEnabled ? _growDiagonal.default : _maximize.default,
title: intl.formatMessage(_mediaUi.messages.preview),
onClick: function onClick() {
var _handleShowMediaViewe;
return (_handleShowMediaViewe = handleShowMediaViewer({
mediaPluginState: mediaPluginState,
api: pluginInjectionApi
})) !== null && _handleShowMediaViewe !== void 0 ? _handleShowMediaViewe : false;
},
disabled: (0, _editorPluginConnectivity.isOfflineMode)(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c = pluginInjectionApi.connectivity) === null || _pluginInjectionApi$c === void 0 || (_pluginInjectionApi$c = _pluginInjectionApi$c.sharedState) === null || _pluginInjectionApi$c === void 0 || (_pluginInjectionApi$c = _pluginInjectionApi$c.currentState()) === null || _pluginInjectionApi$c === void 0 ? void 0 : _pluginInjectionApi$c.mode),
supportsViewMode: true
};
var download = _objectSpread({
id: 'editor.media.card.download',
type: 'button',
icon: _download.default,
onClick: function onClick() {
(0, _utils2.downloadMedia)(mediaPluginState);
return true;
},
title: intl.formatMessage(_mediaUi.messages.download),
disabled: disableDownloadButton
}, areAnyNewToolbarFlagsEnabled && {
supportsViewMode: true
});
if (isViewOnly && !areAnyNewToolbarFlagsEnabled) {
return [];
}
var mediaGroup = state.schema.nodes.mediaGroup;
var items = [];
if (!areAnyNewToolbarFlagsEnabled) {
items.push({
id: 'editor.media.view.switcher.inline',
type: 'button',
icon: _imageInline.default,
selected: false,
focusEditoronEnter: true,
disabled: false,
onClick: (0, _commands.changeMediaCardToInline)(editorAnalyticsAPI, forceFocusSelector),
title: intl.formatMessage(_messages.cardMessages.inlineTitle),
testId: 'inline-appearance',
className: 'inline-appearance' // a11y. uses to force focus on item
}, {
id: 'editor.media.view.switcher.thumbnail',
type: 'button',
icon: _smartLinkCard.default,
selected: true,
disabled: false,
focusEditoronEnter: true,
onClick: function onClick() {
return true;
},
title: intl.formatMessage(_messages.cardMessages.blockTitle),
testId: 'thumbnail-appearance',
className: 'thumbnail-appearance' // a11y. uses to force focus on item
}, {
type: 'separator'
}, preview, {
type: 'separator'
}, download, {
type: 'separator'
}, {
type: 'copy-button',
supportsViewMode: true,
items: [{
state: state,
formatMessage: intl.formatMessage,
nodeType: mediaGroup
}]
}, {
type: 'separator'
}, {
id: 'editor.media.delete',
type: 'button',
appearance: 'danger',
focusEditoronEnter: true,
icon: _delete.default,
onMouseEnter: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(mediaGroup, true),
onMouseLeave: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(mediaGroup, false),
onFocus: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(mediaGroup, true),
onBlur: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(mediaGroup, false),
title: intl.formatMessage(_messages.default.remove),
onClick: handleRemoveMediaGroupWithAnalytics(editorAnalyticsAPI),
testId: 'media-toolbar-remove-button'
});
} else {
var options = [{
id: 'editor.media.view.switcher.inline',
title: intl.formatMessage(_messages.cardMessages.inlineTitle),
onClick: (0, _commands.changeMediaCardToInline)(editorAnalyticsAPI, forceFocusSelector),
icon: /*#__PURE__*/_react.default.createElement(_imageInline.default, {
label: "",
spacing: "spacious"
})
}, {
id: 'editor.media.view.switcher.thumbnail',
title: intl.formatMessage(_messages.cardMessages.blockTitle),
selected: true,
onClick: function onClick() {
return true;
},
icon: /*#__PURE__*/_react.default.createElement(_smartLinkCard.default, {
label: "",
spacing: "spacious"
})
}];
var switcherDropdown = {
title: intl.formatMessage(_mediaUi.messages.fileDisplayOptions),
id: 'media-group-inline-switcher-toolbar-item',
testId: 'media-group-inline-switcher-dropdown',
type: 'dropdown',
options: options,
icon: function icon() {
return /*#__PURE__*/_react.default.createElement(_smartLinkCard.default, {
label: "",
spacing: "spacious"
});
}
};
items.push(switcherDropdown, {
type: 'separator',
fullHeight: true
}, download, {
type: 'separator',
supportsViewMode: true
}, preview, {
type: 'separator',
fullHeight: true
});
}
return items;
};
var generateMediaSingleFloatingToolbar = function generateMediaSingleFloatingToolbar(state, intl, options, pluginState, mediaLinkingState, pluginInjectionApi) {
var _pluginInjectionApi$d, _pluginInjectionApi$d2;
var mediaSingle = state.schema.nodes.mediaSingle;
var allowResizing = options.allowResizing,
allowLinking = options.allowLinking,
allowAdvancedToolBarOptions = options.allowAdvancedToolBarOptions,
allowCommentsOnMedia = options.allowCommentsOnMedia,
allowResizingInTables = options.allowResizingInTables,
allowAltTextOnImages = options.allowAltTextOnImages,
allowMediaInline = options.allowMediaInline,
allowMediaInlineImages = options.allowMediaInlineImages,
allowImageEditing = options.allowImageEditing,
allowImagePreview = options.allowImagePreview,
isViewOnly = options.isViewOnly,
allowPixelResizing = options.allowPixelResizing,
onCommentButtonMount = options.onCommentButtonMount,
createCommentExperience = options.createCommentExperience;
var toolbarButtons = [];
var _ref3 = (_pluginInjectionApi$d = pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$d2 = pluginInjectionApi.decorations) === null || _pluginInjectionApi$d2 === void 0 ? void 0 : _pluginInjectionApi$d2.actions) !== null && _pluginInjectionApi$d !== void 0 ? _pluginInjectionApi$d : {},
hoverDecoration = _ref3.hoverDecoration;
var areAnyNewToolbarFlagsEnabled = (0, _toolbarFlagCheck.areToolbarFlagsEnabled)(Boolean(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.toolbar));
var disableDownloadButton = (0, _utils2.getIsDownloadDisabledByDataSecurityPolicy)(pluginState);
if ((0, _imageBorder.shouldShowImageBorder)(state)) {
toolbarButtons.push({
type: 'custom',
fallback: [],
render: function render(editorView) {
if (!editorView) {
return null;
}
var dispatch = editorView.dispatch,
state = editorView.state;
var borderMark = (0, _currentMediaNode.currentMediaOrInlineNodeBorderMark)(state);
return /*#__PURE__*/_react.default.createElement(_ImageBorder.default
// eslint-disable-next-line @atlassian/perf-linting/no-unstable-inline-props -- Ignored via go/ees017 (to be fixed)
, {
toggleBorder: function toggleBorder() {
var _pluginInjectionApi$a;
(0, _commands.toggleBorderMark)(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a === void 0 ? void 0 : _pluginInjectionApi$a.actions)(state, dispatch);
}
// eslint-disable-next-line @atlassian/perf-linting/no-unstable-inline-props -- Ignored via go/ees017 (to be fixed)
,
setBorder: function setBorder(attrs) {
var _pluginInjectionApi$a2;
(0, _commands.setBorderMark)(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a2 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a2 === void 0 ? void 0 : _pluginInjectionApi$a2.actions)(attrs)(state, dispatch);
},
borderMark: borderMark,
intl: intl
});
}
});
if (!areAnyNewToolbarFlagsEnabled) {
toolbarButtons.push({
type: 'separator'
});
}
}
if (allowAdvancedToolBarOptions) {
var _pluginInjectionApi$a3;
var widthPlugin = pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.width;
var isChangingLayoutDisabled = false;
var selectedNode = (0, _utils2.getSelectedMediaSingle)(state);
if (allowPixelResizing) {
var _widthPlugin$sharedSt;
var contentWidth = widthPlugin === null || widthPlugin === void 0 || (_widthPlugin$sharedSt = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt === void 0 ? void 0 : _widthPlugin$sharedSt.lineLength;
var selectedNodeMaxWidth = pluginState.currentMaxWidth || contentWidth;
if (selectedNode && selectedNodeMaxWidth && selectedNode.node.attrs.width >= selectedNodeMaxWidth) {
isChangingLayoutDisabled = true;
}
}
var layoutButtons = (0, _card.buildLayoutButtons)(state, intl, state.schema.nodes.mediaSingle, widthPlugin, pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a3 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a3 === void 0 ? void 0 : _pluginInjectionApi$a3.actions, allowResizing, allowResizingInTables, true, true, isChangingLayoutDisabled, allowPixelResizing);
var addLayoutDropdownToToolbar = function addLayoutDropdownToToolbar() {
if (areAnyNewToolbarFlagsEnabled) {
var _pluginInjectionApi$a4;
var layoutDropdown = (0, _card.buildLayoutDropdown)(state, intl, state.schema.nodes.mediaSingle, widthPlugin, pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a4 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a4 === void 0 ? void 0 : _pluginInjectionApi$a4.actions, allowResizing, allowResizingInTables, true, true, isChangingLayoutDisabled, allowPixelResizing);
toolbarButtons = [].concat((0, _toConsumableArray2.default)(toolbarButtons), (0, _toConsumableArray2.default)(layoutDropdown));
} else {
var selectedLayoutIcon = (0, _utils2.getSelectedLayoutIcon)([].concat((0, _toConsumableArray2.default)(_card.alignmentIcons), (0, _toConsumableArray2.default)(_card.wrappingIcons)),
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
selectedNode.node);
if (selectedLayoutIcon && layoutButtons.length) {
var _options = {
render: function render(props) {
return /*#__PURE__*/_react.default.createElement(_layoutGroup.LayoutGroup, (0, _extends2.default)({
layoutButtons: layoutButtons
// Ignored via go/ees005
// eslint-disable-next-line react/jsx-props-no-spreading
}, props, {
areAnyNewToolbarFlagsEnabled: areAnyNewToolbarFlagsEnabled
}));
},
width: 188,
height: 32
};
var trigger = {
id: 'media-single-layout',
testId: 'media-single-layout-dropdown-trigger',
type: 'dropdown',
options: _options,
title: intl.formatMessage(_card.layoutToMessages[selectedLayoutIcon.value]),
icon: selectedLayoutIcon.icon
};
toolbarButtons = [].concat((0, _toConsumableArray2.default)(toolbarButtons), [trigger], (0, _toConsumableArray2.default)(areAnyNewToolbarFlagsEnabled ? [] : [{
type: 'separator'
}]));
}
}
};
if ((0, _platformFeatureFlags.fg)('platform_editor_remove_media_inline_feature_flag')) {
if (allowMediaInlineImages && selectedNode) {
addLayoutDropdownToToolbar();
} else {
toolbarButtons = [].concat((0, _toConsumableArray2.default)(toolbarButtons), (0, _toConsumableArray2.default)(layoutButtons));
if (layoutButtons.length) {
toolbarButtons.push({
type: 'separator'
});
}
}
} else {
if ((0, _mediaInline.mediaInlineImagesEnabled)(allowMediaInline, allowMediaInlineImages) && selectedNode) {
addLayoutDropdownToToolbar();
} else {
toolbarButtons = [].concat((0, _toConsumableArray2.default)(toolbarButtons), (0, _toConsumableArray2.default)(layoutButtons));
if (layoutButtons.length && !areAnyNewToolbarFlagsEnabled) {
toolbarButtons.push({
type: 'separator'
});
}
}
}
// floating and inline switcher
if (pluginState.allowInlineImages && selectedNode && (0, _utils2.canShowSwitchButtons)(selectedNode.node)) {
var _selectedNode$node$fi;
// mediaInlne doesn't suppprt external images, so hiding buttons to prevent conversion from mediaSingle to mediaInline
if (((_selectedNode$node$fi = selectedNode.node.firstChild) === null || _selectedNode$node$fi === void 0 ? void 0 : _selectedNode$node$fi.attrs.type) !== 'external') {
var hasCaption = (0, _utils.contains)(selectedNode.node, state.schema.nodes.caption);
var inlineSwitcherTitle = intl.formatMessage(hasCaption ? _messages.mediaAndEmbedToolbarMessages.changeToMediaInlineImageCaptionWarning : _messages.mediaAndEmbedToolbarMessages.changeToMediaInlineImage);
var floatingSwitcherTitle = intl.formatMessage(_messages.mediaAndEmbedToolbarMessages.changeToMediaSingle);
if (!areAnyNewToolbarFlagsEnabled) {
var _pluginInjectionApi$a5;
toolbarButtons.push({
type: 'button',
id: 'editor.media.image.view.switcher.inline',
title: inlineSwitcherTitle,
icon: function icon() {
return /*#__PURE__*/_react.default.createElement(_imageInline.default, {
color: "currentColor",
spacing: "spacious",
label: inlineSwitcherTitle
});
},
onClick: (0, _commands.changeMediaSingleToMediaInline)(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a5 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a5 === void 0 ? void 0 : _pluginInjectionApi$a5.actions),
testId: 'image-inline-appearance',
selected: false
}, {
type: 'button',
id: 'editor.media.image.view.switcher.floating',
title: floatingSwitcherTitle,
icon: function icon() {
return /*#__PURE__*/_react.default.createElement(_imageFullscreen.default, {
color: "currentColor",
spacing: "spacious",
label: floatingSwitcherTitle
});
},
onClick: function onClick() {
return true;
},
testId: 'image-floating-appearance',
selected: true
}, {
type: 'separator'
});
} else {
var switchFromBlockToInline = (0, _utils2.getMediaSingleAndMediaInlineSwitcherDropdown)('block', intl, pluginInjectionApi, hasCaption);
toolbarButtons.push(switchFromBlockToInline, {
type: 'separator',
fullHeight: true
});
}
}
}
// A separator is needed regardless switcher is enabled or not
if (Boolean(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.toolbar)) {
toolbarButtons.push({
type: 'separator',
fullHeight: true
});
}
// Pixel Entry Toolbar Support
var selection = state.selection;
var isWithinTable = (0, _utils.hasParentNodeOfType)([state.schema.nodes.table])(selection);
if (allowResizing && (!isWithinTable || allowResizingInTables === true) && allowPixelResizing) {
var selectedMediaSingleNode = (0, _utils2.getSelectedMediaSingle)(state);
var sizeInput = {
type: 'custom',
fallback: [],
render: function render(editorView) {
if (!editorView || !selectedMediaSingleNode) {
return null;
}
return /*#__PURE__*/_react.default.createElement(_ui.PixelEntry, {
editorView: editorView,
intl: intl,
selectedMediaSingleNode: selectedMediaSingleNode,
pluginInjectionApi: pluginInjectionApi,
pluginState: pluginState,
hoverDecoration: hoverDecoration,
isEditorFullWidthEnabled: options.fullWidthEnabled
});
}
};
if (pluginState.isResizing) {
// If the image is resizing
// then return pixel entry component or full width label as the only toolbar item
if (!selectedMediaSingleNode) {
return [];
}
var layout = selectedMediaSingleNode.node.attrs.layout;
if (layout === 'full-width') {
var fullWidthLabel = {
type: 'custom',
fallback: [],
render: function render() {
return /*#__PURE__*/_react.default.createElement(_ui.FullWidthDisplay, {
intl: intl
});
}
};
return [fullWidthLabel];
}
return [sizeInput];
}
if (!areAnyNewToolbarFlagsEnabled) {
toolbarButtons.push(sizeInput);
toolbarButtons.push({
type: 'separator'
});
}
}
if (!areAnyNewToolbarFlagsEnabled) {
if (allowCommentsOnMedia) {
toolbarButtons.push((0, _comments.commentButton)(intl, state, pluginInjectionApi, onCommentButtonMount, createCommentExperience), {
type: 'separator',
supportsViewMode: true
});
}
if (allowLinking && (0, _linking3.shouldShowMediaLinkToolbar)(state)) {
toolbarButtons.push({
type: 'custom',
fallback: [],
render: function render(editorView, idx) {
if (editorView !== null && editorView !== void 0 && editorView.state) {
var editLink = function editLink() {
if (editorView) {
var _state = editorView.state,
dispatch = editorView.dispatch;
(0, _linking.showLinkingToolbar)(_state, dispatch);
}
};
var openLink = function openLink() {
if (editorView) {
var _pluginInjectionApi$a6;
var tr = editorView.state.tr,
dispatch = editorView.dispatch;
pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a6 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a6 === void 0 || _pluginInjectionApi$a6.actions.attachAnalyticsEvent({
eventType: _analytics.EVENT_TYPE.TRACK,
action: _analytics.ACTION.VISITED,
actionSubject: _analytics.ACTION_SUBJECT.MEDIA,
actionSubjectId: _analytics.ACTION_SUBJECT_ID.LINK
})(tr);
dispatch(tr);
return true;
}
};
return /*#__PURE__*/_react.default.createElement(_linkingToolbarAppearance.LinkToolbarAppearance, {
key: idx,
editorState: editorView.state,
intl: intl,
mediaLinkingState: mediaLinkingState,
onAddLink: editLink,
onEditLink: editLink,
onOpenLink: openLink,
isViewOnly: isViewOnly,
areAnyNewToolbarFlagsEnabled: false
});
}
return null;
},
supportsViewMode: true
});
}
// Image Editing Support
if (!!(pluginInjectionApi !== null && pluginInjectionApi !== void 0 && pluginInjectionApi.mediaEditing) && allowImageEditing && (0, _expValEquals.expValEquals)('platform_editor_add_image_editing', 'isEnabled', true)) {
var _mediaNode$attrs, _mediaNode$attrs2, _mediaNode$attrs3;
var _selectedMediaSingleNode = (0, _utils2.getSelectedMediaSingle)(state);
var mediaNode = _selectedMediaSingleNode === null || _selectedMediaSingleNode === void 0 ? void 0 : _selectedMediaSingleNode.node.content.firstChild;
// Disable image editing for external media, as we cannot save changes to external images per CORS policy
var isExternal = (mediaNode === null || mediaNode === void 0 || (_mediaNode$attrs = mediaNode.attrs) === null || _mediaNode$attrs === void 0 ? void 0 : _mediaNode$attrs.type) === 'external';
// Disable image editing for gifs as CropperJS does not support gif editing
var isGif = (mediaNode === null || mediaNode === void 0 || (_mediaNode$attrs2 = mediaNode.attrs) === null || _mediaNode$attrs2 === void 0 ? void 0 : _mediaNode$attrs2.__fileMimeType) === 'image/gif';
if (!(0, _mediaSingle.isVideo)(mediaNode === null || mediaNode === void 0 || (_mediaNode$attrs3 = mediaNode.attrs) === null || _mediaNode$attrs3 === void 0 ? void 0 : _mediaNode$attrs3.__fileMimeType) && !isExternal && !isGif) {
toolbarButtons.push({
id: 'editor.media.edit',
testId: 'image-edit-toolbar-button',
type: 'button',
icon: _imageCrop.default,
title: intl.formatMessage(_messages.default.imageEdit),
onClick: function onClick() {
var _handleShowImageEdito;
return (_handleShowImageEdito = handleShowImageEditor({
api: pluginInjectionApi,
mediaPluginState: pluginState
})) !== null && _handleShowImageEdito !== void 0 ? _handleShowImageEdito : false;
},
// Making the button more accessible
supportsViewMode: false,
isRadioButton: true,
selected: false
});
}
}
// Preview Support
if (allowImagePreview) {
var _mediaNode$attrs4;
var _selectedMediaSingleNode2 = (0, _utils2.getSelectedMediaSingle)(state);
var _mediaNode = _selectedMediaSingleNode2 === null || _selectedMediaSingleNode2 === void 0 ? void 0 : _selectedMediaSingleNode2.node.content.firstChild;
if (!(0, _mediaSingle.isVideo)(_mediaNode === null || _mediaNode === void 0 || (_mediaNode$attrs4 = _mediaNode.attrs) === null || _mediaNode$attrs4 === void 0 ? void 0 : _mediaNode$attrs4.__fileMimeType)) {
var _pluginInjectionApi$c2;
toolbarButtons.push({
id: 'editor.media.viewer',
testId: 'file-preview-toolbar-button',
type: 'button',
icon: _maximize.default,
title: intl.formatMessage(_mediaUi.messages.preview),
onClick: function onClick() {
var _handleShowMediaViewe2;
return (_handleShowMediaViewe2 = handleShowMediaViewer({
api: pluginInjectionApi,
mediaPluginState: pluginState
})) !== null && _handleShowMediaViewe2 !== void 0 ? _handleShowMediaViewe2 : false;
},
disabled: (0, _editorPluginConnectivity.isOfflineMode)(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c2 = pluginInjectionApi.connectivity) === null || _pluginInjectionApi$c2 === void 0 || (_pluginInjectionApi$c2 = _pluginInjectionApi$c2.sharedState) === null || _pluginInjectionApi$c2 === void 0 || (_pluginInjectionApi$c2 = _pluginInjectionApi$c2.currentState()) === null || _pluginInjectionApi$c2 === void 0 ? void 0 : _pluginInjectionApi$c2.mode),
supportsViewMode: true
}, {
type: 'separator',
supportsViewMode: true
});
}
}
}
}
if (isViewOnly) {
toolbarButtons.push({
id: 'editor.media.image.download',
type: 'button',
icon: _download.default,
onClick: function onClick() {
(0, _utils2.downloadMedia)(pluginState, isViewOnly);
return true;
},
disabled: disableDownloadButton,
title: intl.formatMessage(_mediaUi.messages.download),
supportsViewMode: true
}, {
type: 'separator',
supportsViewMode: true
});
}
if (!areAnyNewToolbarFlagsEnabled) {
var _pluginInjectionApi$a8;
if (allowAltTextOnImages) {
var _pluginInjectionApi$a7;
toolbarButtons.push((0, _altText2.altTextButton)(intl, state, pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a7 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a7 === void 0 ? void 0 : _pluginInjectionApi$a7.actions), {
type: 'separator'
});
}
var removeButton = {
id: 'editor.media.delete',
type: 'button',
appearance: 'danger',
focusEditoronEnter: true,
icon: _delete.default,
onMouseEnter: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(mediaSingle, true),
onMouseLeave: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(mediaSingle, false),
onFocus: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(mediaSingle, true),
onBlur: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(mediaSingle, false),
title: intl.formatMessage(_messages.default.remove),
onClick: removeWithAnalytics(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a8 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a8 === void 0 ? void 0 : _pluginInjectionApi$a8.actions),
testId: 'media-toolbar-remove-button',
supportsViewMode: false
};
var items = [].concat((0, _toConsumableArray2.default)(toolbarButtons), [{
type: 'copy-button',
items: [{
state: state,
formatMessage: intl.formatMessage,
nodeType: mediaSingle
}],
supportsViewMode: true
}]);
items.push({
type: 'separator',
supportsViewMode: false
});
items.push(removeButton);
return items;
} else {
// Preview Support
if (allowAdvancedToolBarOptions && allowImagePreview) {
var _mediaNode2$attrs;
var _selectedMediaSingleNode3 = (0, _utils2.getSelectedMediaSingle)(state);
var _mediaNode2 = _selectedMediaSingleNode3 === null || _selectedMediaSingleNode3 === void 0 ? void 0 : _selectedMediaSingleNode3.node.content.firstChild;
if (!(0, _mediaSingle.isVideo)(_mediaNode2 === null || _mediaNode2 === void 0 || (_mediaNode2$attrs = _mediaNode2.attrs) === null || _mediaNode2$attrs === void 0 ? void 0 : _mediaNode2$attrs.__fileMimeType)) {
var _pluginInjectionApi$c3;
toolbarButtons.push({
id: 'editor.media.viewer',
testId: 'file-preview-toolbar-button',
type: 'button',
icon: _growDiagonal.default,
title: intl.formatMessage(_mediaUi.messages.preview),
onClick: function onClick() {
var _handleShowMediaViewe3;
return (_handleShowMediaViewe3 = handleShowMediaViewer({
api: pluginInjectionApi,
mediaPluginState: pluginState
})) !== null && _handleShowMediaViewe3 !== void 0 ? _handleShowMediaViewe3 : false;
},
disabled: (0, _editorPluginConnectivity.isOfflineMode)(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$c3 = pluginInjectionApi.connectivity) === null || _pluginInjectionApi$c3 === void 0 || (_pluginInjectionApi$c3 = _pluginInjectionApi$c3.sharedState) === null || _pluginInjectionApi$c3 === void 0 || (_pluginInjectionApi$c3 = _pluginInjectionApi$c3.currentState()) === null || _pluginInjectionApi$c3 === void 0 ? void 0 : _pluginInjectionApi$c3.mode),
supportsViewMode: true
}, {
type: 'separator',
supportsViewMode: true
});
}
}
if (allowAdvancedToolBarOptions && allowImageEditing && (0, _expValEquals.expValEquals)('platform_editor_add_image_editing', 'isEnabled', true)) {
var _mediaNode3$attrs, _mediaNode3$attrs2, _mediaNode3$attrs3;
var _selectedMediaSingleNode4 = (0, _utils2.getSelectedMediaSingle)(state);
var _mediaNode3 = _selectedMediaSingleNode4 === null || _selectedMediaSingleNode4 === void 0 ? void 0 : _selectedMediaSingleNode4.node.content.firstChild;
// Disable image editing for external media, as we cannot save changes to external images per CORS policy
var _isExternal = (_mediaNode3 === null || _mediaNode3 === void 0 || (_mediaNode3$attrs = _mediaNode3.attrs) === null || _mediaNode3$attrs === void 0 ? void 0 : _mediaNode3$attrs.type) === 'external';
// Disable image editing for gifs as CropperJS does not support gif editing
var _isGif = (_mediaNode3 === null || _mediaNode3 === void 0 || (_mediaNode3$attrs2 = _mediaNode3.attrs) === null || _mediaNode3$attrs2 === void 0 ? void 0 : _mediaNode3$attrs2.__fileMimeType) === 'image/gif';
if (!(0, _mediaSingle.isVideo)(_mediaNode3 === null || _mediaNode3 === void 0 || (_mediaNode3$attrs3 = _mediaNode3.attrs) === null || _mediaNode3$attrs3 === void 0 ? void 0 : _mediaNode3$attrs3.__fileMimeType) && !_isExternal && !_isGif) {
toolbarButtons.push({
id: 'editor.media.edit',
testId: 'image-edit-toolbar-button',
type: 'button',
icon: _imageCrop.default,
title: intl.formatMessage(_messages.default.imageEdit),
onClick: function onClick() {
var _handleShowImageEdito2;
return (_handleShowImageEdito2 = handleShowImageEditor({
api: pluginInjectionApi,
mediaPluginState: pluginState
})) !== null && _handleShowImageEdito2 !== void 0 ? _handleShowImageEdito2 : false;
},
supportsViewMode: false
}, {
type: 'separator',
supportsViewMode: false
});
}
}
// open link
if (allowLinking && (0, _linking3.shouldShowMediaLinkToolbar)(state) && mediaLinkingState && mediaLinkingState.editable) {
toolbarButtons.push((0, _linking3.getOpenLinkToolbarButtonOption)(intl, mediaLinkingState, pluginInjectionApi), {
type: 'separator',
supportsViewMode: true
});
}
isViewOnly && toolbarButtons.push({
type: 'copy-button',
items: [{
state: state,
formatMessage: intl.formatMessage,
nodeType: mediaSingle
}],
supportsViewMode: true
}, {
type: 'separator',
supportsViewMode: true
});
if (allowAdvancedToolBarOptions && allowCommentsOnMedia) {
(0, _utils2.updateToFullHeightSeparator)(toolbarButtons);
toolbarButtons.push((0, _comments.commentButton)(intl, state, pluginInjectionApi, onCommentButtonMount, createCommentExperience));
}
return toolbarButtons;
}
};
var getMediaTypeMessage = function getMediaTypeMessage(selectedNodeTypeSingle) {
var mediaType = Object.keys(mediaTypeMessages).find(function (key) {
return selectedNodeTypeSingle === null || selectedNodeTypeSingle === void 0 ? void 0 : selectedNodeTypeSingle.includes(key);
});
return mediaType ? mediaTypeMessages[mediaType] : _mediaUi.messages.file_unknown_is_selected;
};
var overflowDropdwonBtnTriggerTestId = exports.overflowDropdwonBtnTriggerTestId = 'media-overflow-dropdown-trigger';
var isMediaSelection = function isMediaSelection(selection, nodeType) {
if (selection instanceof _state2.NodeSelection) {
return nodeType.includes(selection.node.type);
}
return false;
};
var floatingToolbar = exports.floatingToolbar = function floatingToolbar(state, intl) {
var _pluginInjectionApi$d3, _pluginInjectionApi$d4;
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
var pluginInjectionApi = arguments.length > 3 ? arguments[3] : undefined;
var _state$schema$nodes = state.schema.nodes,
media = _state$schema$nodes.media,
mediaInline = _state$schema$nodes.mediaInline,
mediaSingle = _state$schema$nodes.mediaSingle,
mediaGroup = _state$schema$nodes.mediaGroup;
var altTextValidator = options.altTextValidator,
allowLinking = options.allowLinking,
allowAltTextOnImages = options.allowAltTextOnImages,
providerFactory = options.providerFactory,
allowMediaInlineImages = options.allowMediaInlineImages,
allowResizing = options.allowResizing,
isViewOnly = options.isViewOnly,
allowResizingInTables = options.allowResizingInTables,
allowAdvancedToolBarOptions = options.allowAdvancedToolBarOptions,
allowPixelResizing = options.allowPixelResizing;
var allowMediaInline = options.allowMediaInline;
allowMediaInline = (0, _platformFeatureFlags.fg)('platform_editor_remove_media_inline_feature_flag') ? allowMediaInlineImages : allowMediaInline;
var mediaPluginState = _pluginKey.stateKey.getState(state);
var mediaLinkingState = (0, _linking2.getMediaLinkingState)(state);
var _ref4 = (_pluginInjectionApi$d3 = pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$d4 = pluginInjectionApi.decorations) === null || _pluginInjectionApi$d4 === void 0 ? void 0 : _pluginInjectionApi$d4.actions) !== null && _pluginInjectionApi$d3 !== void 0 ? _pluginInjectionApi$d3 : {},
hoverDecoration = _ref4.hoverDecoration;
if (!mediaPluginState) {
return;
}
var nodeType = allowMediaInline ? [mediaInline, mediaSingle, media] : [mediaSingle];
var isSelectedNodeMediaSingle = state.selection instanceof _state2.NodeSelection && state.selection.node.type === mediaSingle;
if (!isMediaSelection(state.selection, nodeType)) {
return;
}
var baseToolbar = {
title: 'Media floating controls',
nodeType: nodeType,
getDomRef: function getDomRef() {
var _mediaPluginState$ele;
var element = isSelectedNodeMediaSingle ? ((_mediaPluginState$ele = mediaPluginState.element) === null || _mediaPluginState$ele === void 0 ? void 0 : _mediaPluginState$ele.querySelector(".".concat(_styles.MediaSingleNodeSelector))) || mediaPluginState.element : mediaPluginState.element;
return element;
}
};
if (allowLinking && mediaLinkingState && mediaLinkingState.visible && (0, _linking3.shouldShowMediaLinkToolbar)(state)) {
var linkingToolbar = (0, _linking3.getLinkingToolbar)(baseToolbar, mediaLinkingState, state, intl, pluginInjectionApi, providerFactory);
if (linkingToolbar) {
return linkingToolbar;
}
}
// testId is required to show focus on trigger button on ESC key press
// see hideOnEsc in platform/packages/editor/editor-plugin-floating-toolbar/src/ui/Dropdown.tsx
var overflowButtonSelector = (0, _toolbarFlagCheck.areToolbarFlagsEnabled)(Boolean(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.toolbar)) ? "[data-testid=\"".concat(overflowDropdwonBtnTriggerTestId, "\"]") : undefined;
if (allowAltTextOnImages) {
var mediaAltTextPluginState = (0, _altText.getPluginState)(state);
if (mediaAltTextPluginState.isAltTextEditorOpen) {
var _pluginInjectionApi$f;
return (0, _altText2.getAltTextToolbar)(baseToolbar, {
altTextValidator: altTextValidator,
forceFocusSelector: pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$f = pluginInjectionApi.floatingToolbar) === null || _pluginInjectionApi$f === void 0 || (_pluginInjectionApi$f = _pluginInjectionApi$f.actions) === null || _pluginInjectionApi$f === void 0 ? void 0 : _pluginInjectionApi$f.forceFocusSelector,
triggerButtonSelector: overflowButtonSelector,
areAnyNewToolbarFlagsEnabled: (0, _toolbarFlagCheck.areToolbarFlagsEnabled)(Boolean(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.toolbar))
});
}
}
var selection = state.selection;
var isWithinTable = (0, _utils.hasParentNodeOfType)([state.schema.nodes.table])(selection);
if (allowAdvancedToolBarOptions && allowResizing && (!isWithinTable || allowResizingInTables === true) && allowPixelResizing && (0, _toolbarFlagCheck.areToolbarFlagsEnabled)(Boolean(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.toolbar))) {
var mediaPixelResizingPluginState = (0, _pixelResizing.getPluginState)(state);
if (mediaPixelResizingPluginState !== null && mediaPixelResizingPluginState !== void 0 && mediaPixelResizingPluginState.isPixelEditorOpen) {
return (0, _pixelResizing2.getPixelResizingToolbar)(baseToolbar, {
intl: intl,
pluginInjectionApi: pluginInjectionApi,
pluginState: mediaPluginState,
hoverDecoration: hoverDecoration,
isEditorFullWidthEnabled: options.fullWidthEnabled,
triggerButtonSelector: overflowButtonSelector
});
}
}
var items = [];
var parentMediaGroupNode = (0, _utils.findParentNodeOfType)(mediaGroup)(state.selection);
var selectedNodeType;
if (state.selection instanceof _state2.NodeSelection) {
selectedNodeType = state.selection.node.type;
}
if (allowMediaInline && (parentMediaGroupNode === null || parentMediaGroupNode === void 0 ? void 0 : parentMediaGroupNode.node.type) === mediaGroup) {
var _pluginInjectionApi$a9, _pluginInjectionApi$f2;
var mediaOffset = state.selection.$from.parentOffset + 1;
baseToolbar.getDomRef = function () {
var _mediaPluginState$ele2;
var selector = (0, _mediaFilmstrip.mediaFilmstripItemDOMSelector)(mediaOffset);
// Ignored via go/ees005
// eslint-disable-next-line @atlaskit/editor/no-as-casting
return (_mediaPluginState$ele2 = mediaPluginState.element) === null || _mediaPluginState$ele2 === void 0 ? void 0 : _mediaPluginState$ele2.querySelector(selector);
};
items = generateMediaCardFloatingToolbar(state, intl, mediaPluginState, hoverDecoration, pluginInjectionApi, pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a9 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a9 === void 0 ? void 0 : _pluginInjectionApi$a9.actions, pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$f2 = pluginInjectionApi.floatingToolbar) === null || _pluginInjectionApi$f2 === void 0 || (_pluginInjectionApi$f2 = _pluginInjectionApi$f2.actions) === null || _pluginInjectionApi$f2 === void 0 ? void 0 : _pluginInjectionApi$f2.forceFocusSelector, isViewOnly);
} else if (allowMediaInline && selectedNodeType && selectedNodeType === mediaInline) {
items = (0, _mediaInline2.generateMediaInlineFloatingToolbar)(state, intl, mediaPluginState, hoverDecoration, pluginInjectionApi, options);
} else {
baseToolbar.getDomRef = function () {
var _mediaPluginState$ele3;
// Ignored via go/ees005
// eslint-disable-next-line @atlaskit/editor/no-as-casting
var element = (_mediaPluginState$ele3 = mediaPluginState.element) === null || _mediaPluginState$ele3 === void 0 ? void 0 : _mediaPluginState$ele3.querySelector(".".concat(_styles.MediaSingleNodeSelector));
return element || mediaPluginState.element;
};
items = generateMediaSingleFloatingToolbar(state, intl, options, mediaPluginState, mediaLinkingState, pluginInjectionApi);
}
if (!mediaPluginState.isResizing && (0, _toolbarFlagCheck.areToolbarFlagsEnabled)(Boolean(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.toolbar))) {
var _pluginInjectionApi$a0, _pluginInjectionApi$a1, _pluginInjectionApi$a10;
(0, _utils2.updateToFullHeightSeparator)(items);
var customOptions = [].concat((0, _toConsumableArray2.default)((0, _linking3.getLinkingDropdownOptions)(state, intl, mediaLinkingState, allowMediaInline && selectedNodeType && selectedNodeType === mediaInline, allowLinking, isViewOnly)), (0, _toConsumableArray2.default)((0, _altText2.getAltTextDropdownOption)(state, intl.formatMessage, allowAltTextOnImages, selectedNodeType, pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a0 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a0 === void 0 ? void 0 : _pluginInjectionApi$a0.actions)), (0, _toConsumableArray2.default)((0, _pixelResizing2.getResizeDropdownOption)(options, state, intl.formatMessage, selectedNodeType)));
if (customOptions.length) {
customOptions.push({
type: 'separator'
});
}
var hoverDecorationProps = function hoverDecorationProps(nodeType, className) {
return {
onMouseEnter: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(nodeType, true, className),
onMouseLeave: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(nodeType, false, className),
onFocus: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(nodeType, true, className),
onBlur: hoverDecoration === null || hoverDecoration === void 0 ? void 0 : hoverDecoration(nodeType, false, className)
};
};
items.push({
type: 'overflow-dropdown