@atlaskit/editor-plugin-media 2.7.0 → 2.7.2
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 +24 -0
- package/dist/cjs/mediaPlugin.js +21 -6
- package/dist/cjs/nodeviews/mediaGroup.js +21 -6
- package/dist/cjs/nodeviews/mediaInline.js +55 -13
- package/dist/cjs/nodeviews/mediaNodeView/index.js +11 -3
- package/dist/cjs/nodeviews/mediaSingle.js +87 -48
- package/dist/cjs/nodeviews/mediaSingleNext.js +5 -4
- package/dist/cjs/pm-plugins/utils/media-files.js +64 -6
- package/dist/cjs/ui/CommentBadge/index.js +44 -14
- package/dist/cjs/ui/ImageBorder/styles.js +1 -2
- package/dist/cjs/ui/MediaPicker/index.js +15 -3
- package/dist/cjs/ui/MediaViewer/MediaViewerContainer.js +3 -3
- package/dist/cjs/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +2 -1
- package/dist/cjs/ui/ToolbarMedia/index.js +17 -5
- package/dist/cjs/ui/hooks/useMediaProvider.js +11 -3
- package/dist/cjs/ui/toolbar/utils.js +6 -4
- package/dist/es2019/mediaPlugin.js +21 -6
- package/dist/es2019/nodeviews/mediaGroup.js +21 -6
- package/dist/es2019/nodeviews/mediaInline.js +54 -12
- package/dist/es2019/nodeviews/mediaNodeView/index.js +11 -3
- package/dist/es2019/nodeviews/mediaSingle.js +59 -24
- package/dist/es2019/nodeviews/mediaSingleNext.js +5 -4
- package/dist/es2019/pm-plugins/utils/media-files.js +63 -5
- package/dist/es2019/ui/CommentBadge/index.js +40 -10
- package/dist/es2019/ui/ImageBorder/styles.js +1 -2
- package/dist/es2019/ui/MediaPicker/index.js +15 -3
- package/dist/es2019/ui/MediaViewer/MediaViewerContainer.js +4 -4
- package/dist/es2019/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +2 -1
- package/dist/es2019/ui/ToolbarMedia/index.js +17 -5
- package/dist/es2019/ui/hooks/useMediaProvider.js +11 -3
- package/dist/es2019/ui/toolbar/utils.js +5 -3
- package/dist/esm/mediaPlugin.js +21 -6
- package/dist/esm/nodeviews/mediaGroup.js +21 -6
- package/dist/esm/nodeviews/mediaInline.js +55 -13
- package/dist/esm/nodeviews/mediaNodeView/index.js +11 -3
- package/dist/esm/nodeviews/mediaSingle.js +87 -48
- package/dist/esm/nodeviews/mediaSingleNext.js +5 -4
- package/dist/esm/pm-plugins/utils/media-files.js +63 -5
- package/dist/esm/ui/CommentBadge/index.js +44 -14
- package/dist/esm/ui/ImageBorder/styles.js +1 -2
- package/dist/esm/ui/MediaPicker/index.js +15 -3
- package/dist/esm/ui/MediaViewer/MediaViewerContainer.js +4 -4
- package/dist/esm/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +2 -1
- package/dist/esm/ui/ToolbarMedia/index.js +17 -5
- package/dist/esm/ui/hooks/useMediaProvider.js +11 -3
- package/dist/esm/ui/toolbar/utils.js +5 -3
- package/dist/types/nodeviews/mediaInline.d.ts +7 -2
- package/dist/types/nodeviews/mediaSingleNext.d.ts +3 -4
- package/dist/types/nodeviews/types.d.ts +3 -4
- package/dist/types/pm-plugins/utils/media-files.d.ts +3 -2
- package/dist/types/ui/MediaViewer/MediaViewerContainer.d.ts +4 -3
- package/dist/types/ui/toolbar/utils.d.ts +1 -0
- package/dist/types-ts4.5/nodeviews/mediaInline.d.ts +7 -2
- package/dist/types-ts4.5/nodeviews/mediaSingleNext.d.ts +3 -4
- package/dist/types-ts4.5/nodeviews/types.d.ts +3 -4
- package/dist/types-ts4.5/pm-plugins/utils/media-files.d.ts +3 -2
- package/dist/types-ts4.5/ui/MediaViewer/MediaViewerContainer.d.ts +4 -3
- package/dist/types-ts4.5/ui/toolbar/utils.d.ts +1 -0
- package/package.json +10 -4
|
@@ -10,6 +10,7 @@ import { jsx } from '@emotion/react';
|
|
|
10
10
|
import classnames from 'classnames';
|
|
11
11
|
import throttle from 'lodash/throttle';
|
|
12
12
|
import memoizeOne from 'memoize-one';
|
|
13
|
+
import { isSSR } from '@atlaskit/editor-common/core-utils';
|
|
13
14
|
import { findClosestSnap, generateDefaultGuidelines, generateDynamicGuidelines, getGuidelineSnaps, getGuidelinesWithHighlights, getGuidelineTypeFromKey, getRelativeGuidelines, getRelativeGuideSnaps } from '@atlaskit/editor-common/guideline';
|
|
14
15
|
import { calcMediaSingleMaxWidth, DEFAULT_IMAGE_WIDTH, MEDIA_SINGLE_ADJACENT_HANDLE_MARGIN, MEDIA_SINGLE_DEFAULT_MIN_PIXEL_WIDTH, MEDIA_SINGLE_RESIZE_THROTTLE_TIME, MEDIA_SINGLE_SNAP_GAP, MEDIA_SINGLE_VIDEO_MIN_PIXEL_WIDTH } from '@atlaskit/editor-common/media-single';
|
|
15
16
|
import { ResizerNext } from '@atlaskit/editor-common/resizer';
|
|
@@ -457,7 +458,7 @@ class ResizableMediaSingleNext extends React.Component {
|
|
|
457
458
|
const resizerNextClassName = classnames(className, resizerStyles);
|
|
458
459
|
const isNestedNode = this.isAdjacentMode();
|
|
459
460
|
const handlePositioning = this.getHandlePositioning();
|
|
460
|
-
const maxWidth = this.getMaxWidth();
|
|
461
|
+
const maxWidth = isSSR() && size.width && fg('platform_editor_fix_image_size_diff_during_ssr') ? undefined : this.getMaxWidth();
|
|
461
462
|
const minWidth = this.calcMinWidth(isVideoFile, lineLength);
|
|
462
463
|
|
|
463
464
|
// while is not resizing, we take 100% as min-width if the container width is less than the min-width
|
|
@@ -3,9 +3,11 @@ import { injectIntl } from 'react-intl-next';
|
|
|
3
3
|
import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
|
|
4
4
|
import { toolbarMediaMessages } from '@atlaskit/editor-common/media';
|
|
5
5
|
import { TOOLBAR_BUTTON, ToolbarButton } from '@atlaskit/editor-common/ui-menu';
|
|
6
|
+
import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector';
|
|
6
7
|
import AttachmentIcon from '@atlaskit/icon/core/migration/attachment--editor-attachment';
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
9
|
+
const onClickMediaButton = showMediaPicker => () => {
|
|
10
|
+
showMediaPicker();
|
|
9
11
|
return true;
|
|
10
12
|
};
|
|
11
13
|
const ToolbarMedia = ({
|
|
@@ -16,8 +18,18 @@ const ToolbarMedia = ({
|
|
|
16
18
|
}) => {
|
|
17
19
|
const {
|
|
18
20
|
mediaState
|
|
19
|
-
} = useSharedPluginState(api, ['media']
|
|
20
|
-
|
|
21
|
+
} = useSharedPluginState(api, ['media'], {
|
|
22
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', true)
|
|
23
|
+
});
|
|
24
|
+
const allowsUploadsSelector = useSharedPluginStateSelector(api, 'media.allowsUploads', {
|
|
25
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
26
|
+
});
|
|
27
|
+
const showMediaPickerSelector = useSharedPluginStateSelector(api, 'media.showMediaPicker', {
|
|
28
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
29
|
+
});
|
|
30
|
+
const allowsUploads = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? allowsUploadsSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.allowsUploads;
|
|
31
|
+
const showMediaPicker = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? showMediaPickerSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.showMediaPicker;
|
|
32
|
+
if (!allowsUploads || !showMediaPicker) {
|
|
21
33
|
return null;
|
|
22
34
|
}
|
|
23
35
|
const {
|
|
@@ -25,7 +37,7 @@ const ToolbarMedia = ({
|
|
|
25
37
|
} = toolbarMediaMessages;
|
|
26
38
|
return /*#__PURE__*/React.createElement(ToolbarButton, {
|
|
27
39
|
buttonId: TOOLBAR_BUTTON.MEDIA,
|
|
28
|
-
onClick: onClickMediaButton(
|
|
40
|
+
onClick: onClickMediaButton(showMediaPicker),
|
|
29
41
|
disabled: isDisabled,
|
|
30
42
|
title: intl.formatMessage(toolbarMediaTitle),
|
|
31
43
|
spacing: isReducedSpacing ? 'none' : 'default',
|
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
import { useMemo } from 'react';
|
|
2
2
|
import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
|
|
3
|
+
import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector';
|
|
4
|
+
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
3
5
|
export const useMediaProvider = pluginInjectionApi => {
|
|
4
6
|
const {
|
|
5
7
|
mediaState
|
|
6
|
-
} = useSharedPluginState(pluginInjectionApi, ['media']
|
|
8
|
+
} = useSharedPluginState(pluginInjectionApi, ['media'], {
|
|
9
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', true)
|
|
10
|
+
});
|
|
11
|
+
const mediaProviderSelector = useSharedPluginStateSelector(pluginInjectionApi, 'media.mediaProvider', {
|
|
12
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
13
|
+
});
|
|
14
|
+
const mediaProvider = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? mediaProviderSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaProvider;
|
|
7
15
|
const provider = useMemo(() => {
|
|
8
|
-
return
|
|
9
|
-
}, [
|
|
16
|
+
return mediaProvider;
|
|
17
|
+
}, [mediaProvider]);
|
|
10
18
|
return provider;
|
|
11
19
|
};
|
|
@@ -16,9 +16,8 @@ const getSelectedMediaContainerNodeAttrs = mediaPluginState => {
|
|
|
16
16
|
}
|
|
17
17
|
return null;
|
|
18
18
|
};
|
|
19
|
-
export const
|
|
20
|
-
|
|
21
|
-
const selectedNode = (_mediaPluginState$sel2 = mediaPluginState.selectedMediaContainerNode) === null || _mediaPluginState$sel2 === void 0 ? void 0 : _mediaPluginState$sel2.call(mediaPluginState);
|
|
19
|
+
export const getSelectedNearestMediaContainerNodeAttrsFunction = selectedMediaContainerNode => {
|
|
20
|
+
const selectedNode = selectedMediaContainerNode === null || selectedMediaContainerNode === void 0 ? void 0 : selectedMediaContainerNode();
|
|
22
21
|
if (selectedNode) {
|
|
23
22
|
switch (selectedNode.type.name) {
|
|
24
23
|
case 'mediaSingle':
|
|
@@ -32,6 +31,9 @@ export const getSelectedNearestMediaContainerNodeAttrs = mediaPluginState => {
|
|
|
32
31
|
}
|
|
33
32
|
return null;
|
|
34
33
|
};
|
|
34
|
+
export const getSelectedNearestMediaContainerNodeAttrs = mediaPluginState => {
|
|
35
|
+
return getSelectedNearestMediaContainerNodeAttrsFunction(mediaPluginState.selectedMediaContainerNode);
|
|
36
|
+
};
|
|
35
37
|
export const downloadMedia = async (mediaPluginState, isViewMode) => {
|
|
36
38
|
try {
|
|
37
39
|
const selectedNodeAttrs = isViewMode ? getSelectedNearestMediaContainerNodeAttrs(mediaPluginState) : getSelectedMediaContainerNodeAttrs(mediaPluginState);
|
package/dist/esm/mediaPlugin.js
CHANGED
|
@@ -4,6 +4,7 @@ import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
|
|
|
4
4
|
import { toolbarInsertBlockMessages as messages } from '@atlaskit/editor-common/messages';
|
|
5
5
|
import { IconImages } from '@atlaskit/editor-common/quick-insert';
|
|
6
6
|
import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
|
|
7
|
+
import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector';
|
|
7
8
|
import { NodeSelection, PluginKey } from '@atlaskit/editor-prosemirror/state';
|
|
8
9
|
import { getMediaFeatureFlag } from '@atlaskit/media-common';
|
|
9
10
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
@@ -51,22 +52,36 @@ var MediaPickerFunctionalComponent = function MediaPickerFunctionalComponent(_re
|
|
|
51
52
|
var MediaViewerFunctionalComponent = function MediaViewerFunctionalComponent(_ref2) {
|
|
52
53
|
var api = _ref2.api,
|
|
53
54
|
editorView = _ref2.editorView;
|
|
54
|
-
var _useSharedPluginState2 = useSharedPluginState(api, ['media']
|
|
55
|
+
var _useSharedPluginState2 = useSharedPluginState(api, ['media'], {
|
|
56
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', true)
|
|
57
|
+
}),
|
|
55
58
|
mediaState = _useSharedPluginState2.mediaState;
|
|
59
|
+
var isMediaViewerVisibleSelector = useSharedPluginStateSelector(api, 'media.isMediaViewerVisible', {
|
|
60
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
61
|
+
});
|
|
62
|
+
var mediaViewerSelectedMediaSelector = useSharedPluginStateSelector(api, 'media.mediaViewerSelectedMedia', {
|
|
63
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
64
|
+
});
|
|
65
|
+
var mediaClientConfigSelector = useSharedPluginStateSelector(api, 'media.mediaClientConfig', {
|
|
66
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
67
|
+
});
|
|
68
|
+
var isMediaViewerVisible = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? isMediaViewerVisibleSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.isMediaViewerVisible;
|
|
69
|
+
var mediaViewerSelectedMedia = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? mediaViewerSelectedMediaSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaViewerSelectedMedia;
|
|
70
|
+
var mediaClientConfig = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? mediaClientConfigSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaClientConfig;
|
|
56
71
|
|
|
57
72
|
// Only traverse document once when media viewer is visible, media viewer items will not update
|
|
58
73
|
// when document changes are made while media viewer is open
|
|
59
74
|
|
|
60
75
|
var mediaItems = useMemo(function () {
|
|
61
|
-
if (
|
|
76
|
+
if (isMediaViewerVisible) {
|
|
62
77
|
var mediaNodes = extractMediaNodes(editorView.state.doc);
|
|
63
78
|
return createMediaIdentifierArray(mediaNodes);
|
|
64
79
|
}
|
|
65
80
|
// eslint-disable-next-line react-hooks/exhaustive-deps -- only update mediaItems once when media viewer is visible
|
|
66
|
-
}, [
|
|
81
|
+
}, [isMediaViewerVisible]);
|
|
67
82
|
|
|
68
83
|
// Viewer does not have required attributes to render the media viewer
|
|
69
|
-
if (!
|
|
84
|
+
if (!isMediaViewerVisible || !mediaViewerSelectedMedia || !mediaClientConfig) {
|
|
70
85
|
return null;
|
|
71
86
|
}
|
|
72
87
|
var handleOnClose = function handleOnClose() {
|
|
@@ -74,9 +89,9 @@ var MediaViewerFunctionalComponent = function MediaViewerFunctionalComponent(_re
|
|
|
74
89
|
api === null || api === void 0 || api.core.actions.execute(api === null || api === void 0 ? void 0 : api.media.commands.hideMediaViewer);
|
|
75
90
|
};
|
|
76
91
|
return /*#__PURE__*/React.createElement(RenderMediaViewer, {
|
|
77
|
-
mediaClientConfig:
|
|
92
|
+
mediaClientConfig: mediaClientConfig,
|
|
78
93
|
onClose: handleOnClose,
|
|
79
|
-
selectedNodeAttrs:
|
|
94
|
+
selectedNodeAttrs: mediaViewerSelectedMedia,
|
|
80
95
|
items: mediaItems
|
|
81
96
|
});
|
|
82
97
|
};
|
|
@@ -16,6 +16,7 @@ import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
|
|
|
16
16
|
import { nodeViewsMessages as messages } from '@atlaskit/editor-common/media';
|
|
17
17
|
import { WithProviders } from '@atlaskit/editor-common/provider-factory';
|
|
18
18
|
import ReactNodeView from '@atlaskit/editor-common/react-node-view';
|
|
19
|
+
import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector';
|
|
19
20
|
import { isNodeSelectedOrInRange, SelectedState, setNodeSelection } from '@atlaskit/editor-common/utils';
|
|
20
21
|
import EditorCloseIcon from '@atlaskit/icon/core/migration/close--editor-close';
|
|
21
22
|
import { getMediaFeatureFlag } from '@atlaskit/media-common';
|
|
@@ -304,13 +305,25 @@ export default IntlMediaGroup;
|
|
|
304
305
|
function MediaGroupNodeViewInternal(_ref3) {
|
|
305
306
|
var renderFn = _ref3.renderFn,
|
|
306
307
|
pluginInjectionApi = _ref3.pluginInjectionApi;
|
|
307
|
-
var _useSharedPluginState = useSharedPluginState(pluginInjectionApi, ['editorDisabled', 'editorViewMode']
|
|
308
|
+
var _useSharedPluginState = useSharedPluginState(pluginInjectionApi, ['editorDisabled', 'editorViewMode'], {
|
|
309
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', true)
|
|
310
|
+
}),
|
|
308
311
|
editorDisabledPlugin = _useSharedPluginState.editorDisabledState,
|
|
309
312
|
editorViewModePlugin = _useSharedPluginState.editorViewModeState;
|
|
313
|
+
var editorDisabledSelector = useSharedPluginStateSelector(pluginInjectionApi, 'editorDisabled.editorDisabled', {
|
|
314
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
315
|
+
});
|
|
316
|
+
var editorViewModeSelector = useSharedPluginStateSelector(pluginInjectionApi, 'editorViewMode.mode', {
|
|
317
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
318
|
+
});
|
|
319
|
+
var editorDisabled = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? editorDisabledSelector : editorDisabledPlugin === null || editorDisabledPlugin === void 0 ? void 0 : editorDisabledPlugin.editorDisabled;
|
|
320
|
+
var editorViewMode = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? editorViewModeSelector : editorViewModePlugin === null || editorViewModePlugin === void 0 ? void 0 : editorViewModePlugin.mode;
|
|
310
321
|
var mediaProvider = useMediaProvider(pluginInjectionApi);
|
|
311
322
|
return renderFn({
|
|
312
323
|
editorDisabledPlugin: editorDisabledPlugin,
|
|
313
324
|
editorViewModePlugin: editorViewModePlugin,
|
|
325
|
+
editorDisabled: editorDisabled,
|
|
326
|
+
editorViewMode: editorViewMode,
|
|
314
327
|
mediaProvider: mediaProvider
|
|
315
328
|
});
|
|
316
329
|
}
|
|
@@ -336,7 +349,9 @@ var MediaGroupNodeView = /*#__PURE__*/function (_ReactNodeView) {
|
|
|
336
349
|
var renderFn = function renderFn(_ref5) {
|
|
337
350
|
var editorDisabledPlugin = _ref5.editorDisabledPlugin,
|
|
338
351
|
editorViewModePlugin = _ref5.editorViewModePlugin,
|
|
339
|
-
mediaProviderFromState = _ref5.mediaProvider
|
|
352
|
+
mediaProviderFromState = _ref5.mediaProvider,
|
|
353
|
+
editorDisabled = _ref5.editorDisabled,
|
|
354
|
+
editorViewMode = _ref5.editorViewMode;
|
|
340
355
|
var mediaProvider = mediaProviderFromState ? Promise.resolve(mediaProviderFromState) : undefined;
|
|
341
356
|
if (!mediaProvider) {
|
|
342
357
|
return null;
|
|
@@ -347,7 +362,7 @@ var MediaGroupNodeView = /*#__PURE__*/function (_ReactNodeView) {
|
|
|
347
362
|
getPos: getPos,
|
|
348
363
|
view: _this3.view,
|
|
349
364
|
forwardRef: forwardRef,
|
|
350
|
-
disabled:
|
|
365
|
+
disabled: editorDisabled,
|
|
351
366
|
allowLazyLoading: mediaOptions.allowLazyLoading,
|
|
352
367
|
mediaProvider: mediaProvider,
|
|
353
368
|
contextIdentifierProvider: contextIdentifierProvider,
|
|
@@ -355,7 +370,7 @@ var MediaGroupNodeView = /*#__PURE__*/function (_ReactNodeView) {
|
|
|
355
370
|
anchorPos: _this3.view.state.selection.$anchor.pos,
|
|
356
371
|
headPos: _this3.view.state.selection.$head.pos,
|
|
357
372
|
mediaOptions: mediaOptions,
|
|
358
|
-
editorViewMode:
|
|
373
|
+
editorViewMode: editorViewMode === 'view'
|
|
359
374
|
});
|
|
360
375
|
}
|
|
361
376
|
return /*#__PURE__*/React.createElement(IntlMediaGroup, {
|
|
@@ -363,7 +378,7 @@ var MediaGroupNodeView = /*#__PURE__*/function (_ReactNodeView) {
|
|
|
363
378
|
getPos: getPos,
|
|
364
379
|
view: _this3.view,
|
|
365
380
|
forwardRef: forwardRef,
|
|
366
|
-
disabled: (editorDisabledPlugin || {}).editorDisabled,
|
|
381
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', true) ? editorDisabled : (editorDisabledPlugin || {}).editorDisabled,
|
|
367
382
|
allowLazyLoading: mediaOptions.allowLazyLoading,
|
|
368
383
|
mediaProvider: mediaProvider,
|
|
369
384
|
contextIdentifierProvider: contextIdentifierProvider,
|
|
@@ -371,7 +386,7 @@ var MediaGroupNodeView = /*#__PURE__*/function (_ReactNodeView) {
|
|
|
371
386
|
anchorPos: _this3.view.state.selection.$anchor.pos,
|
|
372
387
|
headPos: _this3.view.state.selection.$head.pos,
|
|
373
388
|
mediaOptions: mediaOptions,
|
|
374
|
-
editorViewMode: (editorViewModePlugin === null || editorViewModePlugin === void 0 ? void 0 : editorViewModePlugin.mode) === 'view'
|
|
389
|
+
editorViewMode: editorExperiment('platform_editor_usesharedpluginstateselector', true) ? editorViewMode === 'view' : (editorViewModePlugin === null || editorViewModePlugin === void 0 ? void 0 : editorViewModePlugin.mode) === 'view'
|
|
375
390
|
});
|
|
376
391
|
};
|
|
377
392
|
return /*#__PURE__*/React.createElement(MediaGroupNodeViewInternal, {
|
|
@@ -25,10 +25,12 @@ import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
|
|
|
25
25
|
import { MediaInlineImageCard } from '@atlaskit/editor-common/media-inline';
|
|
26
26
|
import { WithProviders } from '@atlaskit/editor-common/provider-factory';
|
|
27
27
|
import { SelectionBasedNodeView } from '@atlaskit/editor-common/selection-based-node-view';
|
|
28
|
+
import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector';
|
|
28
29
|
import { MediaInlineCard } from '@atlaskit/media-card';
|
|
29
30
|
import { getMediaClient } from '@atlaskit/media-client-react';
|
|
30
31
|
import { MediaInlineCardLoadingView } from '@atlaskit/media-ui';
|
|
31
32
|
import { fg } from '@atlaskit/platform-feature-flags';
|
|
33
|
+
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
32
34
|
import { isImage } from '../pm-plugins/utils/is-type';
|
|
33
35
|
import { MediaViewerContainer } from '../ui/MediaViewer/MediaViewerContainer';
|
|
34
36
|
import { MediaNodeUpdater } from './mediaNodeUpdater';
|
|
@@ -54,7 +56,7 @@ var updateMediaNodeAttributes = /*#__PURE__*/function () {
|
|
|
54
56
|
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
55
57
|
while (1) switch (_context.prev = _context.next) {
|
|
56
58
|
case 0:
|
|
57
|
-
addPendingTask = props.
|
|
59
|
+
addPendingTask = props.addPendingTask;
|
|
58
60
|
node = props.node;
|
|
59
61
|
if (node) {
|
|
60
62
|
_context.next = 4;
|
|
@@ -107,9 +109,9 @@ var updateMediaNodeAttributes = /*#__PURE__*/function () {
|
|
|
107
109
|
}();
|
|
108
110
|
export var handleNewNode = function handleNewNode(props) {
|
|
109
111
|
var node = props.node,
|
|
110
|
-
|
|
112
|
+
handleMediaNodeMount = props.handleMediaNodeMount,
|
|
111
113
|
getPos = props.getPos;
|
|
112
|
-
|
|
114
|
+
handleMediaNodeMount(node, function () {
|
|
113
115
|
return getPos();
|
|
114
116
|
});
|
|
115
117
|
};
|
|
@@ -130,8 +132,8 @@ export var MediaInline = function MediaInline(props) {
|
|
|
130
132
|
updateMediaNodeAttributes(props, mediaNodeUpdater);
|
|
131
133
|
updateViewMediaClientConfig(props);
|
|
132
134
|
return function () {
|
|
133
|
-
var
|
|
134
|
-
|
|
135
|
+
var handleMediaNodeUnmount = props.handleMediaNodeUnmount;
|
|
136
|
+
handleMediaNodeUnmount(props.node);
|
|
135
137
|
};
|
|
136
138
|
}, [props]);
|
|
137
139
|
var updateViewMediaClientConfig = /*#__PURE__*/function () {
|
|
@@ -186,7 +188,7 @@ export var MediaInline = function MediaInline(props) {
|
|
|
186
188
|
isSelected: false
|
|
187
189
|
});
|
|
188
190
|
}
|
|
189
|
-
var allowInlineImages = props.
|
|
191
|
+
var allowInlineImages = props.allowInlineImages;
|
|
190
192
|
var borderMark = (_props$node = props.node) === null || _props$node === void 0 || (_props$node = _props$node.marks) === null || _props$node === void 0 ? void 0 : _props$node.find(function (mark) {
|
|
191
193
|
return mark.type.name === 'border';
|
|
192
194
|
});
|
|
@@ -207,7 +209,8 @@ export var MediaInline = function MediaInline(props) {
|
|
|
207
209
|
}
|
|
208
210
|
return jsx(MediaViewerContainer, {
|
|
209
211
|
mediaNode: props.node,
|
|
210
|
-
|
|
212
|
+
selectedMediaContainerNode: props.selectedMediaContainerNode,
|
|
213
|
+
mediaClientConfig: props.mediaClientConfig,
|
|
211
214
|
isEditorViewMode: props.editorViewMode,
|
|
212
215
|
isSelected: props.isSelected,
|
|
213
216
|
isInline: fg('platform_editor_render_media_viewer_as_inline')
|
|
@@ -225,25 +228,64 @@ var MediaInlineSharedState = function MediaInlineSharedState(_ref3) {
|
|
|
225
228
|
contextIdentifierProvider = _ref3.contextIdentifierProvider,
|
|
226
229
|
api = _ref3.api,
|
|
227
230
|
view = _ref3.view;
|
|
228
|
-
var _useSharedPluginState = useSharedPluginState(api, ['editorViewMode', 'media']
|
|
231
|
+
var _useSharedPluginState = useSharedPluginState(api, ['editorViewMode', 'media'], {
|
|
232
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', true)
|
|
233
|
+
}),
|
|
229
234
|
editorViewModeState = _useSharedPluginState.editorViewModeState,
|
|
230
235
|
mediaState = _useSharedPluginState.mediaState;
|
|
236
|
+
var viewModeSelector = useSharedPluginStateSelector(api, 'editorViewMode.mode', {
|
|
237
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
238
|
+
});
|
|
239
|
+
var mediaProviderSelector = useSharedPluginStateSelector(api, 'media.mediaProvider', {
|
|
240
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
241
|
+
});
|
|
242
|
+
var handleMediaNodeMountSelector = useSharedPluginStateSelector(api, 'media.handleMediaNodeMount', {
|
|
243
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
244
|
+
});
|
|
245
|
+
var handleMediaNodeUnmountSelector = useSharedPluginStateSelector(api, 'media.handleMediaNodeUnmount', {
|
|
246
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
247
|
+
});
|
|
248
|
+
var allowInlineImagesSelector = useSharedPluginStateSelector(api, 'media.allowInlineImages', {
|
|
249
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
250
|
+
});
|
|
251
|
+
var addPendingTaskSelector = useSharedPluginStateSelector(api, 'media.addPendingTask', {
|
|
252
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
253
|
+
});
|
|
254
|
+
var selectedMediaContainerNodeSelector = useSharedPluginStateSelector(api, 'media.selectedMediaContainerNode', {
|
|
255
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
256
|
+
});
|
|
257
|
+
var mediaClientConfigSelector = useSharedPluginStateSelector(api, 'media.mediaClientConfig', {
|
|
258
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
259
|
+
});
|
|
260
|
+
var viewMode = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? viewModeSelector : editorViewModeState === null || editorViewModeState === void 0 ? void 0 : editorViewModeState.mode;
|
|
261
|
+
var mediaProvider = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? mediaProviderSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaProvider;
|
|
262
|
+
var handleMediaNodeMount = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? handleMediaNodeMountSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.handleMediaNodeMount;
|
|
263
|
+
var handleMediaNodeUnmount = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? handleMediaNodeUnmountSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.handleMediaNodeUnmount;
|
|
264
|
+
var allowInlineImages = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? allowInlineImagesSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.allowInlineImages;
|
|
265
|
+
var addPendingTask = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? addPendingTaskSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.addPendingTask;
|
|
266
|
+
var selectedMediaContainerNode = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? selectedMediaContainerNodeSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.selectedMediaContainerNode;
|
|
267
|
+
var mediaClientConfig = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? mediaClientConfigSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaClientConfig;
|
|
231
268
|
var newMediaProvider = useMemo(function () {
|
|
232
|
-
return
|
|
233
|
-
}, [
|
|
234
|
-
if (!
|
|
269
|
+
return mediaProvider ? Promise.resolve(mediaProvider) : undefined;
|
|
270
|
+
}, [mediaProvider]);
|
|
271
|
+
if (!handleMediaNodeMount || !handleMediaNodeUnmount || !addPendingTask || !selectedMediaContainerNode || !mediaClientConfig || !newMediaProvider) {
|
|
235
272
|
return null;
|
|
236
273
|
}
|
|
237
274
|
return jsx(MediaInline, {
|
|
238
275
|
identifier: identifier,
|
|
239
276
|
mediaProvider: newMediaProvider,
|
|
240
|
-
|
|
277
|
+
handleMediaNodeMount: handleMediaNodeMount,
|
|
278
|
+
handleMediaNodeUnmount: handleMediaNodeUnmount,
|
|
279
|
+
allowInlineImages: allowInlineImages,
|
|
280
|
+
addPendingTask: addPendingTask,
|
|
281
|
+
selectedMediaContainerNode: selectedMediaContainerNode,
|
|
282
|
+
mediaClientConfig: mediaClientConfig,
|
|
241
283
|
node: node,
|
|
242
284
|
isSelected: isSelected,
|
|
243
285
|
view: view,
|
|
244
286
|
getPos: getPos,
|
|
245
287
|
contextIdentifierProvider: contextIdentifierProvider,
|
|
246
|
-
editorViewMode:
|
|
288
|
+
editorViewMode: viewMode === 'view'
|
|
247
289
|
});
|
|
248
290
|
};
|
|
249
291
|
export var MediaInlineNodeView = /*#__PURE__*/function (_SelectionBasedNodeVi) {
|
|
@@ -17,7 +17,9 @@ import { useSharedPluginState } from '@atlaskit/editor-common/hooks';
|
|
|
17
17
|
import { DEFAULT_IMAGE_HEIGHT, DEFAULT_IMAGE_WIDTH } from '@atlaskit/editor-common/media-single';
|
|
18
18
|
import { WithProviders } from '@atlaskit/editor-common/provider-factory';
|
|
19
19
|
import { SelectionBasedNodeView } from '@atlaskit/editor-common/selection-based-node-view';
|
|
20
|
+
import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector';
|
|
20
21
|
import { getAttrsFromUrl } from '@atlaskit/media-client';
|
|
22
|
+
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
|
|
21
23
|
import { updateCurrentMediaNodeAttrs } from '../../pm-plugins/commands/helpers';
|
|
22
24
|
import { isMediaBlobUrlFromAttrs } from '../../pm-plugins/utils/media-common';
|
|
23
25
|
// Ignored via go/ees005
|
|
@@ -26,12 +28,18 @@ import MediaNode from './media';
|
|
|
26
28
|
var MediaNodeWithProviders = function MediaNodeWithProviders(_ref) {
|
|
27
29
|
var pluginInjectionApi = _ref.pluginInjectionApi,
|
|
28
30
|
innerComponent = _ref.innerComponent;
|
|
29
|
-
var _useSharedPluginState = useSharedPluginState(pluginInjectionApi, ['width', 'media']
|
|
31
|
+
var _useSharedPluginState = useSharedPluginState(pluginInjectionApi, ['width', 'media'], {
|
|
32
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', true)
|
|
33
|
+
}),
|
|
30
34
|
widthState = _useSharedPluginState.widthState,
|
|
31
35
|
mediaState = _useSharedPluginState.mediaState;
|
|
36
|
+
var mediaProviderSelector = useSharedPluginStateSelector(pluginInjectionApi, 'media.mediaProvider', {
|
|
37
|
+
disabled: editorExperiment('platform_editor_usesharedpluginstateselector', false)
|
|
38
|
+
});
|
|
39
|
+
var mediaProvider = editorExperiment('platform_editor_usesharedpluginstateselector', true) ? mediaProviderSelector : mediaState === null || mediaState === void 0 ? void 0 : mediaState.mediaProvider;
|
|
32
40
|
return innerComponent({
|
|
33
|
-
width: widthState,
|
|
34
|
-
mediaProvider:
|
|
41
|
+
width: editorExperiment('platform_editor_usesharedpluginstateselector', true) ? widthState : undefined,
|
|
42
|
+
mediaProvider: mediaProvider ? Promise.resolve(mediaProvider) : undefined
|
|
35
43
|
});
|
|
36
44
|
};
|
|
37
45
|
function isMediaDecorationSpec(decoration) {
|