@atlaskit/editor-plugin-media 5.1.3 → 5.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +19 -0
- package/dist/cjs/ui/toolbar/index.js +16 -3
- package/dist/cjs/ui/toolbar/mediaInline.js +2 -0
- package/dist/cjs/ui/toolbar/utils.js +6 -1
- package/dist/es2019/ui/toolbar/index.js +17 -4
- package/dist/es2019/ui/toolbar/mediaInline.js +3 -1
- package/dist/es2019/ui/toolbar/utils.js +5 -0
- package/dist/esm/ui/toolbar/index.js +17 -4
- package/dist/esm/ui/toolbar/mediaInline.js +3 -1
- package/dist/esm/ui/toolbar/utils.js +5 -0
- package/dist/types/ui/toolbar/utils.d.ts +1 -0
- package/dist/types-ts4.5/ui/toolbar/utils.d.ts +1 -0
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,24 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-media
|
|
2
2
|
|
|
3
|
+
## 5.1.5
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#184968](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/184968)
|
|
8
|
+
[`a52007f9eed36`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a52007f9eed36) -
|
|
9
|
+
Introduce a performance experiment to avoid running media floating toolbar code unless selected.
|
|
10
|
+
- Updated dependencies
|
|
11
|
+
|
|
12
|
+
## 5.1.4
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- [#184004](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/pull-requests/184004)
|
|
17
|
+
[`a08a65a80b5a3`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/a08a65a80b5a3) -
|
|
18
|
+
[ux] Ensure data security policy enforced for download buttons in mediaInline and mediaSingle
|
|
19
|
+
floating toolbars
|
|
20
|
+
- Updated dependencies
|
|
21
|
+
|
|
3
22
|
## 5.1.3
|
|
4
23
|
|
|
5
24
|
### Patch Changes
|
|
@@ -29,6 +29,7 @@ var _smartLinkCard = _interopRequireDefault(require("@atlaskit/icon/core/smart-l
|
|
|
29
29
|
var _mediaFilmstrip = require("@atlaskit/media-filmstrip");
|
|
30
30
|
var _mediaUi = require("@atlaskit/media-ui");
|
|
31
31
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
32
|
+
var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
|
|
32
33
|
var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
|
|
33
34
|
var _styles = require("../../nodeviews/styles");
|
|
34
35
|
var _altText = require("../../pm-plugins/alt-text");
|
|
@@ -120,9 +121,8 @@ var handleShowMediaViewer = exports.handleShowMediaViewer = function handleShowM
|
|
|
120
121
|
api === null || api === void 0 || api.core.actions.execute(api === null || api === void 0 ? void 0 : api.media.commands.showMediaViewer(selectedNodeAttrs));
|
|
121
122
|
};
|
|
122
123
|
var generateMediaCardFloatingToolbar = function generateMediaCardFloatingToolbar(state, intl, mediaPluginState, hoverDecoration, pluginInjectionApi, editorAnalyticsAPI, forceFocusSelector, isViewOnly) {
|
|
123
|
-
var
|
|
124
|
-
var
|
|
125
|
-
var disableDownloadButton = typeof enforceMediaDataSecurityPolicy === 'boolean' ? enforceMediaDataSecurityPolicy : false;
|
|
124
|
+
var _pluginInjectionApi$c;
|
|
125
|
+
var disableDownloadButton = (0, _utils2.getIsDownloadDisabledByDataSecurityPolicy)(mediaPluginState);
|
|
126
126
|
var isEditorControlsEnabled = (0, _experiments.editorExperiment)('platform_editor_controls', 'variant1');
|
|
127
127
|
var preview = {
|
|
128
128
|
id: 'editor.media.viewer',
|
|
@@ -279,6 +279,7 @@ var generateMediaSingleFloatingToolbar = function generateMediaSingleFloatingToo
|
|
|
279
279
|
var _ref2 = (_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 : {},
|
|
280
280
|
hoverDecoration = _ref2.hoverDecoration;
|
|
281
281
|
var isEditorControlsEnabled = (0, _experiments.editorExperiment)('platform_editor_controls', 'variant1');
|
|
282
|
+
var disableDownloadButton = (0, _utils2.getIsDownloadDisabledByDataSecurityPolicy)(pluginState);
|
|
282
283
|
if ((0, _imageBorder.shouldShowImageBorder)(state)) {
|
|
283
284
|
toolbarButtons.push({
|
|
284
285
|
type: 'custom',
|
|
@@ -576,6 +577,7 @@ var generateMediaSingleFloatingToolbar = function generateMediaSingleFloatingToo
|
|
|
576
577
|
(0, _utils2.downloadMedia)(pluginState, isViewOnly);
|
|
577
578
|
return true;
|
|
578
579
|
},
|
|
580
|
+
disabled: disableDownloadButton,
|
|
579
581
|
title: intl.formatMessage(_mediaUi.messages.download),
|
|
580
582
|
supportsViewMode: true
|
|
581
583
|
}, {
|
|
@@ -684,6 +686,12 @@ var getMediaTypeMessage = function getMediaTypeMessage(selectedNodeTypeSingle) {
|
|
|
684
686
|
return mediaType ? mediaTypeMessages[mediaType] : _mediaUi.messages.file_unknown_is_selected;
|
|
685
687
|
};
|
|
686
688
|
var overflowDropdwonBtnTriggerTestId = exports.overflowDropdwonBtnTriggerTestId = 'media-overflow-dropdown-trigger';
|
|
689
|
+
var isMediaSelection = function isMediaSelection(selection, nodeType) {
|
|
690
|
+
if (selection instanceof _state2.NodeSelection) {
|
|
691
|
+
return nodeType.includes(selection.node.type);
|
|
692
|
+
}
|
|
693
|
+
return false;
|
|
694
|
+
};
|
|
687
695
|
var floatingToolbar = exports.floatingToolbar = function floatingToolbar(state, intl) {
|
|
688
696
|
var _pluginInjectionApi$d3, _pluginInjectionApi$d4;
|
|
689
697
|
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
@@ -714,6 +722,11 @@ var floatingToolbar = exports.floatingToolbar = function floatingToolbar(state,
|
|
|
714
722
|
}
|
|
715
723
|
var nodeType = allowMediaInline ? [mediaInline, mediaSingle, media] : [mediaSingle];
|
|
716
724
|
var isSelectedNodeMediaSingle = state.selection instanceof _state2.NodeSelection && state.selection.node.type === mediaSingle;
|
|
725
|
+
if ((0, _expValEquals.expValEquals)('platform_editor_media_floating_toolbar_early_exit', 'isEnabled', true)) {
|
|
726
|
+
if (!isMediaSelection(state.selection, nodeType)) {
|
|
727
|
+
return;
|
|
728
|
+
}
|
|
729
|
+
}
|
|
717
730
|
var baseToolbar = {
|
|
718
731
|
title: 'Media floating controls',
|
|
719
732
|
nodeType: nodeType,
|
|
@@ -64,6 +64,7 @@ var generateMediaInlineFloatingToolbar = exports.generateMediaInlineFloatingTool
|
|
|
64
64
|
}, isEditorControlsEnabled && {
|
|
65
65
|
supportsViewMode: true
|
|
66
66
|
});
|
|
67
|
+
var disableDownloadButton = (0, _utils.getIsDownloadDisabledByDataSecurityPolicy)(mediaPluginState);
|
|
67
68
|
var download = _objectSpread({
|
|
68
69
|
id: 'editor.media.card.download',
|
|
69
70
|
type: 'button',
|
|
@@ -72,6 +73,7 @@ var generateMediaInlineFloatingToolbar = exports.generateMediaInlineFloatingTool
|
|
|
72
73
|
(0, _utils.downloadMedia)(mediaPluginState);
|
|
73
74
|
return true;
|
|
74
75
|
},
|
|
76
|
+
disabled: disableDownloadButton,
|
|
75
77
|
title: intl.formatMessage(_mediaUi.messages.download)
|
|
76
78
|
}, isEditorControlsEnabled && {
|
|
77
79
|
supportsViewMode: true
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.updateToFullHeightSeparator = exports.removeMediaGroupNode = exports.isExternalMedia = exports.getSelectedNearestMediaContainerNodeAttrsFunction = exports.getSelectedNearestMediaContainerNodeAttrs = exports.getSelectedMediaSingle = exports.getSelectedLayoutIcon = exports.getPixelWidthOfElement = exports.getMediaSingleAndMediaInlineSwitcherDropdown = exports.getMaxToolbarWidth = exports.downloadMedia = exports.canShowSwitchButtons = exports.calcNewLayout = void 0;
|
|
7
|
+
exports.updateToFullHeightSeparator = exports.removeMediaGroupNode = exports.isExternalMedia = exports.getSelectedNearestMediaContainerNodeAttrsFunction = exports.getSelectedNearestMediaContainerNodeAttrs = exports.getSelectedMediaSingle = exports.getSelectedLayoutIcon = exports.getPixelWidthOfElement = exports.getMediaSingleAndMediaInlineSwitcherDropdown = exports.getMaxToolbarWidth = exports.getIsDownloadDisabledByDataSecurityPolicy = exports.downloadMedia = exports.canShowSwitchButtons = exports.calcNewLayout = void 0;
|
|
8
8
|
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
9
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
10
10
|
var _react = _interopRequireDefault(require("react"));
|
|
@@ -49,6 +49,11 @@ var getSelectedNearestMediaContainerNodeAttrsFunction = exports.getSelectedNeare
|
|
|
49
49
|
var getSelectedNearestMediaContainerNodeAttrs = exports.getSelectedNearestMediaContainerNodeAttrs = function getSelectedNearestMediaContainerNodeAttrs(mediaPluginState) {
|
|
50
50
|
return getSelectedNearestMediaContainerNodeAttrsFunction(mediaPluginState.selectedMediaContainerNode);
|
|
51
51
|
};
|
|
52
|
+
var getIsDownloadDisabledByDataSecurityPolicy = exports.getIsDownloadDisabledByDataSecurityPolicy = function getIsDownloadDisabledByDataSecurityPolicy(mediaPluginState) {
|
|
53
|
+
var _mediaPluginState$med;
|
|
54
|
+
var enforceMediaDataSecurityPolicy = mediaPluginState === null || mediaPluginState === void 0 || (_mediaPluginState$med = mediaPluginState.mediaClientConfig) === null || _mediaPluginState$med === void 0 ? void 0 : _mediaPluginState$med.enforceDataSecurityPolicy;
|
|
55
|
+
return typeof enforceMediaDataSecurityPolicy === 'boolean' ? enforceMediaDataSecurityPolicy : false;
|
|
56
|
+
};
|
|
52
57
|
var downloadMedia = exports.downloadMedia = /*#__PURE__*/function () {
|
|
53
58
|
var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(mediaPluginState, isViewMode) {
|
|
54
59
|
var selectedNodeAttrs, id, _selectedNodeAttrs$co, collection, mediaClient, fileState, fileName;
|
|
@@ -19,6 +19,7 @@ import SmartLinkCardIcon from '@atlaskit/icon/core/smart-link-card';
|
|
|
19
19
|
import { mediaFilmstripItemDOMSelector } from '@atlaskit/media-filmstrip';
|
|
20
20
|
import { messages } from '@atlaskit/media-ui';
|
|
21
21
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
22
|
+
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
22
23
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
23
24
|
import { MediaSingleNodeSelector } from '../../nodeviews/styles';
|
|
24
25
|
import { getPluginState as getMediaAltTextPluginState } from '../../pm-plugins/alt-text';
|
|
@@ -39,7 +40,7 @@ import { getLinkingDropdownOptions, getLinkingToolbar, getOpenLinkToolbarButtonO
|
|
|
39
40
|
import { LinkToolbarAppearance } from './linking-toolbar-appearance';
|
|
40
41
|
import { generateMediaInlineFloatingToolbar } from './mediaInline';
|
|
41
42
|
import { getPixelResizingToolbar, getResizeDropdownOption } from './pixel-resizing';
|
|
42
|
-
import { canShowSwitchButtons, downloadMedia, getMaxToolbarWidth, getMediaSingleAndMediaInlineSwitcherDropdown, getSelectedLayoutIcon, getSelectedMediaSingle, getSelectedNearestMediaContainerNodeAttrs, removeMediaGroupNode, updateToFullHeightSeparator } from './utils';
|
|
43
|
+
import { canShowSwitchButtons, downloadMedia, getIsDownloadDisabledByDataSecurityPolicy, getMaxToolbarWidth, getMediaSingleAndMediaInlineSwitcherDropdown, getSelectedLayoutIcon, getSelectedMediaSingle, getSelectedNearestMediaContainerNodeAttrs, removeMediaGroupNode, updateToFullHeightSeparator } from './utils';
|
|
43
44
|
const mediaTypeMessages = {
|
|
44
45
|
image: messages.file_image_is_selected,
|
|
45
46
|
video: messages.file_video_is_selected,
|
|
@@ -108,9 +109,8 @@ export const handleShowMediaViewer = ({
|
|
|
108
109
|
api === null || api === void 0 ? void 0 : api.core.actions.execute(api === null || api === void 0 ? void 0 : api.media.commands.showMediaViewer(selectedNodeAttrs));
|
|
109
110
|
};
|
|
110
111
|
const generateMediaCardFloatingToolbar = (state, intl, mediaPluginState, hoverDecoration, pluginInjectionApi, editorAnalyticsAPI, forceFocusSelector, isViewOnly) => {
|
|
111
|
-
var
|
|
112
|
-
const
|
|
113
|
-
const disableDownloadButton = typeof enforceMediaDataSecurityPolicy === 'boolean' ? enforceMediaDataSecurityPolicy : false;
|
|
112
|
+
var _pluginInjectionApi$c, _pluginInjectionApi$c2, _pluginInjectionApi$c3;
|
|
113
|
+
const disableDownloadButton = getIsDownloadDisabledByDataSecurityPolicy(mediaPluginState);
|
|
114
114
|
const isEditorControlsEnabled = editorExperiment('platform_editor_controls', 'variant1');
|
|
115
115
|
const preview = {
|
|
116
116
|
id: 'editor.media.viewer',
|
|
@@ -269,6 +269,7 @@ const generateMediaSingleFloatingToolbar = (state, intl, options, pluginState, m
|
|
|
269
269
|
hoverDecoration
|
|
270
270
|
} = (_pluginInjectionApi$d = pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$d2 = pluginInjectionApi.decorations) === null || _pluginInjectionApi$d2 === void 0 ? void 0 : _pluginInjectionApi$d2.actions) !== null && _pluginInjectionApi$d !== void 0 ? _pluginInjectionApi$d : {};
|
|
271
271
|
const isEditorControlsEnabled = editorExperiment('platform_editor_controls', 'variant1');
|
|
272
|
+
const disableDownloadButton = getIsDownloadDisabledByDataSecurityPolicy(pluginState);
|
|
272
273
|
if (shouldShowImageBorder(state)) {
|
|
273
274
|
toolbarButtons.push({
|
|
274
275
|
type: 'custom',
|
|
@@ -574,6 +575,7 @@ const generateMediaSingleFloatingToolbar = (state, intl, options, pluginState, m
|
|
|
574
575
|
downloadMedia(pluginState, isViewOnly);
|
|
575
576
|
return true;
|
|
576
577
|
},
|
|
578
|
+
disabled: disableDownloadButton,
|
|
577
579
|
title: intl.formatMessage(messages.download),
|
|
578
580
|
supportsViewMode: true
|
|
579
581
|
}, {
|
|
@@ -680,6 +682,12 @@ const getMediaTypeMessage = selectedNodeTypeSingle => {
|
|
|
680
682
|
return mediaType ? mediaTypeMessages[mediaType] : messages.file_unknown_is_selected;
|
|
681
683
|
};
|
|
682
684
|
export const overflowDropdwonBtnTriggerTestId = 'media-overflow-dropdown-trigger';
|
|
685
|
+
const isMediaSelection = (selection, nodeType) => {
|
|
686
|
+
if (selection instanceof NodeSelection) {
|
|
687
|
+
return nodeType.includes(selection.node.type);
|
|
688
|
+
}
|
|
689
|
+
return false;
|
|
690
|
+
};
|
|
683
691
|
export const floatingToolbar = (state, intl, options = {}, pluginInjectionApi) => {
|
|
684
692
|
var _pluginInjectionApi$d3, _pluginInjectionApi$d4;
|
|
685
693
|
const {
|
|
@@ -714,6 +722,11 @@ export const floatingToolbar = (state, intl, options = {}, pluginInjectionApi) =
|
|
|
714
722
|
}
|
|
715
723
|
const nodeType = allowMediaInline ? [mediaInline, mediaSingle, media] : [mediaSingle];
|
|
716
724
|
const isSelectedNodeMediaSingle = state.selection instanceof NodeSelection && state.selection.node.type === mediaSingle;
|
|
725
|
+
if (expValEquals('platform_editor_media_floating_toolbar_early_exit', 'isEnabled', true)) {
|
|
726
|
+
if (!isMediaSelection(state.selection, nodeType)) {
|
|
727
|
+
return;
|
|
728
|
+
}
|
|
729
|
+
}
|
|
717
730
|
const baseToolbar = {
|
|
718
731
|
title: 'Media floating controls',
|
|
719
732
|
nodeType,
|
|
@@ -21,7 +21,7 @@ import { changeInlineToMediaCard, changeMediaInlineToMediaSingle, removeInlineCa
|
|
|
21
21
|
import { shouldShowImageBorder } from './imageBorder';
|
|
22
22
|
import { getOpenLinkToolbarButtonOption, shouldShowMediaLinkToolbar } from './linking';
|
|
23
23
|
import { LinkToolbarAppearance } from './linking-toolbar-appearance';
|
|
24
|
-
import { downloadMedia, getMediaSingleAndMediaInlineSwitcherDropdown } from './utils';
|
|
24
|
+
import { downloadMedia, getIsDownloadDisabledByDataSecurityPolicy, getMediaSingleAndMediaInlineSwitcherDropdown } from './utils';
|
|
25
25
|
import { handleShowMediaViewer } from './index';
|
|
26
26
|
export const generateMediaInlineFloatingToolbar = (state, intl, mediaPluginState, hoverDecoration, pluginInjectionApi, options = {}) => {
|
|
27
27
|
var _pluginInjectionApi$a, _pluginInjectionApi$f, _pluginInjectionApi$f2;
|
|
@@ -54,6 +54,7 @@ export const generateMediaInlineFloatingToolbar = (state, intl, mediaPluginState
|
|
|
54
54
|
supportsViewMode: true
|
|
55
55
|
})
|
|
56
56
|
};
|
|
57
|
+
const disableDownloadButton = getIsDownloadDisabledByDataSecurityPolicy(mediaPluginState);
|
|
57
58
|
const download = {
|
|
58
59
|
id: 'editor.media.card.download',
|
|
59
60
|
type: 'button',
|
|
@@ -62,6 +63,7 @@ export const generateMediaInlineFloatingToolbar = (state, intl, mediaPluginState
|
|
|
62
63
|
downloadMedia(mediaPluginState);
|
|
63
64
|
return true;
|
|
64
65
|
},
|
|
66
|
+
disabled: disableDownloadButton,
|
|
65
67
|
title: intl.formatMessage(messages.download),
|
|
66
68
|
...(isEditorControlsEnabled && {
|
|
67
69
|
supportsViewMode: true
|
|
@@ -40,6 +40,11 @@ export const getSelectedNearestMediaContainerNodeAttrsFunction = selectedMediaCo
|
|
|
40
40
|
export const getSelectedNearestMediaContainerNodeAttrs = mediaPluginState => {
|
|
41
41
|
return getSelectedNearestMediaContainerNodeAttrsFunction(mediaPluginState.selectedMediaContainerNode);
|
|
42
42
|
};
|
|
43
|
+
export const getIsDownloadDisabledByDataSecurityPolicy = mediaPluginState => {
|
|
44
|
+
var _mediaPluginState$med;
|
|
45
|
+
const enforceMediaDataSecurityPolicy = mediaPluginState === null || mediaPluginState === void 0 ? void 0 : (_mediaPluginState$med = mediaPluginState.mediaClientConfig) === null || _mediaPluginState$med === void 0 ? void 0 : _mediaPluginState$med.enforceDataSecurityPolicy;
|
|
46
|
+
return typeof enforceMediaDataSecurityPolicy === 'boolean' ? enforceMediaDataSecurityPolicy : false;
|
|
47
|
+
};
|
|
43
48
|
export const downloadMedia = async (mediaPluginState, isViewMode) => {
|
|
44
49
|
try {
|
|
45
50
|
const selectedNodeAttrs = isViewMode ? getSelectedNearestMediaContainerNodeAttrs(mediaPluginState) : getSelectedMediaContainerNodeAttrs(mediaPluginState);
|
|
@@ -23,6 +23,7 @@ import SmartLinkCardIcon from '@atlaskit/icon/core/smart-link-card';
|
|
|
23
23
|
import { mediaFilmstripItemDOMSelector } from '@atlaskit/media-filmstrip';
|
|
24
24
|
import { messages } from '@atlaskit/media-ui';
|
|
25
25
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
26
|
+
import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
|
|
26
27
|
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
27
28
|
import { MediaSingleNodeSelector } from '../../nodeviews/styles';
|
|
28
29
|
import { getPluginState as getMediaAltTextPluginState } from '../../pm-plugins/alt-text';
|
|
@@ -43,7 +44,7 @@ import { getLinkingDropdownOptions, getLinkingToolbar, getOpenLinkToolbarButtonO
|
|
|
43
44
|
import { LinkToolbarAppearance } from './linking-toolbar-appearance';
|
|
44
45
|
import { generateMediaInlineFloatingToolbar } from './mediaInline';
|
|
45
46
|
import { getPixelResizingToolbar, getResizeDropdownOption } from './pixel-resizing';
|
|
46
|
-
import { canShowSwitchButtons, downloadMedia, getMaxToolbarWidth, getMediaSingleAndMediaInlineSwitcherDropdown, getSelectedLayoutIcon, getSelectedMediaSingle, getSelectedNearestMediaContainerNodeAttrs, removeMediaGroupNode, updateToFullHeightSeparator } from './utils';
|
|
47
|
+
import { canShowSwitchButtons, downloadMedia, getIsDownloadDisabledByDataSecurityPolicy, getMaxToolbarWidth, getMediaSingleAndMediaInlineSwitcherDropdown, getSelectedLayoutIcon, getSelectedMediaSingle, getSelectedNearestMediaContainerNodeAttrs, removeMediaGroupNode, updateToFullHeightSeparator } from './utils';
|
|
47
48
|
var mediaTypeMessages = {
|
|
48
49
|
image: messages.file_image_is_selected,
|
|
49
50
|
video: messages.file_video_is_selected,
|
|
@@ -111,9 +112,8 @@ export var handleShowMediaViewer = function handleShowMediaViewer(_ref) {
|
|
|
111
112
|
api === null || api === void 0 || api.core.actions.execute(api === null || api === void 0 ? void 0 : api.media.commands.showMediaViewer(selectedNodeAttrs));
|
|
112
113
|
};
|
|
113
114
|
var generateMediaCardFloatingToolbar = function generateMediaCardFloatingToolbar(state, intl, mediaPluginState, hoverDecoration, pluginInjectionApi, editorAnalyticsAPI, forceFocusSelector, isViewOnly) {
|
|
114
|
-
var
|
|
115
|
-
var
|
|
116
|
-
var disableDownloadButton = typeof enforceMediaDataSecurityPolicy === 'boolean' ? enforceMediaDataSecurityPolicy : false;
|
|
115
|
+
var _pluginInjectionApi$c;
|
|
116
|
+
var disableDownloadButton = getIsDownloadDisabledByDataSecurityPolicy(mediaPluginState);
|
|
117
117
|
var isEditorControlsEnabled = editorExperiment('platform_editor_controls', 'variant1');
|
|
118
118
|
var preview = {
|
|
119
119
|
id: 'editor.media.viewer',
|
|
@@ -270,6 +270,7 @@ var generateMediaSingleFloatingToolbar = function generateMediaSingleFloatingToo
|
|
|
270
270
|
var _ref2 = (_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 : {},
|
|
271
271
|
hoverDecoration = _ref2.hoverDecoration;
|
|
272
272
|
var isEditorControlsEnabled = editorExperiment('platform_editor_controls', 'variant1');
|
|
273
|
+
var disableDownloadButton = getIsDownloadDisabledByDataSecurityPolicy(pluginState);
|
|
273
274
|
if (shouldShowImageBorder(state)) {
|
|
274
275
|
toolbarButtons.push({
|
|
275
276
|
type: 'custom',
|
|
@@ -567,6 +568,7 @@ var generateMediaSingleFloatingToolbar = function generateMediaSingleFloatingToo
|
|
|
567
568
|
downloadMedia(pluginState, isViewOnly);
|
|
568
569
|
return true;
|
|
569
570
|
},
|
|
571
|
+
disabled: disableDownloadButton,
|
|
570
572
|
title: intl.formatMessage(messages.download),
|
|
571
573
|
supportsViewMode: true
|
|
572
574
|
}, {
|
|
@@ -675,6 +677,12 @@ var getMediaTypeMessage = function getMediaTypeMessage(selectedNodeTypeSingle) {
|
|
|
675
677
|
return mediaType ? mediaTypeMessages[mediaType] : messages.file_unknown_is_selected;
|
|
676
678
|
};
|
|
677
679
|
export var overflowDropdwonBtnTriggerTestId = 'media-overflow-dropdown-trigger';
|
|
680
|
+
var isMediaSelection = function isMediaSelection(selection, nodeType) {
|
|
681
|
+
if (selection instanceof NodeSelection) {
|
|
682
|
+
return nodeType.includes(selection.node.type);
|
|
683
|
+
}
|
|
684
|
+
return false;
|
|
685
|
+
};
|
|
678
686
|
export var floatingToolbar = function floatingToolbar(state, intl) {
|
|
679
687
|
var _pluginInjectionApi$d3, _pluginInjectionApi$d4;
|
|
680
688
|
var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
@@ -705,6 +713,11 @@ export var floatingToolbar = function floatingToolbar(state, intl) {
|
|
|
705
713
|
}
|
|
706
714
|
var nodeType = allowMediaInline ? [mediaInline, mediaSingle, media] : [mediaSingle];
|
|
707
715
|
var isSelectedNodeMediaSingle = state.selection instanceof NodeSelection && state.selection.node.type === mediaSingle;
|
|
716
|
+
if (expValEquals('platform_editor_media_floating_toolbar_early_exit', 'isEnabled', true)) {
|
|
717
|
+
if (!isMediaSelection(state.selection, nodeType)) {
|
|
718
|
+
return;
|
|
719
|
+
}
|
|
720
|
+
}
|
|
708
721
|
var baseToolbar = {
|
|
709
722
|
title: 'Media floating controls',
|
|
710
723
|
nodeType: nodeType,
|
|
@@ -24,7 +24,7 @@ import { changeInlineToMediaCard, changeMediaInlineToMediaSingle, removeInlineCa
|
|
|
24
24
|
import { shouldShowImageBorder } from './imageBorder';
|
|
25
25
|
import { getOpenLinkToolbarButtonOption, shouldShowMediaLinkToolbar } from './linking';
|
|
26
26
|
import { LinkToolbarAppearance } from './linking-toolbar-appearance';
|
|
27
|
-
import { downloadMedia, getMediaSingleAndMediaInlineSwitcherDropdown } from './utils';
|
|
27
|
+
import { downloadMedia, getIsDownloadDisabledByDataSecurityPolicy, getMediaSingleAndMediaInlineSwitcherDropdown } from './utils';
|
|
28
28
|
import { handleShowMediaViewer } from './index';
|
|
29
29
|
export var generateMediaInlineFloatingToolbar = function generateMediaInlineFloatingToolbar(state, intl, mediaPluginState, hoverDecoration, pluginInjectionApi) {
|
|
30
30
|
var _pluginInjectionApi$a, _pluginInjectionApi$f;
|
|
@@ -55,6 +55,7 @@ export var generateMediaInlineFloatingToolbar = function generateMediaInlineFloa
|
|
|
55
55
|
}, isEditorControlsEnabled && {
|
|
56
56
|
supportsViewMode: true
|
|
57
57
|
});
|
|
58
|
+
var disableDownloadButton = getIsDownloadDisabledByDataSecurityPolicy(mediaPluginState);
|
|
58
59
|
var download = _objectSpread({
|
|
59
60
|
id: 'editor.media.card.download',
|
|
60
61
|
type: 'button',
|
|
@@ -63,6 +64,7 @@ export var generateMediaInlineFloatingToolbar = function generateMediaInlineFloa
|
|
|
63
64
|
downloadMedia(mediaPluginState);
|
|
64
65
|
return true;
|
|
65
66
|
},
|
|
67
|
+
disabled: disableDownloadButton,
|
|
66
68
|
title: intl.formatMessage(messages.download)
|
|
67
69
|
}, isEditorControlsEnabled && {
|
|
68
70
|
supportsViewMode: true
|
|
@@ -42,6 +42,11 @@ export var getSelectedNearestMediaContainerNodeAttrsFunction = function getSelec
|
|
|
42
42
|
export var getSelectedNearestMediaContainerNodeAttrs = function getSelectedNearestMediaContainerNodeAttrs(mediaPluginState) {
|
|
43
43
|
return getSelectedNearestMediaContainerNodeAttrsFunction(mediaPluginState.selectedMediaContainerNode);
|
|
44
44
|
};
|
|
45
|
+
export var getIsDownloadDisabledByDataSecurityPolicy = function getIsDownloadDisabledByDataSecurityPolicy(mediaPluginState) {
|
|
46
|
+
var _mediaPluginState$med;
|
|
47
|
+
var enforceMediaDataSecurityPolicy = mediaPluginState === null || mediaPluginState === void 0 || (_mediaPluginState$med = mediaPluginState.mediaClientConfig) === null || _mediaPluginState$med === void 0 ? void 0 : _mediaPluginState$med.enforceDataSecurityPolicy;
|
|
48
|
+
return typeof enforceMediaDataSecurityPolicy === 'boolean' ? enforceMediaDataSecurityPolicy : false;
|
|
49
|
+
};
|
|
45
50
|
export var downloadMedia = /*#__PURE__*/function () {
|
|
46
51
|
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(mediaPluginState, isViewMode) {
|
|
47
52
|
var selectedNodeAttrs, id, _selectedNodeAttrs$co, collection, mediaClient, fileState, fileName;
|
|
@@ -11,6 +11,7 @@ import type { MediaPluginState } from '../../pm-plugins/types';
|
|
|
11
11
|
export declare const isExternalMedia: (attrs: MediaADFAttrs) => attrs is ExternalMediaAttributes;
|
|
12
12
|
export declare const getSelectedNearestMediaContainerNodeAttrsFunction: (selectedMediaContainerNode: () => ProseMirrorNode | undefined) => MediaADFAttrs | null;
|
|
13
13
|
export declare const getSelectedNearestMediaContainerNodeAttrs: (mediaPluginState: MediaPluginState) => MediaADFAttrs | null;
|
|
14
|
+
export declare const getIsDownloadDisabledByDataSecurityPolicy: (mediaPluginState: MediaPluginState) => boolean;
|
|
14
15
|
export declare const downloadMedia: (mediaPluginState: MediaPluginState, isViewMode?: boolean) => Promise<boolean>;
|
|
15
16
|
export declare const removeMediaGroupNode: (state: EditorState) => import("prosemirror-state").Transaction;
|
|
16
17
|
export declare const getSelectedMediaSingle: (state: EditorState) => ReturnType<ReturnType<typeof findSelectedNodeOfType>> | ReturnType<ReturnType<typeof findParentNodeOfType>>;
|
|
@@ -11,6 +11,7 @@ import type { MediaPluginState } from '../../pm-plugins/types';
|
|
|
11
11
|
export declare const isExternalMedia: (attrs: MediaADFAttrs) => attrs is ExternalMediaAttributes;
|
|
12
12
|
export declare const getSelectedNearestMediaContainerNodeAttrsFunction: (selectedMediaContainerNode: () => ProseMirrorNode | undefined) => MediaADFAttrs | null;
|
|
13
13
|
export declare const getSelectedNearestMediaContainerNodeAttrs: (mediaPluginState: MediaPluginState) => MediaADFAttrs | null;
|
|
14
|
+
export declare const getIsDownloadDisabledByDataSecurityPolicy: (mediaPluginState: MediaPluginState) => boolean;
|
|
14
15
|
export declare const downloadMedia: (mediaPluginState: MediaPluginState, isViewMode?: boolean) => Promise<boolean>;
|
|
15
16
|
export declare const removeMediaGroupNode: (state: EditorState) => import("prosemirror-state").Transaction;
|
|
16
17
|
export declare const getSelectedMediaSingle: (state: EditorState) => ReturnType<ReturnType<typeof findSelectedNodeOfType>> | ReturnType<ReturnType<typeof findParentNodeOfType>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atlaskit/editor-plugin-media",
|
|
3
|
-
"version": "5.1.
|
|
3
|
+
"version": "5.1.5",
|
|
4
4
|
"description": "Media plugin for @atlaskit/editor-core",
|
|
5
5
|
"author": "Atlassian Pty Ltd",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"./types": "./src/types/index.ts"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@atlaskit/adf-schema": "^
|
|
36
|
+
"@atlaskit/adf-schema": "^49.0.5",
|
|
37
37
|
"@atlaskit/analytics-namespaced-context": "^7.0.0",
|
|
38
38
|
"@atlaskit/analytics-next": "^11.1.0",
|
|
39
39
|
"@atlaskit/button": "^23.2.0",
|
|
@@ -69,8 +69,8 @@
|
|
|
69
69
|
"@atlaskit/primitives": "^14.10.0",
|
|
70
70
|
"@atlaskit/textfield": "^8.0.0",
|
|
71
71
|
"@atlaskit/theme": "^19.0.0",
|
|
72
|
-
"@atlaskit/tmp-editor-statsig": "^9.
|
|
73
|
-
"@atlaskit/tokens": "^5.
|
|
72
|
+
"@atlaskit/tmp-editor-statsig": "^9.5.0",
|
|
73
|
+
"@atlaskit/tokens": "^5.5.0",
|
|
74
74
|
"@atlaskit/tooltip": "^20.3.0",
|
|
75
75
|
"@babel/runtime": "^7.0.0",
|
|
76
76
|
"@emotion/react": "^11.7.1",
|