@atlaskit/editor-plugin-media 9.1.1 → 9.3.0
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 +18 -0
- package/dist/cjs/mediaPlugin.js +7 -5
- package/dist/cjs/nodeviews/mediaSingleNext.js +46 -0
- package/dist/cjs/pm-plugins/alt-text/ui/AltTextEdit.js +1 -1
- package/dist/cjs/pm-plugins/commands.js +7 -1
- package/dist/cjs/pm-plugins/utils/media-single.js +103 -4
- package/dist/cjs/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +15 -5
- package/dist/cjs/ui/ResizableMediaSingle/index.js +6 -0
- package/dist/es2019/mediaPlugin.js +8 -6
- package/dist/es2019/nodeviews/mediaSingleNext.js +46 -0
- package/dist/es2019/pm-plugins/alt-text/ui/AltTextEdit.js +1 -1
- package/dist/es2019/pm-plugins/commands.js +3 -1
- package/dist/es2019/pm-plugins/utils/media-single.js +105 -1
- package/dist/es2019/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +15 -5
- package/dist/es2019/ui/ResizableMediaSingle/index.js +6 -0
- package/dist/esm/mediaPlugin.js +8 -6
- package/dist/esm/nodeviews/mediaSingleNext.js +46 -0
- package/dist/esm/pm-plugins/alt-text/ui/AltTextEdit.js +1 -1
- package/dist/esm/pm-plugins/commands.js +6 -0
- package/dist/esm/pm-plugins/utils/media-single.js +103 -4
- package/dist/esm/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +15 -5
- package/dist/esm/ui/ResizableMediaSingle/index.js +6 -0
- package/dist/types/mediaPluginType.d.ts +15 -0
- package/dist/types/pm-plugins/commands.d.ts +2 -0
- package/dist/types/pm-plugins/utils/media-single.d.ts +3 -1
- package/dist/types-ts4.5/mediaPluginType.d.ts +15 -0
- package/dist/types-ts4.5/pm-plugins/commands.d.ts +2 -0
- package/dist/types-ts4.5/pm-plugins/utils/media-single.d.ts +3 -1
- package/package.json +9 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @atlaskit/editor-plugin-media
|
|
2
2
|
|
|
3
|
+
## 9.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [`12da6b7aac3a9`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/12da6b7aac3a9) -
|
|
8
|
+
add support of disable resize handles in resizable media single
|
|
9
|
+
|
|
10
|
+
## 9.2.0
|
|
11
|
+
|
|
12
|
+
### Minor Changes
|
|
13
|
+
|
|
14
|
+
- [`ca937489954b8`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/ca937489954b8) -
|
|
15
|
+
Introduce new insertMediaSingle on media plugin and deprecate old action version.
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- Updated dependencies
|
|
20
|
+
|
|
3
21
|
## 9.1.1
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/dist/cjs/mediaPlugin.js
CHANGED
|
@@ -105,6 +105,7 @@ var MediaViewerFunctionalComponent = function MediaViewerFunctionalComponent(_re
|
|
|
105
105
|
});
|
|
106
106
|
};
|
|
107
107
|
var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref3) {
|
|
108
|
+
var _api$analytics3;
|
|
108
109
|
var _ref3$config = _ref3.config,
|
|
109
110
|
options = _ref3$config === void 0 ? {} : _ref3$config,
|
|
110
111
|
api = _ref3.api;
|
|
@@ -159,7 +160,8 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref3) {
|
|
|
159
160
|
commands: {
|
|
160
161
|
showMediaViewer: _commands.showMediaViewer,
|
|
161
162
|
hideMediaViewer: _commands.hideMediaViewer,
|
|
162
|
-
trackMediaPaste: _commands.trackMediaPaste
|
|
163
|
+
trackMediaPaste: _commands.trackMediaPaste,
|
|
164
|
+
insertMediaSingle: (0, _commands.insertMediaAsMediaSingleCommand)(api === null || api === void 0 || (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions, options.allowPixelResizing)
|
|
163
165
|
},
|
|
164
166
|
nodes: function nodes() {
|
|
165
167
|
var _ref5 = options || {},
|
|
@@ -234,9 +236,9 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref3) {
|
|
|
234
236
|
}, {
|
|
235
237
|
name: 'mediaKeymap',
|
|
236
238
|
plugin: function plugin(_ref7) {
|
|
237
|
-
var _api$
|
|
239
|
+
var _api$analytics4, _api$selection;
|
|
238
240
|
var getIntl = _ref7.getIntl;
|
|
239
|
-
return (0, _keymap2.default)(options, api === null || api === void 0 || (_api$
|
|
241
|
+
return (0, _keymap2.default)(options, api === null || api === void 0 || (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions, api === null || api === void 0 || (_api$selection = api.selection) === null || _api$selection === void 0 ? void 0 : _api$selection.actions, api === null || api === void 0 ? void 0 : api.width, getIntl);
|
|
240
242
|
}
|
|
241
243
|
}];
|
|
242
244
|
if (options && options.allowMediaSingle) {
|
|
@@ -256,9 +258,9 @@ var mediaPlugin = exports.mediaPlugin = function mediaPlugin(_ref3) {
|
|
|
256
258
|
pmPlugins.push({
|
|
257
259
|
name: 'mediaAltTextKeymap',
|
|
258
260
|
plugin: function plugin(_ref9) {
|
|
259
|
-
var _api$
|
|
261
|
+
var _api$analytics5;
|
|
260
262
|
var schema = _ref9.schema;
|
|
261
|
-
return (0, _keymap.default)(schema, api === null || api === void 0 || (_api$
|
|
263
|
+
return (0, _keymap.default)(schema, api === null || api === void 0 || (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions);
|
|
262
264
|
}
|
|
263
265
|
});
|
|
264
266
|
}
|
|
@@ -498,6 +498,52 @@ var MediaSingleNodeNext = exports.MediaSingleNodeNext = function MediaSingleNode
|
|
|
498
498
|
onClick: clickPlaceholder,
|
|
499
499
|
placeholderMessage: mediaOptions.allowImagePreview ? _media.captionMessages.placeholderWithDoubleClickPrompt : _media.captionMessages.placeholder
|
|
500
500
|
})));
|
|
501
|
+
if ((0, _expValEquals.expValEquals)('platform_editor_media_vc_fixes', 'isEnabled', true)) {
|
|
502
|
+
return mediaOptions.allowPixelResizing ? (0, _react2.jsx)(_ResizableMediaSingleNext.default, {
|
|
503
|
+
view: view,
|
|
504
|
+
getPos: getPos,
|
|
505
|
+
updateSize: updateSize,
|
|
506
|
+
gridSize: 12,
|
|
507
|
+
viewMediaClientConfig: viewMediaClientConfig,
|
|
508
|
+
allowBreakoutSnapPoints: mediaOptions && mediaOptions.allowBreakoutSnapPoints,
|
|
509
|
+
selected: isSelected,
|
|
510
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
511
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
512
|
+
layout: layout,
|
|
513
|
+
width: width,
|
|
514
|
+
height: height,
|
|
515
|
+
containerWidth: containerWidth,
|
|
516
|
+
lineLength: contentWidth || FALLBACK_MOST_COMMON_WIDTH,
|
|
517
|
+
fullWidthMode: fullWidthMode,
|
|
518
|
+
hasFallbackContainer: false,
|
|
519
|
+
mediaSingleWidth: mediaSingleWidth,
|
|
520
|
+
editorAppearance: editorAppearance,
|
|
521
|
+
showLegacyNotification: widthType !== 'pixel',
|
|
522
|
+
forceHandlePositioning: mediaOptions === null || mediaOptions === void 0 ? void 0 : mediaOptions.forceHandlePositioning,
|
|
523
|
+
disableHandles: !canResize
|
|
524
|
+
}, MediaChildren) : (0, _react2.jsx)(_ResizableMediaSingle.default, {
|
|
525
|
+
view: view,
|
|
526
|
+
getPos: getPos,
|
|
527
|
+
updateSize: updateSize,
|
|
528
|
+
gridSize: 12,
|
|
529
|
+
viewMediaClientConfig: viewMediaClientConfig,
|
|
530
|
+
allowBreakoutSnapPoints: mediaOptions && mediaOptions.allowBreakoutSnapPoints,
|
|
531
|
+
selected: isSelected,
|
|
532
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
533
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
534
|
+
layout: layout,
|
|
535
|
+
width: width,
|
|
536
|
+
height: height,
|
|
537
|
+
containerWidth: containerWidth,
|
|
538
|
+
fullWidthMode: fullWidthMode,
|
|
539
|
+
hasFallbackContainer: false,
|
|
540
|
+
mediaSingleWidth: mediaSingleWidth,
|
|
541
|
+
editorAppearance: editorAppearance,
|
|
542
|
+
lineLength: contentWidthForLegacyExperience || FALLBACK_MOST_COMMON_WIDTH,
|
|
543
|
+
pctWidth: mediaSingleWidthAttribute,
|
|
544
|
+
disableHandles: !canResize
|
|
545
|
+
}, MediaChildren);
|
|
546
|
+
}
|
|
501
547
|
return (0, _react2.jsx)(_react.Fragment, null, canResize ? mediaOptions.allowPixelResizing ? (0, _react2.jsx)(_ResizableMediaSingleNext.default, {
|
|
502
548
|
view: view,
|
|
503
549
|
getPos: getPos,
|
|
@@ -22,7 +22,7 @@ var _toolbarFlagCheck = require("@atlaskit/editor-common/toolbar-flag-check");
|
|
|
22
22
|
var _ui = require("@atlaskit/editor-common/ui");
|
|
23
23
|
var _editorSharedStyles = require("@atlaskit/editor-shared-styles");
|
|
24
24
|
var _chevronLeft = _interopRequireDefault(require("@atlaskit/icon/core/chevron-left"));
|
|
25
|
-
var _crossCircle = _interopRequireDefault(require("@atlaskit/icon/core/
|
|
25
|
+
var _crossCircle = _interopRequireDefault(require("@atlaskit/icon/core/cross-circle"));
|
|
26
26
|
var _colors = require("@atlaskit/theme/colors");
|
|
27
27
|
var _commands = require("../commands");
|
|
28
28
|
function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.trackMediaPaste = exports.showMediaViewer = exports.hideMediaViewer = void 0;
|
|
6
|
+
exports.trackMediaPaste = exports.showMediaViewer = exports.insertMediaAsMediaSingleCommand = exports.hideMediaViewer = void 0;
|
|
7
7
|
var _actions = require("../pm-plugins/actions");
|
|
8
8
|
var _pluginKey = require("../pm-plugins/plugin-key");
|
|
9
9
|
var _mediaCommon = require("../pm-plugins/utils/media-common");
|
|
10
|
+
var _mediaSingle = require("./utils/media-single");
|
|
10
11
|
var showMediaViewer = exports.showMediaViewer = function showMediaViewer(media) {
|
|
11
12
|
return function (_ref) {
|
|
12
13
|
var tr = _ref.tr;
|
|
@@ -37,4 +38,9 @@ var trackMediaPaste = exports.trackMediaPaste = function trackMediaPaste(attrs)
|
|
|
37
38
|
});
|
|
38
39
|
return tr;
|
|
39
40
|
};
|
|
41
|
+
};
|
|
42
|
+
var insertMediaAsMediaSingleCommand = exports.insertMediaAsMediaSingleCommand = function insertMediaAsMediaSingleCommand(editorAnalyticsAPI, allowPixelResizing) {
|
|
43
|
+
return function (mediaAttrs, inputMethod, insertMediaVia) {
|
|
44
|
+
return (0, _mediaSingle.createInsertMediaAsMediaSingleCommand)(mediaAttrs, inputMethod, editorAnalyticsAPI, insertMediaVia, allowPixelResizing);
|
|
45
|
+
};
|
|
40
46
|
};
|
|
@@ -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.isVideo = exports.isMediaSingle = exports.insertMediaSingleNode = exports.insertMediaAsMediaSingle = exports.changeFromMediaInlineToMediaSingleNode = void 0;
|
|
7
|
+
exports.isVideo = exports.isMediaSingle = exports.insertMediaSingleNode = exports.insertMediaAsMediaSingle = exports.createInsertMediaAsMediaSingleCommand = exports.changeFromMediaInlineToMediaSingleNode = void 0;
|
|
8
8
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
9
|
var _memoizeOne = _interopRequireDefault(require("memoize-one"));
|
|
10
10
|
var _analytics = require("@atlaskit/editor-common/analytics");
|
|
@@ -14,6 +14,7 @@ var _selection = require("@atlaskit/editor-common/selection");
|
|
|
14
14
|
var _utils = require("@atlaskit/editor-common/utils");
|
|
15
15
|
var _model = require("@atlaskit/editor-prosemirror/model");
|
|
16
16
|
var _utils2 = require("@atlaskit/editor-prosemirror/utils");
|
|
17
|
+
var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
|
|
17
18
|
var _mediaCommon = require("../utils/media-common");
|
|
18
19
|
var _analytics2 = require("./analytics");
|
|
19
20
|
var _isType = require("./is-type");
|
|
@@ -44,6 +45,21 @@ function insertNodesWithOptionalParagraph(_ref) {
|
|
|
44
45
|
insertMediaVia = _ref.insertMediaVia;
|
|
45
46
|
return function (state, dispatch) {
|
|
46
47
|
var tr = state.tr;
|
|
48
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_introduce_insert_media_command')) {
|
|
49
|
+
var _updatedTr = insertNodesWithOptionalParagraphCommand({
|
|
50
|
+
nodes: nodes,
|
|
51
|
+
analyticsAttributes: analyticsAttributes,
|
|
52
|
+
editorAnalyticsAPI: editorAnalyticsAPI,
|
|
53
|
+
insertMediaVia: insertMediaVia
|
|
54
|
+
})({
|
|
55
|
+
tr: tr
|
|
56
|
+
});
|
|
57
|
+
if (_updatedTr && dispatch) {
|
|
58
|
+
dispatch === null || dispatch === void 0 || dispatch(_updatedTr);
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
47
63
|
var inputMethod = analyticsAttributes.inputMethod,
|
|
48
64
|
fileExtension = analyticsAttributes.fileExtension,
|
|
49
65
|
newType = analyticsAttributes.newType,
|
|
@@ -76,6 +92,43 @@ function insertNodesWithOptionalParagraph(_ref) {
|
|
|
76
92
|
return true;
|
|
77
93
|
};
|
|
78
94
|
}
|
|
95
|
+
function insertNodesWithOptionalParagraphCommand(_ref2) {
|
|
96
|
+
var nodes = _ref2.nodes,
|
|
97
|
+
_ref2$analyticsAttrib = _ref2.analyticsAttributes,
|
|
98
|
+
analyticsAttributes = _ref2$analyticsAttrib === void 0 ? {} : _ref2$analyticsAttrib,
|
|
99
|
+
editorAnalyticsAPI = _ref2.editorAnalyticsAPI,
|
|
100
|
+
insertMediaVia = _ref2.insertMediaVia;
|
|
101
|
+
return function (_ref3) {
|
|
102
|
+
var tr = _ref3.tr;
|
|
103
|
+
var inputMethod = analyticsAttributes.inputMethod,
|
|
104
|
+
fileExtension = analyticsAttributes.fileExtension,
|
|
105
|
+
newType = analyticsAttributes.newType,
|
|
106
|
+
previousType = analyticsAttributes.previousType;
|
|
107
|
+
var updatedTr = tr;
|
|
108
|
+
var openEnd = 0;
|
|
109
|
+
if (tr.selection.empty) {
|
|
110
|
+
var insertFrom = (0, _selection.selectionIsAtTheBeginningOfBlock)(tr.selection) ? tr.selection.$from.before() : tr.selection.from;
|
|
111
|
+
|
|
112
|
+
// the use of pmSafeInsert causes the node selection to media single node.
|
|
113
|
+
// It leads to discrepancy between the full-page and comment editor - not sure why :shrug:
|
|
114
|
+
// When multiple images are uploaded, the node selection is set to the previous node
|
|
115
|
+
// and got overridden by the next node inserted.
|
|
116
|
+
// It also causes the images position shifted when the images are uploaded.
|
|
117
|
+
// E.g the images are uploaded after a table, the images will be inserted inside the table.
|
|
118
|
+
// so we revert to use tr.insert instead. No extra paragraph is added.
|
|
119
|
+
updatedTr = updatedTr.insert(insertFrom, nodes);
|
|
120
|
+
} else {
|
|
121
|
+
updatedTr.replaceSelection(new _model.Slice(_model.Fragment.from(nodes), 0, openEnd));
|
|
122
|
+
}
|
|
123
|
+
if (inputMethod) {
|
|
124
|
+
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent(getInsertMediaAnalytics(inputMethod, fileExtension, insertMediaVia))(updatedTr);
|
|
125
|
+
}
|
|
126
|
+
if (newType && previousType) {
|
|
127
|
+
editorAnalyticsAPI === null || editorAnalyticsAPI === void 0 || editorAnalyticsAPI.attachAnalyticsEvent((0, _analytics2.getChangeMediaAnalytics)(previousType, newType, (0, _analytics2.findChangeFromLocation)(tr.selection)))(updatedTr);
|
|
128
|
+
}
|
|
129
|
+
return updatedTr;
|
|
130
|
+
};
|
|
131
|
+
}
|
|
79
132
|
var isMediaSingle = exports.isMediaSingle = function isMediaSingle(schema, fileMimeType) {
|
|
80
133
|
return !!schema.nodes.mediaSingle && (0, _isType.isImage)(fileMimeType);
|
|
81
134
|
};
|
|
@@ -94,6 +147,16 @@ var insertMediaAsMediaSingle = exports.insertMediaAsMediaSingle = function inser
|
|
|
94
147
|
if (node.type !== media || !(0, _isType.isImage)(node.attrs.__fileMimeType) && node.attrs.type !== 'external') {
|
|
95
148
|
return false;
|
|
96
149
|
}
|
|
150
|
+
if ((0, _platformFeatureFlags.fg)('platform_editor_introduce_insert_media_command')) {
|
|
151
|
+
var updatedTr = createInsertMediaAsMediaSingleCommand(node.attrs, inputMethod, editorAnalyticsAPI, insertMediaVia, allowPixelResizing)({
|
|
152
|
+
tr: state.tr
|
|
153
|
+
});
|
|
154
|
+
if (updatedTr && dispatch) {
|
|
155
|
+
dispatch === null || dispatch === void 0 || dispatch(updatedTr);
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
97
160
|
var mediaSingleAttrs = allowPixelResizing ? {
|
|
98
161
|
widthType: 'pixel',
|
|
99
162
|
width: (0, _mediaSingle.getMediaSingleInitialWidth)((_node$attrs$width = node.attrs.width) !== null && _node$attrs$width !== void 0 ? _node$attrs$width : _mediaSingle.DEFAULT_IMAGE_WIDTH),
|
|
@@ -112,6 +175,42 @@ var insertMediaAsMediaSingle = exports.insertMediaAsMediaSingle = function inser
|
|
|
112
175
|
insertMediaVia: insertMediaVia
|
|
113
176
|
})(state, dispatch);
|
|
114
177
|
};
|
|
178
|
+
var createInsertMediaAsMediaSingleCommand = exports.createInsertMediaAsMediaSingleCommand = function createInsertMediaAsMediaSingleCommand(mediaAttrs, inputMethod, editorAnalyticsAPI, insertMediaVia, allowPixelResizing) {
|
|
179
|
+
return function (_ref4) {
|
|
180
|
+
var _mediaAttrs$__fileMim, _mediaAttrs$width, _mediaAttrs$__fileMim2;
|
|
181
|
+
var tr = _ref4.tr;
|
|
182
|
+
var _tr$doc$type$schema$n = tr.doc.type.schema.nodes,
|
|
183
|
+
mediaSingle = _tr$doc$type$schema$n.mediaSingle,
|
|
184
|
+
media = _tr$doc$type$schema$n.media;
|
|
185
|
+
if (!mediaSingle || !media) {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
if (mediaAttrs.type !== 'external' && !(0, _isType.isImage)((_mediaAttrs$__fileMim = mediaAttrs.__fileMimeType) !== null && _mediaAttrs$__fileMim !== void 0 ? _mediaAttrs$__fileMim : undefined)) {
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
var mediaSingleAttrs = allowPixelResizing ? {
|
|
192
|
+
widthType: 'pixel',
|
|
193
|
+
width: (0, _mediaSingle.getMediaSingleInitialWidth)((_mediaAttrs$width = mediaAttrs.width) !== null && _mediaAttrs$width !== void 0 ? _mediaAttrs$width : _mediaSingle.DEFAULT_IMAGE_WIDTH),
|
|
194
|
+
layout: 'center'
|
|
195
|
+
} : {};
|
|
196
|
+
var mediaNode = media.create(mediaAttrs);
|
|
197
|
+
var mediaSingleNode = mediaSingle.create(mediaSingleAttrs, mediaNode);
|
|
198
|
+
var nodes = [mediaSingleNode];
|
|
199
|
+
var analyticsAttributes = {
|
|
200
|
+
inputMethod: inputMethod,
|
|
201
|
+
// External images have no file extension
|
|
202
|
+
fileExtension: mediaAttrs.type !== 'external' && mediaAttrs.__fileMimeType ? (_mediaAttrs$__fileMim2 = mediaAttrs.__fileMimeType) !== null && _mediaAttrs$__fileMim2 !== void 0 ? _mediaAttrs$__fileMim2 : undefined : undefined
|
|
203
|
+
};
|
|
204
|
+
return insertNodesWithOptionalParagraphCommand({
|
|
205
|
+
nodes: nodes,
|
|
206
|
+
analyticsAttributes: analyticsAttributes,
|
|
207
|
+
editorAnalyticsAPI: editorAnalyticsAPI,
|
|
208
|
+
insertMediaVia: insertMediaVia
|
|
209
|
+
})({
|
|
210
|
+
tr: tr
|
|
211
|
+
});
|
|
212
|
+
};
|
|
213
|
+
};
|
|
115
214
|
var getFileExtension = function getFileExtension(fileName) {
|
|
116
215
|
if (fileName) {
|
|
117
216
|
var extensionIdx = fileName.lastIndexOf('.');
|
|
@@ -225,12 +324,12 @@ var createMediaSingleNode = function createMediaSingleNode(schema, collection, m
|
|
|
225
324
|
_mediaState$scaleFact = mediaState.scaleFactor,
|
|
226
325
|
scaleFactor = _mediaState$scaleFact === void 0 ? 1 : _mediaState$scaleFact,
|
|
227
326
|
fileName = mediaState.fileName;
|
|
228
|
-
var
|
|
327
|
+
var _ref5 = dimensions || {
|
|
229
328
|
height: undefined,
|
|
230
329
|
width: undefined
|
|
231
330
|
},
|
|
232
|
-
width =
|
|
233
|
-
height =
|
|
331
|
+
width = _ref5.width,
|
|
332
|
+
height = _ref5.height;
|
|
234
333
|
var _schema$nodes = schema.nodes,
|
|
235
334
|
media = _schema$nodes.media,
|
|
236
335
|
mediaSingle = _schema$nodes.mediaSingle;
|
|
@@ -170,7 +170,8 @@ var ResizableMediaSingleNextFunctional = exports.ResizableMediaSingleNextFunctio
|
|
|
170
170
|
updateSize = props.updateSize,
|
|
171
171
|
view = props.view,
|
|
172
172
|
viewMediaClientConfig = props.viewMediaClientConfig,
|
|
173
|
-
forceHandlePositioning = props.forceHandlePositioning
|
|
173
|
+
forceHandlePositioning = props.forceHandlePositioning,
|
|
174
|
+
disableHandles = props.disableHandles;
|
|
174
175
|
var initialWidth = (0, _react.useMemo)(function () {
|
|
175
176
|
return mediaSingleWidth || _mediaSingle.DEFAULT_IMAGE_WIDTH;
|
|
176
177
|
}, [mediaSingleWidth]);
|
|
@@ -247,6 +248,9 @@ var ResizableMediaSingleNextFunctional = exports.ResizableMediaSingleNextFunctio
|
|
|
247
248
|
if (isAdjacentMode || fullWidthMode) {
|
|
248
249
|
return lineLength;
|
|
249
250
|
}
|
|
251
|
+
if (!isResizing && (0, _expValEquals.expValEquals)('platform_editor_media_vc_fixes', 'isEnabled', true)) {
|
|
252
|
+
return "var(--ak-editor-max-container-width)";
|
|
253
|
+
}
|
|
250
254
|
return calcMaxWidth({
|
|
251
255
|
containerWidth: containerWidth,
|
|
252
256
|
editorAppearance: editorAppearance
|
|
@@ -262,7 +266,7 @@ var ResizableMediaSingleNextFunctional = exports.ResizableMediaSingleNextFunctio
|
|
|
262
266
|
var resizerNextClassName = (0, _react.useMemo)(function () {
|
|
263
267
|
if ((0, _expValEquals.expValEquals)('platform_editor_resizer_styles_cleanup', 'isEnabled', true)) {
|
|
264
268
|
var _classNameNext = (0, _classnames.default)(_styles.richMediaClassName, "image-".concat(layout), isResizing ? 'is-resizing' : 'not-resizing', className, _styles.resizerItemClassName, {
|
|
265
|
-
'display-handle': selected,
|
|
269
|
+
'display-handle': (0, _expValEquals.expValEquals)('platform_editor_media_vc_fixes', 'isEnabled', true) ? selected && !disableHandles : selected,
|
|
266
270
|
'richMedia-selected': selected,
|
|
267
271
|
'rich-media-wrapped': layout === 'wrap-left' || layout === 'wrap-right'
|
|
268
272
|
});
|
|
@@ -274,7 +278,7 @@ var ResizableMediaSingleNextFunctional = exports.ResizableMediaSingleNextFunctio
|
|
|
274
278
|
'rich-media-wrapped': layout === 'wrap-left' || layout === 'wrap-right'
|
|
275
279
|
});
|
|
276
280
|
return (0, _classnames.default)(classNameNext, _styles.resizerStyles);
|
|
277
|
-
}, [className, isResizing, layout, selected]);
|
|
281
|
+
}, [className, disableHandles, isResizing, layout, selected]);
|
|
278
282
|
var isInsideInlineLike = (0, _react.useMemo)(function () {
|
|
279
283
|
if (nodePosition === null) {
|
|
280
284
|
return false;
|
|
@@ -284,6 +288,12 @@ var ResizableMediaSingleNextFunctional = exports.ResizableMediaSingleNextFunctio
|
|
|
284
288
|
return !!(0, _utils2.findParentNodeOfTypeClosestToPos)($pos, [listItem]);
|
|
285
289
|
}, [nodePosition, view]);
|
|
286
290
|
var enable = (0, _react.useMemo)(function () {
|
|
291
|
+
if (disableHandles && (0, _expValEquals.expValEquals)('platform_editor_media_vc_fixes', 'isEnabled', true)) {
|
|
292
|
+
return {
|
|
293
|
+
left: false,
|
|
294
|
+
right: false
|
|
295
|
+
};
|
|
296
|
+
}
|
|
287
297
|
return _ui.handleSides.reduce(function (acc, side) {
|
|
288
298
|
var oppositeSide = side === 'left' ? 'right' : 'left';
|
|
289
299
|
acc[side] = _utils.nonWrappedLayouts.concat("wrap-".concat(oppositeSide)).concat("align-".concat(_ui.imageAlignmentMap[oppositeSide])).indexOf(layout) > -1;
|
|
@@ -292,7 +302,7 @@ var ResizableMediaSingleNextFunctional = exports.ResizableMediaSingleNextFunctio
|
|
|
292
302
|
}
|
|
293
303
|
return acc;
|
|
294
304
|
}, {});
|
|
295
|
-
}, [layout, isInsideInlineLike]);
|
|
305
|
+
}, [disableHandles, layout, isInsideInlineLike]);
|
|
296
306
|
var defaultGuidelines = (0, _react.useMemo)(function () {
|
|
297
307
|
if (isAdjacentMode) {
|
|
298
308
|
return [];
|
|
@@ -520,7 +530,7 @@ var ResizableMediaSingleNextFunctional = exports.ResizableMediaSingleNextFunctio
|
|
|
520
530
|
snap: snaps,
|
|
521
531
|
resizeRatio: _utils.nonWrappedLayouts.includes(layout) ? 2 : 1,
|
|
522
532
|
"data-testid": resizerNextTestId,
|
|
523
|
-
isHandleVisible: selected,
|
|
533
|
+
isHandleVisible: (0, _expValEquals.expValEquals)('platform_editor_media_vc_fixes', 'isEnabled', true) ? selected && !disableHandles : selected,
|
|
524
534
|
handlePositioning: handlePositioning,
|
|
525
535
|
handleHighlight: "full-height"
|
|
526
536
|
}, children, showLegacyNotification && (0, _react2.jsx)(_ResizableMediaMigrationNotification.ResizableMediaMigrationNotification, null)));
|
|
@@ -366,6 +366,12 @@ var ResizableMediaSingle = exports.default = /*#__PURE__*/function (_React$Compo
|
|
|
366
366
|
var enable = {};
|
|
367
367
|
_ui.handleSides.forEach(function (side) {
|
|
368
368
|
var oppositeSide = side === 'left' ? 'right' : 'left';
|
|
369
|
+
if ((0, _expValEquals.expValEquals)('platform_editor_media_vc_fixes', 'isEnabled', true)) {
|
|
370
|
+
if (_this2.props.disableHandles) {
|
|
371
|
+
enable[side] = false;
|
|
372
|
+
return;
|
|
373
|
+
}
|
|
374
|
+
}
|
|
369
375
|
enable[side] = ['full-width', 'wide', 'center'].concat("wrap-".concat(oppositeSide)).concat("align-".concat(_ui.imageAlignmentMap[oppositeSide])).indexOf(layout) > -1;
|
|
370
376
|
if (side === 'left' && _this2.insideInlineLike) {
|
|
371
377
|
enable[side] = false;
|
|
@@ -16,7 +16,7 @@ import { mediaInlineSpecWithFixedToDOM } from './nodeviews/toDOM-fixes/mediaInli
|
|
|
16
16
|
import { mediaSingleSpecWithFixedToDOM } from './nodeviews/toDOM-fixes/mediaSingle';
|
|
17
17
|
import { createPlugin as createMediaAltTextPlugin } from './pm-plugins/alt-text';
|
|
18
18
|
import keymapMediaAltTextPlugin from './pm-plugins/alt-text/keymap';
|
|
19
|
-
import { hideMediaViewer, showMediaViewer, trackMediaPaste } from './pm-plugins/commands';
|
|
19
|
+
import { hideMediaViewer, insertMediaAsMediaSingleCommand, showMediaViewer, trackMediaPaste } from './pm-plugins/commands';
|
|
20
20
|
import keymapPlugin from './pm-plugins/keymap';
|
|
21
21
|
import keymapMediaSinglePlugin from './pm-plugins/keymap-media';
|
|
22
22
|
import linkingPlugin from './pm-plugins/linking';
|
|
@@ -103,6 +103,7 @@ export const mediaPlugin = ({
|
|
|
103
103
|
config: options = {},
|
|
104
104
|
api
|
|
105
105
|
}) => {
|
|
106
|
+
var _api$analytics3;
|
|
106
107
|
let previousMediaProvider;
|
|
107
108
|
const mediaErrorLocalIds = new Set();
|
|
108
109
|
return {
|
|
@@ -153,7 +154,8 @@ export const mediaPlugin = ({
|
|
|
153
154
|
commands: {
|
|
154
155
|
showMediaViewer,
|
|
155
156
|
hideMediaViewer,
|
|
156
|
-
trackMediaPaste
|
|
157
|
+
trackMediaPaste,
|
|
158
|
+
insertMediaSingle: insertMediaAsMediaSingleCommand(api === null || api === void 0 ? void 0 : (_api$analytics3 = api.analytics) === null || _api$analytics3 === void 0 ? void 0 : _api$analytics3.actions, options.allowPixelResizing)
|
|
157
159
|
},
|
|
158
160
|
nodes() {
|
|
159
161
|
const {
|
|
@@ -229,8 +231,8 @@ export const mediaPlugin = ({
|
|
|
229
231
|
plugin: ({
|
|
230
232
|
getIntl
|
|
231
233
|
}) => {
|
|
232
|
-
var _api$
|
|
233
|
-
return keymapPlugin(options, api === null || api === void 0 ? void 0 : (_api$
|
|
234
|
+
var _api$analytics4, _api$selection;
|
|
235
|
+
return keymapPlugin(options, api === null || api === void 0 ? void 0 : (_api$analytics4 = api.analytics) === null || _api$analytics4 === void 0 ? void 0 : _api$analytics4.actions, api === null || api === void 0 ? void 0 : (_api$selection = api.selection) === null || _api$selection === void 0 ? void 0 : _api$selection.actions, api === null || api === void 0 ? void 0 : api.width, getIntl);
|
|
234
236
|
}
|
|
235
237
|
}];
|
|
236
238
|
if (options && options.allowMediaSingle) {
|
|
@@ -251,8 +253,8 @@ export const mediaPlugin = ({
|
|
|
251
253
|
plugin: ({
|
|
252
254
|
schema
|
|
253
255
|
}) => {
|
|
254
|
-
var _api$
|
|
255
|
-
return keymapMediaAltTextPlugin(schema, api === null || api === void 0 ? void 0 : (_api$
|
|
256
|
+
var _api$analytics5;
|
|
257
|
+
return keymapMediaAltTextPlugin(schema, api === null || api === void 0 ? void 0 : (_api$analytics5 = api.analytics) === null || _api$analytics5 === void 0 ? void 0 : _api$analytics5.actions);
|
|
256
258
|
}
|
|
257
259
|
});
|
|
258
260
|
}
|
|
@@ -457,6 +457,52 @@ export const MediaSingleNodeNext = mediaSingleNodeNextProps => {
|
|
|
457
457
|
onClick: clickPlaceholder,
|
|
458
458
|
placeholderMessage: mediaOptions.allowImagePreview ? captionMessages.placeholderWithDoubleClickPrompt : captionMessages.placeholder
|
|
459
459
|
})));
|
|
460
|
+
if (expValEquals('platform_editor_media_vc_fixes', 'isEnabled', true)) {
|
|
461
|
+
return mediaOptions.allowPixelResizing ? jsx(ResizableMediaSingleNext, {
|
|
462
|
+
view: view,
|
|
463
|
+
getPos: getPos,
|
|
464
|
+
updateSize: updateSize,
|
|
465
|
+
gridSize: 12,
|
|
466
|
+
viewMediaClientConfig: viewMediaClientConfig,
|
|
467
|
+
allowBreakoutSnapPoints: mediaOptions && mediaOptions.allowBreakoutSnapPoints,
|
|
468
|
+
selected: isSelected,
|
|
469
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
470
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
471
|
+
layout: layout,
|
|
472
|
+
width: width,
|
|
473
|
+
height: height,
|
|
474
|
+
containerWidth: containerWidth,
|
|
475
|
+
lineLength: contentWidth || FALLBACK_MOST_COMMON_WIDTH,
|
|
476
|
+
fullWidthMode: fullWidthMode,
|
|
477
|
+
hasFallbackContainer: false,
|
|
478
|
+
mediaSingleWidth: mediaSingleWidth,
|
|
479
|
+
editorAppearance: editorAppearance,
|
|
480
|
+
showLegacyNotification: widthType !== 'pixel',
|
|
481
|
+
forceHandlePositioning: mediaOptions === null || mediaOptions === void 0 ? void 0 : mediaOptions.forceHandlePositioning,
|
|
482
|
+
disableHandles: !canResize
|
|
483
|
+
}, MediaChildren) : jsx(ResizableMediaSingle, {
|
|
484
|
+
view: view,
|
|
485
|
+
getPos: getPos,
|
|
486
|
+
updateSize: updateSize,
|
|
487
|
+
gridSize: 12,
|
|
488
|
+
viewMediaClientConfig: viewMediaClientConfig,
|
|
489
|
+
allowBreakoutSnapPoints: mediaOptions && mediaOptions.allowBreakoutSnapPoints,
|
|
490
|
+
selected: isSelected,
|
|
491
|
+
dispatchAnalyticsEvent: dispatchAnalyticsEvent,
|
|
492
|
+
pluginInjectionApi: pluginInjectionApi,
|
|
493
|
+
layout: layout,
|
|
494
|
+
width: width,
|
|
495
|
+
height: height,
|
|
496
|
+
containerWidth: containerWidth,
|
|
497
|
+
fullWidthMode: fullWidthMode,
|
|
498
|
+
hasFallbackContainer: false,
|
|
499
|
+
mediaSingleWidth: mediaSingleWidth,
|
|
500
|
+
editorAppearance: editorAppearance,
|
|
501
|
+
lineLength: contentWidthForLegacyExperience || FALLBACK_MOST_COMMON_WIDTH,
|
|
502
|
+
pctWidth: mediaSingleWidthAttribute,
|
|
503
|
+
disableHandles: !canResize
|
|
504
|
+
}, MediaChildren);
|
|
505
|
+
}
|
|
460
506
|
return jsx(Fragment, null, canResize ? mediaOptions.allowPixelResizing ? jsx(ResizableMediaSingleNext, {
|
|
461
507
|
view: view,
|
|
462
508
|
getPos: getPos,
|
|
@@ -17,7 +17,7 @@ import { areToolbarFlagsEnabled } from '@atlaskit/editor-common/toolbar-flag-che
|
|
|
17
17
|
import { RECENT_SEARCH_WIDTH_IN_PX as CONTAINER_WIDTH_IN_PX, FloatingToolbarButton as Button, ErrorMessage, PanelTextInput } from '@atlaskit/editor-common/ui';
|
|
18
18
|
import { relativeFontSizeToBase16 } from '@atlaskit/editor-shared-styles';
|
|
19
19
|
import ChevronLeftLargeIcon from '@atlaskit/icon/core/chevron-left';
|
|
20
|
-
import CrossCircleIcon from '@atlaskit/icon/core/
|
|
20
|
+
import CrossCircleIcon from '@atlaskit/icon/core/cross-circle';
|
|
21
21
|
import { N200, N30, N80, R400 } from '@atlaskit/theme/colors';
|
|
22
22
|
import { closeMediaAltTextMenu, closeMediaAltTextMenuAndSave } from '../commands';
|
|
23
23
|
export const MAX_ALT_TEXT_LENGTH = 510; // double tweet length
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ACTIONS } from '../pm-plugins/actions';
|
|
2
2
|
import { stateKey } from '../pm-plugins/plugin-key';
|
|
3
3
|
import { getIdentifier } from '../pm-plugins/utils/media-common';
|
|
4
|
+
import { createInsertMediaAsMediaSingleCommand } from './utils/media-single';
|
|
4
5
|
export const showMediaViewer = media => ({
|
|
5
6
|
tr
|
|
6
7
|
}) => {
|
|
@@ -30,4 +31,5 @@ export const trackMediaPaste = attrs => ({
|
|
|
30
31
|
identifier
|
|
31
32
|
});
|
|
32
33
|
return tr;
|
|
33
|
-
};
|
|
34
|
+
};
|
|
35
|
+
export const insertMediaAsMediaSingleCommand = (editorAnalyticsAPI, allowPixelResizing) => (mediaAttrs, inputMethod, insertMediaVia) => createInsertMediaAsMediaSingleCommand(mediaAttrs, inputMethod, editorAnalyticsAPI, insertMediaVia, allowPixelResizing);
|