@atlaskit/editor-plugin-media 0.4.0 → 0.4.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 +13 -0
- package/dist/cjs/plugin.js +19 -21
- package/dist/cjs/pm-plugins/keymap.js +1 -96
- package/dist/cjs/pm-plugins/main.js +14 -10
- package/dist/cjs/toolbar/commands.js +1 -1
- package/dist/cjs/toolbar/index.js +1 -1
- package/dist/cjs/utils/{is-image.js → is-type.js} +4 -1
- package/dist/cjs/utils/media-inline.js +27 -0
- package/dist/cjs/utils/media-single.js +3 -3
- package/dist/es2019/plugin.js +2 -5
- package/dist/es2019/pm-plugins/keymap.js +2 -87
- package/dist/es2019/pm-plugins/main.js +18 -14
- package/dist/es2019/toolbar/commands.js +1 -1
- package/dist/es2019/toolbar/index.js +1 -1
- package/dist/es2019/utils/{is-image.js → is-type.js} +3 -0
- package/dist/es2019/utils/media-inline.js +21 -0
- package/dist/es2019/utils/media-single.js +1 -1
- package/dist/esm/plugin.js +19 -21
- package/dist/esm/pm-plugins/keymap.js +2 -97
- package/dist/esm/pm-plugins/main.js +18 -14
- package/dist/esm/toolbar/commands.js +1 -1
- package/dist/esm/toolbar/index.js +1 -1
- package/dist/esm/utils/{is-image.js → is-type.js} +3 -0
- package/dist/esm/utils/media-inline.js +21 -0
- package/dist/esm/utils/media-single.js +1 -1
- package/dist/types/pm-plugins/keymap.d.ts +1 -2
- package/dist/types/pm-plugins/types.d.ts +0 -1
- package/dist/types/toolbar/commands.d.ts +1 -2
- package/dist/types/utils/{is-image.d.ts → is-type.d.ts} +1 -0
- package/dist/types/utils/media-inline.d.ts +4 -0
- package/dist/types-ts4.5/pm-plugins/keymap.d.ts +1 -2
- package/dist/types-ts4.5/pm-plugins/types.d.ts +0 -1
- package/dist/types-ts4.5/toolbar/commands.d.ts +1 -2
- package/dist/types-ts4.5/utils/{is-image.d.ts → is-type.d.ts} +1 -0
- package/dist/types-ts4.5/utils/media-inline.d.ts +4 -0
- package/package.json +2 -2
- package/dist/cjs/pm-plugins/mediaResizeAnnouncerMess.js +0 -34
- package/dist/es2019/pm-plugins/mediaResizeAnnouncerMess.js +0 -28
- package/dist/esm/pm-plugins/mediaResizeAnnouncerMess.js +0 -28
- package/dist/types/pm-plugins/mediaResizeAnnouncerMess.d.ts +0 -27
- package/dist/types-ts4.5/pm-plugins/mediaResizeAnnouncerMess.d.ts +0 -27
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-media
|
|
2
2
|
|
|
3
|
+
## 0.4.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#43436](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/43436) [`6bf14e25965`](https://bitbucket.org/atlassian/atlassian-frontend/commits/6bf14e25965) - Revert "Resize media for the keyboard users"
|
|
8
|
+
|
|
9
|
+
## 0.4.1
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- [#43145](https://bitbucket.org/atlassian/atlassian-frontend/pull-requests/43145) [`999af31b6ad`](https://bitbucket.org/atlassian/atlassian-frontend/commits/999af31b6ad) - [ux] [ED-20776] Change mediaInline node insertion logic behind 'platform.editor.media.inline-image.base-support' feature flag. With the flag on, Adding an image to a non-empty paragraph and list node inserts an media inline node, instead of media single node.
|
|
14
|
+
- Updated dependencies
|
|
15
|
+
|
|
3
16
|
## 0.4.0
|
|
4
17
|
|
|
5
18
|
### Minor Changes
|
package/dist/cjs/plugin.js
CHANGED
|
@@ -58,7 +58,6 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref2) {
|
|
|
58
58
|
options = _ref2$config === void 0 ? {} : _ref2$config,
|
|
59
59
|
api = _ref2.api;
|
|
60
60
|
var featureFlags = (api === null || api === void 0 || (_api$featureFlags = api.featureFlags) === null || _api$featureFlags === void 0 ? void 0 : _api$featureFlags.sharedState.currentState()) || {};
|
|
61
|
-
var apiWidth = api === null || api === void 0 ? void 0 : api.width;
|
|
62
61
|
return {
|
|
63
62
|
name: 'media',
|
|
64
63
|
getSharedState: function getSharedState(editorState) {
|
|
@@ -146,17 +145,16 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref2) {
|
|
|
146
145
|
}
|
|
147
146
|
}, {
|
|
148
147
|
name: 'mediaKeymap',
|
|
149
|
-
plugin: function plugin(
|
|
148
|
+
plugin: function plugin() {
|
|
150
149
|
var _api$analytics2;
|
|
151
|
-
|
|
152
|
-
return (0, _keymap2.default)(options, api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions, api === null || api === void 0 ? void 0 : api.selection.actions, apiWidth, getIntl);
|
|
150
|
+
return (0, _keymap2.default)(options, api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions, api === null || api === void 0 ? void 0 : api.selection.actions);
|
|
153
151
|
}
|
|
154
152
|
}];
|
|
155
153
|
if (options && options.allowMediaSingle) {
|
|
156
154
|
pmPlugins.push({
|
|
157
155
|
name: 'mediaSingleKeymap',
|
|
158
|
-
plugin: function plugin(
|
|
159
|
-
var schema =
|
|
156
|
+
plugin: function plugin(_ref5) {
|
|
157
|
+
var schema = _ref5.schema;
|
|
160
158
|
return (0, _keymapMediaSingle.default)(schema);
|
|
161
159
|
}
|
|
162
160
|
});
|
|
@@ -168,9 +166,9 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref2) {
|
|
|
168
166
|
});
|
|
169
167
|
pmPlugins.push({
|
|
170
168
|
name: 'mediaAltTextKeymap',
|
|
171
|
-
plugin: function plugin(
|
|
169
|
+
plugin: function plugin(_ref6) {
|
|
172
170
|
var _api$analytics3;
|
|
173
|
-
var schema =
|
|
171
|
+
var schema = _ref6.schema;
|
|
174
172
|
return (0, _keymap.default)(schema, api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions);
|
|
175
173
|
}
|
|
176
174
|
});
|
|
@@ -178,15 +176,15 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref2) {
|
|
|
178
176
|
if (options && options.allowLinking) {
|
|
179
177
|
pmPlugins.push({
|
|
180
178
|
name: 'mediaLinking',
|
|
181
|
-
plugin: function plugin(
|
|
182
|
-
var dispatch =
|
|
179
|
+
plugin: function plugin(_ref7) {
|
|
180
|
+
var dispatch = _ref7.dispatch;
|
|
183
181
|
return (0, _linking.default)(dispatch);
|
|
184
182
|
}
|
|
185
183
|
});
|
|
186
184
|
pmPlugins.push({
|
|
187
185
|
name: 'mediaLinkingKeymap',
|
|
188
|
-
plugin: function plugin(
|
|
189
|
-
var schema =
|
|
186
|
+
plugin: function plugin(_ref8) {
|
|
187
|
+
var schema = _ref8.schema;
|
|
190
188
|
return (0, _keymap3.default)(schema);
|
|
191
189
|
}
|
|
192
190
|
});
|
|
@@ -222,19 +220,19 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref2) {
|
|
|
222
220
|
});
|
|
223
221
|
return pmPlugins;
|
|
224
222
|
},
|
|
225
|
-
contentComponent: function contentComponent(
|
|
226
|
-
var editorView =
|
|
227
|
-
appearance =
|
|
223
|
+
contentComponent: function contentComponent(_ref9) {
|
|
224
|
+
var editorView = _ref9.editorView,
|
|
225
|
+
appearance = _ref9.appearance;
|
|
228
226
|
return /*#__PURE__*/_react.default.createElement(MediaPickerFunctionalComponent, {
|
|
229
227
|
editorDomElement: editorView.dom,
|
|
230
228
|
appearance: appearance,
|
|
231
229
|
api: api
|
|
232
230
|
});
|
|
233
231
|
},
|
|
234
|
-
secondaryToolbarComponent: function secondaryToolbarComponent(
|
|
235
|
-
var editorView =
|
|
236
|
-
eventDispatcher =
|
|
237
|
-
disabled =
|
|
232
|
+
secondaryToolbarComponent: function secondaryToolbarComponent(_ref10) {
|
|
233
|
+
var editorView = _ref10.editorView,
|
|
234
|
+
eventDispatcher = _ref10.eventDispatcher,
|
|
235
|
+
disabled = _ref10.disabled;
|
|
238
236
|
return /*#__PURE__*/_react.default.createElement(_ToolbarMedia.default, {
|
|
239
237
|
isDisabled: disabled,
|
|
240
238
|
isReducedSpacing: true,
|
|
@@ -242,8 +240,8 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref2) {
|
|
|
242
240
|
});
|
|
243
241
|
},
|
|
244
242
|
pluginsOptions: {
|
|
245
|
-
quickInsert: function quickInsert(
|
|
246
|
-
var formatMessage =
|
|
243
|
+
quickInsert: function quickInsert(_ref11) {
|
|
244
|
+
var formatMessage = _ref11.formatMessage;
|
|
247
245
|
return [{
|
|
248
246
|
id: 'media',
|
|
249
247
|
title: formatMessage(_messages.toolbarInsertBlockMessages.mediaFiles),
|
|
@@ -6,17 +6,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
exports.keymapPlugin = keymapPlugin;
|
|
8
8
|
var _keymaps = require("@atlaskit/editor-common/keymaps");
|
|
9
|
-
var _mediaSingle = require("@atlaskit/editor-common/media-single");
|
|
10
9
|
var _selection = require("@atlaskit/editor-common/selection");
|
|
11
10
|
var _keymap = require("@atlaskit/editor-prosemirror/keymap");
|
|
12
11
|
var _state = require("@atlaskit/editor-prosemirror/state");
|
|
13
|
-
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
14
12
|
var _captions = require("../commands/captions");
|
|
15
13
|
var _pluginKey = require("../pm-plugins/plugin-key");
|
|
16
|
-
|
|
17
|
-
var _utils = require("../toolbar/utils");
|
|
18
|
-
var _mediaResizeAnnouncerMess = require("./mediaResizeAnnouncerMess");
|
|
19
|
-
function keymapPlugin(options, editorAnalyticsAPI, editorSelectionAPI, widthPlugin, getIntl) {
|
|
14
|
+
function keymapPlugin(options, editorAnalyticsAPI, editorSelectionAPI) {
|
|
20
15
|
var list = {};
|
|
21
16
|
(0, _keymaps.bindKeymapWithCommand)(_keymaps.undo.common, ignoreLinksInSteps, list);
|
|
22
17
|
(0, _keymaps.bindKeymapWithCommand)(_keymaps.enter.common, splitMediaGroup, list);
|
|
@@ -27,10 +22,6 @@ function keymapPlugin(options, editorAnalyticsAPI, editorSelectionAPI, widthPlug
|
|
|
27
22
|
(0, _keymaps.bindKeymapWithCommand)(_keymaps.moveRight.common, arrowRightFromMediaSingle(editorSelectionAPI), list);
|
|
28
23
|
}
|
|
29
24
|
(0, _keymaps.bindKeymapWithCommand)(_keymaps.insertNewLine.common, splitMediaGroup, list);
|
|
30
|
-
(0, _keymaps.bindKeymapWithCommand)(_keymaps.increaseMediaSize.common, handleMediaIncrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
|
|
31
|
-
(0, _keymaps.bindKeymapWithCommand)(_keymaps.decreaseMediaSize.common, handleMediaDecrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
|
|
32
|
-
(0, _keymaps.bindKeymapWithCommand)(_keymaps.quickIncreaseMediaSize.common, handleMediaQuickIncrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
|
|
33
|
-
(0, _keymaps.bindKeymapWithCommand)(_keymaps.quickDecreaseMediaSize.common, handleMediaQuickDecrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
|
|
34
25
|
return (0, _keymap.keymap)(list);
|
|
35
26
|
}
|
|
36
27
|
var ignoreLinksInSteps = function ignoreLinksInSteps(state) {
|
|
@@ -42,92 +33,6 @@ var splitMediaGroup = function splitMediaGroup(state) {
|
|
|
42
33
|
var mediaPluginState = _pluginKey.stateKey.getState(state);
|
|
43
34
|
return mediaPluginState.splitMediaGroup();
|
|
44
35
|
};
|
|
45
|
-
var createAnnouncer = function createAnnouncer(action, mediaWidth, changeAmount, validation, getIntl) {
|
|
46
|
-
var announcerContainer = document.getElementById('media-announcer') || document.createElement('div');
|
|
47
|
-
var intl = getIntl();
|
|
48
|
-
if (!announcerContainer.id) {
|
|
49
|
-
announcerContainer.id = 'media-announcer';
|
|
50
|
-
announcerContainer.setAttribute('role', 'status');
|
|
51
|
-
announcerContainer.setAttribute('aria-live', 'polite');
|
|
52
|
-
announcerContainer.setAttribute('aria-atomic', 'true');
|
|
53
|
-
var style = announcerContainer.style;
|
|
54
|
-
style.position = 'absolute';
|
|
55
|
-
style.width = '1px';
|
|
56
|
-
style.height = '1px';
|
|
57
|
-
style.marginTop = '-1px';
|
|
58
|
-
style.opacity = '0';
|
|
59
|
-
style.overflow = 'hidden';
|
|
60
|
-
document.body.appendChild(announcerContainer);
|
|
61
|
-
} else {
|
|
62
|
-
var newMediaWidth = mediaWidth + changeAmount;
|
|
63
|
-
if (validation === 'greater-than-max') {
|
|
64
|
-
announcerContainer.textContent = intl.formatMessage(_mediaResizeAnnouncerMess.mediaResizeAnnouncerMess.MediaWidthIsMax);
|
|
65
|
-
} else if (validation === 'less-than-min') {
|
|
66
|
-
announcerContainer.textContent = intl.formatMessage(_mediaResizeAnnouncerMess.mediaResizeAnnouncerMess.MediaWidthIsMin);
|
|
67
|
-
} else {
|
|
68
|
-
announcerContainer.textContent = intl.formatMessage(_mediaResizeAnnouncerMess.mediaResizeAnnouncerMess.DefaultMediaWidth, {
|
|
69
|
-
action: action,
|
|
70
|
-
newMediaWidth: newMediaWidth
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
var handleMediaSizeChange = function handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, changeAmount, action, getIntl) {
|
|
76
|
-
return function (state, dispatch) {
|
|
77
|
-
var _selectedNode$node, _selectedNode$node2, _widthPlugin$sharedSt;
|
|
78
|
-
var selectedNode = (0, _utils.getSelectedMediaSingle)(state);
|
|
79
|
-
var layout = selectedNode === null || selectedNode === void 0 || (_selectedNode$node = selectedNode.node) === null || _selectedNode$node === void 0 || (_selectedNode$node = _selectedNode$node.attrs) === null || _selectedNode$node === void 0 ? void 0 : _selectedNode$node.layout;
|
|
80
|
-
var mediaWidth = selectedNode === null || selectedNode === void 0 || (_selectedNode$node2 = selectedNode.node) === null || _selectedNode$node2 === void 0 || (_selectedNode$node2 = _selectedNode$node2.attrs) === null || _selectedNode$node2 === void 0 ? void 0 : _selectedNode$node2.width;
|
|
81
|
-
var contentWidth =
|
|
82
|
-
// @ts-ignore readonly sharedState
|
|
83
|
-
(widthPlugin === null || widthPlugin === void 0 || (_widthPlugin$sharedSt = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt === void 0 ? void 0 : _widthPlugin$sharedSt.lineLength) || _editorSharedStyles.akEditorDefaultLayoutWidth;
|
|
84
|
-
var minWidth = _mediaSingle.MEDIA_SINGLE_DEFAULT_MIN_PIXEL_WIDTH;
|
|
85
|
-
var maxWidth;
|
|
86
|
-
var validation = 'valid';
|
|
87
|
-
var newWidth = mediaWidth + changeAmount;
|
|
88
|
-
var intl = getIntl();
|
|
89
|
-
if (options !== null && options !== void 0 && options.fullWidthEnabled) {
|
|
90
|
-
var _widthPlugin$sharedSt2;
|
|
91
|
-
// @ts-ignore readonly sharedState
|
|
92
|
-
maxWidth = widthPlugin === null || widthPlugin === void 0 || (_widthPlugin$sharedSt2 = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt2 === void 0 ? void 0 : _widthPlugin$sharedSt2.lineLength;
|
|
93
|
-
} else {
|
|
94
|
-
var _widthPlugin$sharedSt3;
|
|
95
|
-
maxWidth = (0, _mediaSingle.calcMediaSingleMaxWidth)( // @ts-ignore readonly sharedState
|
|
96
|
-
widthPlugin === null || widthPlugin === void 0 || (_widthPlugin$sharedSt3 = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt3 === void 0 ? void 0 : _widthPlugin$sharedSt3.width);
|
|
97
|
-
}
|
|
98
|
-
if (newWidth > maxWidth) {
|
|
99
|
-
newWidth = maxWidth;
|
|
100
|
-
validation = 'greater-than-max';
|
|
101
|
-
} else if (newWidth < minWidth) {
|
|
102
|
-
newWidth = minWidth;
|
|
103
|
-
validation = 'less-than-min';
|
|
104
|
-
} else {
|
|
105
|
-
newWidth;
|
|
106
|
-
validation = 'valid';
|
|
107
|
-
}
|
|
108
|
-
if (action === 'increased') {
|
|
109
|
-
action = intl.formatMessage(_mediaResizeAnnouncerMess.mediaResizeAnnouncerMess.IncreasedAction);
|
|
110
|
-
} else if (action === 'decreased') {
|
|
111
|
-
action = intl.formatMessage(_mediaResizeAnnouncerMess.mediaResizeAnnouncerMess.DecreasedAction);
|
|
112
|
-
}
|
|
113
|
-
var newLayout = (0, _utils.calcNewLayout)(newWidth, layout, contentWidth, options === null || options === void 0 ? void 0 : options.fullWidthEnabled);
|
|
114
|
-
(0, _commands.updateMediaSingleWidth)(editorAnalyticsAPI)(newWidth, validation, 'keyboard', newLayout)(state, dispatch);
|
|
115
|
-
createAnnouncer(action, mediaWidth, changeAmount, validation, getIntl);
|
|
116
|
-
return true;
|
|
117
|
-
};
|
|
118
|
-
};
|
|
119
|
-
var handleMediaIncrease = function handleMediaIncrease(editorAnalyticsAPI, widthPlugin, options, getIntl) {
|
|
120
|
-
return handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, 1, 'increased', getIntl);
|
|
121
|
-
};
|
|
122
|
-
var handleMediaDecrease = function handleMediaDecrease(editorAnalyticsAPI, widthPlugin, options, getIntl) {
|
|
123
|
-
return handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, -1, 'decreased', getIntl);
|
|
124
|
-
};
|
|
125
|
-
var handleMediaQuickIncrease = function handleMediaQuickIncrease(editorAnalyticsAPI, widthPlugin, options, getIntl) {
|
|
126
|
-
return handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, 10, 'increased', getIntl);
|
|
127
|
-
};
|
|
128
|
-
var handleMediaQuickDecrease = function handleMediaQuickDecrease(editorAnalyticsAPI, widthPlugin, options, getIntl) {
|
|
129
|
-
return handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, -10, 'decreased', getIntl);
|
|
130
|
-
};
|
|
131
36
|
var insertAndSelectCaption = function insertAndSelectCaption(editorAnalyticsAPI) {
|
|
132
37
|
return function (state, dispatch) {
|
|
133
38
|
var selection = state.selection,
|
|
@@ -38,6 +38,7 @@ var _pickerFacade = _interopRequireDefault(require("../picker-facade"));
|
|
|
38
38
|
var _DropPlaceholder = _interopRequireDefault(require("../ui/Media/DropPlaceholder"));
|
|
39
39
|
var _mediaCommon2 = require("../utils/media-common");
|
|
40
40
|
var _mediaFiles = require("../utils/media-files");
|
|
41
|
+
var _mediaInline = require("../utils/media-inline");
|
|
41
42
|
var _mediaSingle2 = require("../utils/media-single");
|
|
42
43
|
var _mediaTaskManager = require("./mediaTaskManager");
|
|
43
44
|
var _pluginKey = require("./plugin-key");
|
|
@@ -224,7 +225,7 @@ var MediaPluginStateImplementation = exports.MediaPluginStateImplementation = /*
|
|
|
224
225
|
* called when we insert a new file via the picker (connected via pickerfacade)
|
|
225
226
|
*/
|
|
226
227
|
(0, _defineProperty2.default)(this, "insertFile", function (mediaState, onMediaStateChanged, pickerType) {
|
|
227
|
-
var _this$pluginInjection, _mediaState$collectio, _this$mediaOptions2;
|
|
228
|
+
var _this$pluginInjection, _mediaState$collectio, _this$mediaOptions2, _this$pluginInjection2;
|
|
228
229
|
var state = _this.view.state;
|
|
229
230
|
var editorAnalyticsAPI = (_this$pluginInjection = _this.pluginInjectionApi) === null || _this$pluginInjection === void 0 || (_this$pluginInjection = _this$pluginInjection.analytics) === null || _this$pluginInjection === void 0 ? void 0 : _this$pluginInjection.actions;
|
|
230
231
|
var mediaStateWithContext = _objectSpread(_objectSpread({}, mediaState), {}, {
|
|
@@ -241,15 +242,18 @@ var MediaPluginStateImplementation = exports.MediaPluginStateImplementation = /*
|
|
|
241
242
|
allUploadsFinished: false
|
|
242
243
|
});
|
|
243
244
|
}
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
245
|
+
switch ((0, _mediaInline.getMediaNodeInsertionType)(state, (_this$mediaOptions2 = _this.mediaOptions) === null || _this$mediaOptions2 === void 0 ? void 0 : _this$mediaOptions2.featureFlags, mediaStateWithContext.fileMimeType)) {
|
|
246
|
+
case 'inline':
|
|
247
|
+
(0, _mediaFiles.insertMediaInlineNode)(editorAnalyticsAPI)(_this.view, mediaStateWithContext, collection, _this.getInputMethod(pickerType));
|
|
248
|
+
break;
|
|
249
|
+
case 'block':
|
|
250
|
+
// read width state right before inserting to get up-to-date and define values
|
|
251
|
+
var widthPluginState = (_this$pluginInjection2 = _this.pluginInjectionApi) === null || _this$pluginInjection2 === void 0 ? void 0 : _this$pluginInjection2.width.sharedState.currentState();
|
|
252
|
+
(0, _mediaSingle2.insertMediaSingleNode)(_this.view, mediaStateWithContext, _this.getInputMethod(pickerType), collection, _this.mediaOptions && _this.mediaOptions.alignLeftOnInsert, _this.newInsertionBehaviour, widthPluginState, editorAnalyticsAPI);
|
|
253
|
+
break;
|
|
254
|
+
case 'group':
|
|
255
|
+
(0, _mediaFiles.insertMediaGroupNode)(editorAnalyticsAPI)(_this.view, [mediaStateWithContext], collection, _this.getInputMethod(pickerType));
|
|
256
|
+
break;
|
|
253
257
|
}
|
|
254
258
|
|
|
255
259
|
// do events when media state changes
|
|
@@ -203,7 +203,7 @@ var setBorderMark = exports.setBorderMark = function setBorderMark(editorAnalyti
|
|
|
203
203
|
};
|
|
204
204
|
};
|
|
205
205
|
var updateMediaSingleWidth = exports.updateMediaSingleWidth = function updateMediaSingleWidth(editorAnalyticsAPI) {
|
|
206
|
-
return function (width, validation,
|
|
206
|
+
return function (width, validation, layout) {
|
|
207
207
|
return function (state, dispatch) {
|
|
208
208
|
var selectedMediaSingleNode = (0, _utils2.getSelectedMediaSingle)(state);
|
|
209
209
|
if (!selectedMediaSingleNode) {
|
|
@@ -322,7 +322,7 @@ var generateMediaSingleFloatingToolbar = function generateMediaSingleFloatingToo
|
|
|
322
322
|
var width = _ref2.width,
|
|
323
323
|
validation = _ref2.validation;
|
|
324
324
|
var newLayout = (0, _utils2.calcNewLayout)(width, layout, contentWidth, options.fullWidthEnabled, isNested);
|
|
325
|
-
(0, _commands.updateMediaSingleWidth)(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a4 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a4 === void 0 ? void 0 : _pluginInjectionApi$a4.actions)(width, validation,
|
|
325
|
+
(0, _commands.updateMediaSingleWidth)(pluginInjectionApi === null || pluginInjectionApi === void 0 || (_pluginInjectionApi$a4 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a4 === void 0 ? void 0 : _pluginInjectionApi$a4.actions)(width, validation, newLayout)(state, dispatch);
|
|
326
326
|
},
|
|
327
327
|
onMigrate: function onMigrate() {
|
|
328
328
|
var tr = state.tr.setNodeMarkup(selectedMediaSingleNode.pos, undefined, _objectSpread(_objectSpread({}, selectedMediaSingleNode.node.attrs), {}, {
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.isImage = void 0;
|
|
6
|
+
exports.isVideo = exports.isImage = void 0;
|
|
7
7
|
var isImage = exports.isImage = function isImage(fileType) {
|
|
8
8
|
return !!fileType && (fileType.indexOf('image/') > -1 || fileType.indexOf('video/') > -1);
|
|
9
|
+
};
|
|
10
|
+
var isVideo = exports.isVideo = function isVideo(fileType) {
|
|
11
|
+
return !!fileType && fileType.includes('video/');
|
|
9
12
|
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getMediaNodeInsertionType = void 0;
|
|
7
|
+
var _utils = require("@atlaskit/editor-common/utils");
|
|
8
|
+
var _mediaCommon = require("@atlaskit/media-common");
|
|
9
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
10
|
+
var _mediaFiles = require("../utils/media-files");
|
|
11
|
+
var _mediaSingle = require("../utils/media-single");
|
|
12
|
+
var _isType = require("./is-type");
|
|
13
|
+
var _mediaCommon2 = require("./media-common");
|
|
14
|
+
var getMediaNodeInsertionType = exports.getMediaNodeInsertionType = function getMediaNodeInsertionType(state, mediaFeatureFlags, fileMimeType) {
|
|
15
|
+
var canInsertInlineNode = (0, _mediaCommon.getMediaFeatureFlag)('mediaInline', mediaFeatureFlags) && !(0, _utils.isInEmptyLine)(state) && (!(0, _mediaCommon2.isInsidePotentialEmptyParagraph)(state) || (0, _utils.isInListItem)(state)) && (0, _mediaFiles.canInsertMediaInline)(state);
|
|
16
|
+
if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.media.inline-image.base-support')) {
|
|
17
|
+
if (canInsertInlineNode && !(0, _isType.isVideo)(fileMimeType)) {
|
|
18
|
+
return 'inline';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if ((0, _mediaSingle.isMediaSingle)(state.schema, fileMimeType)) {
|
|
22
|
+
return 'block';
|
|
23
|
+
} else if (canInsertInlineNode) {
|
|
24
|
+
return 'inline';
|
|
25
|
+
}
|
|
26
|
+
return 'group';
|
|
27
|
+
};
|
|
@@ -18,7 +18,7 @@ var _model = require("@atlaskit/editor-prosemirror/model");
|
|
|
18
18
|
var _utils2 = require("@atlaskit/editor-prosemirror/utils");
|
|
19
19
|
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
20
20
|
var _mediaCommon = require("../utils/media-common");
|
|
21
|
-
var
|
|
21
|
+
var _isType = require("./is-type");
|
|
22
22
|
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; }
|
|
23
23
|
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; }
|
|
24
24
|
var getInsertMediaAnalytics = function getInsertMediaAnalytics(inputMethod, fileExtension) {
|
|
@@ -62,7 +62,7 @@ function insertNodesWithOptionalParagraph(nodes) {
|
|
|
62
62
|
};
|
|
63
63
|
}
|
|
64
64
|
var isMediaSingle = exports.isMediaSingle = function isMediaSingle(schema, fileMimeType) {
|
|
65
|
-
return !!schema.nodes.mediaSingle && (0,
|
|
65
|
+
return !!schema.nodes.mediaSingle && (0, _isType.isImage)(fileMimeType);
|
|
66
66
|
};
|
|
67
67
|
var insertMediaAsMediaSingle = exports.insertMediaAsMediaSingle = function insertMediaAsMediaSingle(view, node, inputMethod, editorAnalyticsAPI) {
|
|
68
68
|
var state = view.state,
|
|
@@ -75,7 +75,7 @@ var insertMediaAsMediaSingle = exports.insertMediaAsMediaSingle = function inser
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
// if not an image type media node
|
|
78
|
-
if (node.type !== media || !(0,
|
|
78
|
+
if (node.type !== media || !(0, _isType.isImage)(node.attrs.__fileMimeType) && node.attrs.type !== 'external') {
|
|
79
79
|
return false;
|
|
80
80
|
}
|
|
81
81
|
var mediaSingleNode = mediaSingle.create({}, node);
|
package/dist/es2019/plugin.js
CHANGED
|
@@ -49,7 +49,6 @@ export const mediaPlugin = ({
|
|
|
49
49
|
}) => {
|
|
50
50
|
var _api$featureFlags;
|
|
51
51
|
const featureFlags = (api === null || api === void 0 ? void 0 : (_api$featureFlags = api.featureFlags) === null || _api$featureFlags === void 0 ? void 0 : _api$featureFlags.sharedState.currentState()) || {};
|
|
52
|
-
const apiWidth = api === null || api === void 0 ? void 0 : api.width;
|
|
53
52
|
return {
|
|
54
53
|
name: 'media',
|
|
55
54
|
getSharedState(editorState) {
|
|
@@ -137,11 +136,9 @@ export const mediaPlugin = ({
|
|
|
137
136
|
}
|
|
138
137
|
}, {
|
|
139
138
|
name: 'mediaKeymap',
|
|
140
|
-
plugin: ({
|
|
141
|
-
getIntl
|
|
142
|
-
}) => {
|
|
139
|
+
plugin: () => {
|
|
143
140
|
var _api$analytics2;
|
|
144
|
-
return keymapPlugin(options, api === null || api === void 0 ? void 0 : (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions, api === null || api === void 0 ? void 0 : api.selection.actions
|
|
141
|
+
return keymapPlugin(options, api === null || api === void 0 ? void 0 : (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions, api === null || api === void 0 ? void 0 : api.selection.actions);
|
|
145
142
|
}
|
|
146
143
|
}];
|
|
147
144
|
if (options && options.allowMediaSingle) {
|
|
@@ -1,15 +1,10 @@
|
|
|
1
|
-
import { bindKeymapWithCommand,
|
|
2
|
-
import { calcMediaSingleMaxWidth, MEDIA_SINGLE_DEFAULT_MIN_PIXEL_WIDTH } from '@atlaskit/editor-common/media-single';
|
|
1
|
+
import { bindKeymapWithCommand, enter, insertNewLine, moveDown, moveLeft, moveRight, tab, undo } from '@atlaskit/editor-common/keymaps';
|
|
3
2
|
import { GapCursorSelection, Side } from '@atlaskit/editor-common/selection';
|
|
4
3
|
import { keymap } from '@atlaskit/editor-prosemirror/keymap';
|
|
5
4
|
import { NodeSelection } from '@atlaskit/editor-prosemirror/state';
|
|
6
|
-
import { akEditorDefaultLayoutWidth } from '@atlaskit/editor-shared-styles';
|
|
7
5
|
import { insertAndSelectCaptionFromMediaSinglePos, selectCaptionFromMediaSinglePos } from '../commands/captions';
|
|
8
6
|
import { stateKey } from '../pm-plugins/plugin-key';
|
|
9
|
-
|
|
10
|
-
import { calcNewLayout, getSelectedMediaSingle } from '../toolbar/utils';
|
|
11
|
-
import { mediaResizeAnnouncerMess } from './mediaResizeAnnouncerMess';
|
|
12
|
-
export function keymapPlugin(options, editorAnalyticsAPI, editorSelectionAPI, widthPlugin, getIntl) {
|
|
7
|
+
export function keymapPlugin(options, editorAnalyticsAPI, editorSelectionAPI) {
|
|
13
8
|
const list = {};
|
|
14
9
|
bindKeymapWithCommand(undo.common, ignoreLinksInSteps, list);
|
|
15
10
|
bindKeymapWithCommand(enter.common, splitMediaGroup, list);
|
|
@@ -20,10 +15,6 @@ export function keymapPlugin(options, editorAnalyticsAPI, editorSelectionAPI, wi
|
|
|
20
15
|
bindKeymapWithCommand(moveRight.common, arrowRightFromMediaSingle(editorSelectionAPI), list);
|
|
21
16
|
}
|
|
22
17
|
bindKeymapWithCommand(insertNewLine.common, splitMediaGroup, list);
|
|
23
|
-
bindKeymapWithCommand(increaseMediaSize.common, handleMediaIncrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
|
|
24
|
-
bindKeymapWithCommand(decreaseMediaSize.common, handleMediaDecrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
|
|
25
|
-
bindKeymapWithCommand(quickIncreaseMediaSize.common, handleMediaQuickIncrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
|
|
26
|
-
bindKeymapWithCommand(quickDecreaseMediaSize.common, handleMediaQuickDecrease(editorAnalyticsAPI, widthPlugin, options, getIntl), list);
|
|
27
18
|
return keymap(list);
|
|
28
19
|
}
|
|
29
20
|
const ignoreLinksInSteps = state => {
|
|
@@ -35,82 +26,6 @@ const splitMediaGroup = state => {
|
|
|
35
26
|
const mediaPluginState = stateKey.getState(state);
|
|
36
27
|
return mediaPluginState.splitMediaGroup();
|
|
37
28
|
};
|
|
38
|
-
const createAnnouncer = (action, mediaWidth, changeAmount, validation, getIntl) => {
|
|
39
|
-
let announcerContainer = document.getElementById('media-announcer') || document.createElement('div');
|
|
40
|
-
const intl = getIntl();
|
|
41
|
-
if (!announcerContainer.id) {
|
|
42
|
-
announcerContainer.id = 'media-announcer';
|
|
43
|
-
announcerContainer.setAttribute('role', 'status');
|
|
44
|
-
announcerContainer.setAttribute('aria-live', 'polite');
|
|
45
|
-
announcerContainer.setAttribute('aria-atomic', 'true');
|
|
46
|
-
const style = announcerContainer.style;
|
|
47
|
-
style.position = 'absolute';
|
|
48
|
-
style.width = '1px';
|
|
49
|
-
style.height = '1px';
|
|
50
|
-
style.marginTop = '-1px';
|
|
51
|
-
style.opacity = '0';
|
|
52
|
-
style.overflow = 'hidden';
|
|
53
|
-
document.body.appendChild(announcerContainer);
|
|
54
|
-
} else {
|
|
55
|
-
const newMediaWidth = mediaWidth + changeAmount;
|
|
56
|
-
if (validation === 'greater-than-max') {
|
|
57
|
-
announcerContainer.textContent = intl.formatMessage(mediaResizeAnnouncerMess.MediaWidthIsMax);
|
|
58
|
-
} else if (validation === 'less-than-min') {
|
|
59
|
-
announcerContainer.textContent = intl.formatMessage(mediaResizeAnnouncerMess.MediaWidthIsMin);
|
|
60
|
-
} else {
|
|
61
|
-
announcerContainer.textContent = intl.formatMessage(mediaResizeAnnouncerMess.DefaultMediaWidth, {
|
|
62
|
-
action: action,
|
|
63
|
-
newMediaWidth: newMediaWidth
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
const handleMediaSizeChange = (editorAnalyticsAPI, widthPlugin, options, changeAmount, action, getIntl) => (state, dispatch) => {
|
|
69
|
-
var _selectedNode$node, _selectedNode$node$at, _selectedNode$node2, _selectedNode$node2$a, _widthPlugin$sharedSt;
|
|
70
|
-
const selectedNode = getSelectedMediaSingle(state);
|
|
71
|
-
const layout = selectedNode === null || selectedNode === void 0 ? void 0 : (_selectedNode$node = selectedNode.node) === null || _selectedNode$node === void 0 ? void 0 : (_selectedNode$node$at = _selectedNode$node.attrs) === null || _selectedNode$node$at === void 0 ? void 0 : _selectedNode$node$at.layout;
|
|
72
|
-
const mediaWidth = selectedNode === null || selectedNode === void 0 ? void 0 : (_selectedNode$node2 = selectedNode.node) === null || _selectedNode$node2 === void 0 ? void 0 : (_selectedNode$node2$a = _selectedNode$node2.attrs) === null || _selectedNode$node2$a === void 0 ? void 0 : _selectedNode$node2$a.width;
|
|
73
|
-
const contentWidth =
|
|
74
|
-
// @ts-ignore readonly sharedState
|
|
75
|
-
(widthPlugin === null || widthPlugin === void 0 ? void 0 : (_widthPlugin$sharedSt = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt === void 0 ? void 0 : _widthPlugin$sharedSt.lineLength) || akEditorDefaultLayoutWidth;
|
|
76
|
-
const minWidth = MEDIA_SINGLE_DEFAULT_MIN_PIXEL_WIDTH;
|
|
77
|
-
let maxWidth;
|
|
78
|
-
let validation = 'valid';
|
|
79
|
-
let newWidth = mediaWidth + changeAmount;
|
|
80
|
-
const intl = getIntl();
|
|
81
|
-
if (options !== null && options !== void 0 && options.fullWidthEnabled) {
|
|
82
|
-
var _widthPlugin$sharedSt2;
|
|
83
|
-
// @ts-ignore readonly sharedState
|
|
84
|
-
maxWidth = widthPlugin === null || widthPlugin === void 0 ? void 0 : (_widthPlugin$sharedSt2 = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt2 === void 0 ? void 0 : _widthPlugin$sharedSt2.lineLength;
|
|
85
|
-
} else {
|
|
86
|
-
var _widthPlugin$sharedSt3;
|
|
87
|
-
maxWidth = calcMediaSingleMaxWidth( // @ts-ignore readonly sharedState
|
|
88
|
-
widthPlugin === null || widthPlugin === void 0 ? void 0 : (_widthPlugin$sharedSt3 = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt3 === void 0 ? void 0 : _widthPlugin$sharedSt3.width);
|
|
89
|
-
}
|
|
90
|
-
if (newWidth > maxWidth) {
|
|
91
|
-
newWidth = maxWidth;
|
|
92
|
-
validation = 'greater-than-max';
|
|
93
|
-
} else if (newWidth < minWidth) {
|
|
94
|
-
newWidth = minWidth;
|
|
95
|
-
validation = 'less-than-min';
|
|
96
|
-
} else {
|
|
97
|
-
newWidth;
|
|
98
|
-
validation = 'valid';
|
|
99
|
-
}
|
|
100
|
-
if (action === 'increased') {
|
|
101
|
-
action = intl.formatMessage(mediaResizeAnnouncerMess.IncreasedAction);
|
|
102
|
-
} else if (action === 'decreased') {
|
|
103
|
-
action = intl.formatMessage(mediaResizeAnnouncerMess.DecreasedAction);
|
|
104
|
-
}
|
|
105
|
-
const newLayout = calcNewLayout(newWidth, layout, contentWidth, options === null || options === void 0 ? void 0 : options.fullWidthEnabled);
|
|
106
|
-
updateMediaSingleWidth(editorAnalyticsAPI)(newWidth, validation, 'keyboard', newLayout)(state, dispatch);
|
|
107
|
-
createAnnouncer(action, mediaWidth, changeAmount, validation, getIntl);
|
|
108
|
-
return true;
|
|
109
|
-
};
|
|
110
|
-
const handleMediaIncrease = (editorAnalyticsAPI, widthPlugin, options, getIntl) => handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, 1, 'increased', getIntl);
|
|
111
|
-
const handleMediaDecrease = (editorAnalyticsAPI, widthPlugin, options, getIntl) => handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, -1, 'decreased', getIntl);
|
|
112
|
-
const handleMediaQuickIncrease = (editorAnalyticsAPI, widthPlugin, options, getIntl) => handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, 10, 'increased', getIntl);
|
|
113
|
-
const handleMediaQuickDecrease = (editorAnalyticsAPI, widthPlugin, options, getIntl) => handleMediaSizeChange(editorAnalyticsAPI, widthPlugin, options, -10, 'decreased', getIntl);
|
|
114
29
|
const insertAndSelectCaption = editorAnalyticsAPI => (state, dispatch) => {
|
|
115
30
|
const {
|
|
116
31
|
selection,
|
|
@@ -6,7 +6,7 @@ import { RawIntlProvider } from 'react-intl-next';
|
|
|
6
6
|
import { INPUT_METHOD } from '@atlaskit/editor-common/analytics';
|
|
7
7
|
import { CAPTION_PLACEHOLDER_ID, getMaxWidthForNestedNodeNext } from '@atlaskit/editor-common/media-single';
|
|
8
8
|
import { SafePlugin } from '@atlaskit/editor-common/safe-plugin';
|
|
9
|
-
import { browser, ErrorReporter
|
|
9
|
+
import { browser, ErrorReporter } from '@atlaskit/editor-common/utils';
|
|
10
10
|
import { AllSelection, NodeSelection, Selection, TextSelection } from '@atlaskit/editor-prosemirror/state';
|
|
11
11
|
import { insertPoint } from '@atlaskit/editor-prosemirror/transform';
|
|
12
12
|
import { findDomRefAtPos, findParentNodeOfType, findSelectedNodeOfType, isNodeSelection } from '@atlaskit/editor-prosemirror/utils';
|
|
@@ -18,9 +18,10 @@ import * as helpers from '../commands/helpers';
|
|
|
18
18
|
import { updateMediaSingleNodeAttrs } from '../commands/helpers';
|
|
19
19
|
import PickerFacade from '../picker-facade';
|
|
20
20
|
import DropPlaceholder from '../ui/Media/DropPlaceholder';
|
|
21
|
-
import {
|
|
22
|
-
import {
|
|
23
|
-
import {
|
|
21
|
+
import { removeMediaNode, splitMediaGroup } from '../utils/media-common';
|
|
22
|
+
import { insertMediaGroupNode, insertMediaInlineNode } from '../utils/media-files';
|
|
23
|
+
import { getMediaNodeInsertionType } from '../utils/media-inline';
|
|
24
|
+
import { insertMediaSingleNode } from '../utils/media-single';
|
|
24
25
|
import { MediaTaskManager } from './mediaTaskManager';
|
|
25
26
|
import { stateKey } from './plugin-key';
|
|
26
27
|
export { stateKey } from './plugin-key';
|
|
@@ -152,7 +153,7 @@ export class MediaPluginStateImplementation {
|
|
|
152
153
|
* called when we insert a new file via the picker (connected via pickerfacade)
|
|
153
154
|
*/
|
|
154
155
|
_defineProperty(this, "insertFile", (mediaState, onMediaStateChanged, pickerType) => {
|
|
155
|
-
var _this$pluginInjection, _this$pluginInjection2, _mediaState$collectio, _this$mediaOptions2;
|
|
156
|
+
var _this$pluginInjection, _this$pluginInjection2, _mediaState$collectio, _this$mediaOptions2, _this$pluginInjection3;
|
|
156
157
|
const {
|
|
157
158
|
state
|
|
158
159
|
} = this.view;
|
|
@@ -172,15 +173,18 @@ export class MediaPluginStateImplementation {
|
|
|
172
173
|
allUploadsFinished: false
|
|
173
174
|
});
|
|
174
175
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
176
|
+
switch (getMediaNodeInsertionType(state, (_this$mediaOptions2 = this.mediaOptions) === null || _this$mediaOptions2 === void 0 ? void 0 : _this$mediaOptions2.featureFlags, mediaStateWithContext.fileMimeType)) {
|
|
177
|
+
case 'inline':
|
|
178
|
+
insertMediaInlineNode(editorAnalyticsAPI)(this.view, mediaStateWithContext, collection, this.getInputMethod(pickerType));
|
|
179
|
+
break;
|
|
180
|
+
case 'block':
|
|
181
|
+
// read width state right before inserting to get up-to-date and define values
|
|
182
|
+
const widthPluginState = (_this$pluginInjection3 = this.pluginInjectionApi) === null || _this$pluginInjection3 === void 0 ? void 0 : _this$pluginInjection3.width.sharedState.currentState();
|
|
183
|
+
insertMediaSingleNode(this.view, mediaStateWithContext, this.getInputMethod(pickerType), collection, this.mediaOptions && this.mediaOptions.alignLeftOnInsert, this.newInsertionBehaviour, widthPluginState, editorAnalyticsAPI);
|
|
184
|
+
break;
|
|
185
|
+
case 'group':
|
|
186
|
+
insertMediaGroupNode(editorAnalyticsAPI)(this.view, [mediaStateWithContext], collection, this.getInputMethod(pickerType));
|
|
187
|
+
break;
|
|
184
188
|
}
|
|
185
189
|
|
|
186
190
|
// do events when media state changes
|
|
@@ -181,7 +181,7 @@ export const setBorderMark = editorAnalyticsAPI => attrs => (state, dispatch) =>
|
|
|
181
181
|
}
|
|
182
182
|
return true;
|
|
183
183
|
};
|
|
184
|
-
export const updateMediaSingleWidth = editorAnalyticsAPI => (width, validation,
|
|
184
|
+
export const updateMediaSingleWidth = editorAnalyticsAPI => (width, validation, layout) => (state, dispatch) => {
|
|
185
185
|
const selectedMediaSingleNode = getSelectedMediaSingle(state);
|
|
186
186
|
if (!selectedMediaSingleNode) {
|
|
187
187
|
return false;
|
|
@@ -324,7 +324,7 @@ const generateMediaSingleFloatingToolbar = (state, intl, options, pluginState, m
|
|
|
324
324
|
}) => {
|
|
325
325
|
var _pluginInjectionApi$a4;
|
|
326
326
|
const newLayout = calcNewLayout(width, layout, contentWidth, options.fullWidthEnabled, isNested);
|
|
327
|
-
updateMediaSingleWidth(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a4 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a4 === void 0 ? void 0 : _pluginInjectionApi$a4.actions)(width, validation,
|
|
327
|
+
updateMediaSingleWidth(pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$a4 = pluginInjectionApi.analytics) === null || _pluginInjectionApi$a4 === void 0 ? void 0 : _pluginInjectionApi$a4.actions)(width, validation, newLayout)(state, dispatch);
|
|
328
328
|
},
|
|
329
329
|
onMigrate: () => {
|
|
330
330
|
const tr = state.tr.setNodeMarkup(selectedMediaSingleNode.pos, undefined, {
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { isInEmptyLine, isInListItem } from '@atlaskit/editor-common/utils';
|
|
2
|
+
import { getMediaFeatureFlag } from '@atlaskit/media-common';
|
|
3
|
+
import { getBooleanFF } from '@atlaskit/platform-feature-flags';
|
|
4
|
+
import { canInsertMediaInline } from '../utils/media-files';
|
|
5
|
+
import { isMediaSingle } from '../utils/media-single';
|
|
6
|
+
import { isVideo } from './is-type';
|
|
7
|
+
import { isInsidePotentialEmptyParagraph } from './media-common';
|
|
8
|
+
export const getMediaNodeInsertionType = (state, mediaFeatureFlags, fileMimeType) => {
|
|
9
|
+
const canInsertInlineNode = getMediaFeatureFlag('mediaInline', mediaFeatureFlags) && !isInEmptyLine(state) && (!isInsidePotentialEmptyParagraph(state) || isInListItem(state)) && canInsertMediaInline(state);
|
|
10
|
+
if (getBooleanFF('platform.editor.media.inline-image.base-support')) {
|
|
11
|
+
if (canInsertInlineNode && !isVideo(fileMimeType)) {
|
|
12
|
+
return 'inline';
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
if (isMediaSingle(state.schema, fileMimeType)) {
|
|
16
|
+
return 'block';
|
|
17
|
+
} else if (canInsertInlineNode) {
|
|
18
|
+
return 'inline';
|
|
19
|
+
}
|
|
20
|
+
return 'group';
|
|
21
|
+
};
|