@atlaskit/editor-core 187.8.13 → 187.9.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.
Files changed (63) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/dist/cjs/plugins/floating-toolbar/index.js +1 -3
  3. package/dist/cjs/plugins/media/nodeviews/mediaSingle.js +33 -23
  4. package/dist/cjs/plugins/media/toolbar/index.js +16 -2
  5. package/dist/cjs/plugins/media/toolbar/utils.js +7 -2
  6. package/dist/cjs/plugins/media/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +574 -0
  7. package/dist/cjs/plugins/media/ui/ResizableMediaSingle/guidelines.js +117 -0
  8. package/dist/cjs/plugins/media/ui/ResizableMediaSingle/resizable-media-single-messages.js +15 -0
  9. package/dist/cjs/ui/Resizer/ResizeLabel/index.js +20 -0
  10. package/dist/cjs/ui/Resizer/ResizeLabel/styles.js +17 -0
  11. package/dist/cjs/version-wrapper.js +1 -1
  12. package/dist/cjs/version.json +1 -1
  13. package/dist/es2019/plugins/floating-toolbar/index.js +1 -1
  14. package/dist/es2019/plugins/media/nodeviews/mediaSingle.js +34 -23
  15. package/dist/es2019/plugins/media/toolbar/index.js +19 -3
  16. package/dist/es2019/plugins/media/toolbar/utils.js +7 -1
  17. package/dist/es2019/plugins/media/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +493 -0
  18. package/dist/es2019/plugins/media/ui/ResizableMediaSingle/guidelines.js +108 -0
  19. package/dist/es2019/plugins/media/ui/ResizableMediaSingle/resizable-media-single-messages.js +8 -0
  20. package/dist/es2019/ui/Resizer/ResizeLabel/index.js +12 -0
  21. package/dist/es2019/ui/Resizer/ResizeLabel/styles.js +25 -0
  22. package/dist/es2019/version-wrapper.js +1 -1
  23. package/dist/es2019/version.json +1 -1
  24. package/dist/esm/plugins/floating-toolbar/index.js +1 -3
  25. package/dist/esm/plugins/media/nodeviews/mediaSingle.js +33 -23
  26. package/dist/esm/plugins/media/toolbar/index.js +17 -3
  27. package/dist/esm/plugins/media/toolbar/utils.js +5 -1
  28. package/dist/esm/plugins/media/ui/ResizableMediaSingle/ResizableMediaSingleNext.js +564 -0
  29. package/dist/esm/plugins/media/ui/ResizableMediaSingle/guidelines.js +108 -0
  30. package/dist/esm/plugins/media/ui/ResizableMediaSingle/resizable-media-single-messages.js +8 -0
  31. package/dist/esm/ui/Resizer/ResizeLabel/index.js +12 -0
  32. package/dist/esm/ui/Resizer/ResizeLabel/styles.js +7 -0
  33. package/dist/esm/version-wrapper.js +1 -1
  34. package/dist/esm/version.json +1 -1
  35. package/dist/types/labs/next/presets/universal.d.ts +1 -2
  36. package/dist/types/plugins/floating-toolbar/index.d.ts +3 -1
  37. package/dist/types/plugins/media/index.d.ts +2 -0
  38. package/dist/types/plugins/media/nodeviews/styles.d.ts +1 -1
  39. package/dist/types/plugins/media/pm-plugins/main.d.ts +1 -1
  40. package/dist/types/plugins/media/toolbar/utils.d.ts +1 -0
  41. package/dist/types/plugins/media/types.d.ts +1 -0
  42. package/dist/types/plugins/media/ui/ResizableMediaSingle/ResizableMediaSingleNext.d.ts +61 -0
  43. package/dist/types/plugins/media/ui/ResizableMediaSingle/guidelines.d.ts +4 -0
  44. package/dist/types/plugins/media/ui/ResizableMediaSingle/resizable-media-single-messages.d.ts +7 -0
  45. package/dist/types/plugins/media/ui/ResizableMediaSingle/types.d.ts +1 -0
  46. package/dist/types/ui/Resizer/ResizeLabel/index.d.ts +8 -0
  47. package/dist/types/ui/Resizer/ResizeLabel/styles.d.ts +3 -0
  48. package/dist/types-ts4.5/labs/next/presets/universal.d.ts +1 -2
  49. package/dist/types-ts4.5/plugins/floating-toolbar/index.d.ts +3 -1
  50. package/dist/types-ts4.5/plugins/media/index.d.ts +2 -0
  51. package/dist/types-ts4.5/plugins/media/nodeviews/styles.d.ts +1 -1
  52. package/dist/types-ts4.5/plugins/media/pm-plugins/main.d.ts +1 -1
  53. package/dist/types-ts4.5/plugins/media/toolbar/utils.d.ts +1 -0
  54. package/dist/types-ts4.5/plugins/media/types.d.ts +1 -0
  55. package/dist/types-ts4.5/plugins/media/ui/ResizableMediaSingle/ResizableMediaSingleNext.d.ts +61 -0
  56. package/dist/types-ts4.5/plugins/media/ui/ResizableMediaSingle/guidelines.d.ts +4 -0
  57. package/dist/types-ts4.5/plugins/media/ui/ResizableMediaSingle/resizable-media-single-messages.d.ts +7 -0
  58. package/dist/types-ts4.5/plugins/media/ui/ResizableMediaSingle/types.d.ts +1 -0
  59. package/dist/types-ts4.5/ui/Resizer/ResizeLabel/index.d.ts +8 -0
  60. package/dist/types-ts4.5/ui/Resizer/ResizeLabel/styles.d.ts +3 -0
  61. package/package.json +2 -2
  62. package/report.api.md +7 -4
  63. package/tmp/api-report-tmp.d.ts +5 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @atlaskit/editor-core
2
2
 
3
+ ## 187.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [`936c30f8dc9`](https://bitbucket.org/atlassian/atlassian-frontend/commits/936c30f8dc9) - support new image resize experience under feature flag
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies
12
+
3
13
  ## 187.8.13
4
14
 
5
15
  ### Patch Changes
@@ -334,9 +334,7 @@ function floatingToolbarPluginFactory(options) {
334
334
  return relevantConfig;
335
335
  };
336
336
  var apply = function apply(tr, pluginState) {
337
- var newPluginState = {
338
- getConfigWithNodeInfo: getConfigWithNodeInfo
339
- };
337
+ var newPluginState = _objectSpread({}, pluginState);
340
338
  dispatch(pluginKey, newPluginState);
341
339
  return newPluginState;
342
340
  };
@@ -8,7 +8,6 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports.default = exports.ReactMediaSingleNode = void 0;
9
9
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
10
10
  var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
11
- var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
12
11
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
13
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
14
13
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -24,6 +23,7 @@ var _ui = require("@atlaskit/editor-common/ui");
24
23
  var _utils = require("@atlaskit/editor-common/utils");
25
24
  var _nodes = require("../../../utils/nodes");
26
25
  var _utils2 = require("../../../utils");
26
+ var _ResizableMediaSingleNext = _interopRequireDefault(require("../ui/ResizableMediaSingle/ResizableMediaSingleNext"));
27
27
  var _ResizableMediaSingle = _interopRequireDefault(require("../ui/ResizableMediaSingle"));
28
28
  var _main = require("../pm-plugins/main");
29
29
  var _mediaNodeUpdater = require("./mediaNodeUpdater");
@@ -38,6 +38,8 @@ var _CaptionPlaceholder = _interopRequireDefault(require("../ui/CaptionPlacehold
38
38
  var _state = require("@atlaskit/editor-prosemirror/state");
39
39
  var _captions = require("../commands/captions");
40
40
  var _hooks = require("@atlaskit/editor-common/hooks");
41
+ var _mediaSingle = require("@atlaskit/editor-common/media-single");
42
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
41
43
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
42
44
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
43
45
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -208,7 +210,8 @@ var MediaSingleNode = /*#__PURE__*/function (_Component) {
208
210
  }
209
211
  var tr = state.tr.setNodeMarkup(pos, undefined, _objectSpread(_objectSpread({}, _this.props.node.attrs), {}, {
210
212
  layout: layout,
211
- width: width
213
+ width: width,
214
+ widthType: 'pixel'
212
215
  }));
213
216
  tr.setMeta('scrollIntoView', false);
214
217
  /**
@@ -320,12 +323,19 @@ var MediaSingleNode = /*#__PURE__*/function (_Component) {
320
323
  mediaOptions = _this$props2.mediaOptions,
321
324
  fullWidthMode = _this$props2.fullWidthMode,
322
325
  state = _this$props2.view.state,
323
- view = _this$props2.view;
326
+ view = _this$props2.view,
327
+ pluginInjectionApi = _this$props2.pluginInjectionApi,
328
+ containerWidth = _this$props2.width,
329
+ lineLength = _this$props2.lineLength,
330
+ dispatchAnalyticsEvent = _this$props2.dispatchAnalyticsEvent;
324
331
  var _ref4 = node.attrs,
325
332
  layout = _ref4.layout,
326
- mediaSingleWidth = _ref4.width;
333
+ widthType = _ref4.widthType,
334
+ mediaSingleWidthAttribute = _ref4.width;
327
335
  var childNode = node.firstChild;
328
336
  var attrs = childNode.attrs;
337
+
338
+ // original width and height of child media node (scaled)
329
339
  var width = attrs.width,
330
340
  height = attrs.height;
331
341
  if (attrs.type === 'external') {
@@ -352,16 +362,29 @@ var MediaSingleNode = /*#__PURE__*/function (_Component) {
352
362
  width = _ui.DEFAULT_IMAGE_WIDTH;
353
363
  height = _ui.DEFAULT_IMAGE_HEIGHT;
354
364
  }
365
+ var isSelected = selected();
355
366
  var mediaSingleProps = {
356
367
  layout: layout,
357
368
  width: width,
358
369
  height: height,
359
- containerWidth: this.props.width,
360
- lineLength: this.props.lineLength,
361
- pctWidth: mediaSingleWidth,
370
+ containerWidth: containerWidth,
371
+ lineLength: this.getLineLength(view, getPos()) || lineLength,
372
+ pctWidth: mediaSingleWidthAttribute,
362
373
  fullWidthMode: fullWidthMode,
363
- hasFallbackContainer: false
374
+ hasFallbackContainer: false,
375
+ mediaSingleWidth: mediaSingleWidthAttribute && (0, _mediaSingle.getMediaSinglePixelWidth)(mediaSingleWidthAttribute, lineLength, widthType)
364
376
  };
377
+ var ResizableMediaSingleProps = _objectSpread({
378
+ view: view,
379
+ getPos: getPos,
380
+ updateSize: this.updateSize,
381
+ gridSize: 12,
382
+ viewMediaClientConfig: this.state.viewMediaClientConfig,
383
+ allowBreakoutSnapPoints: mediaOptions && mediaOptions.allowBreakoutSnapPoints,
384
+ selected: isSelected,
385
+ dispatchAnalyticsEvent: dispatchAnalyticsEvent,
386
+ pluginInjectionApi: pluginInjectionApi
387
+ }, mediaSingleProps);
365
388
  var canResize = !!this.props.mediaOptions.allowResizing;
366
389
  if (!this.props.mediaOptions.allowResizingInTables) {
367
390
  // If resizing not allowed in tables, check parents for tables
@@ -373,12 +396,10 @@ var MediaSingleNode = /*#__PURE__*/function (_Component) {
373
396
  canResize = canResize && !disabledNode;
374
397
  }
375
398
  }
376
- var lineLength = this.getLineLength(view, getPos()) || this.props.lineLength;
377
- var isSelected = selected();
378
399
  var shouldShowPlaceholder = (0, _mediaCommon2.getMediaFeatureFlag)('captions', mediaOptions.featureFlags) && node.childCount !== 2 && isSelected && state.selection instanceof _state.NodeSelection;
379
400
  var MediaChildren = (0, _react.jsx)("figure", {
380
401
  ref: this.mediaSingleWrapperRef,
381
- css: _styles.figureWrapper,
402
+ css: [_styles.figureWrapper],
382
403
  className: _styles.MediaSingleNodeSelector,
383
404
  onClick: this.onMediaSingleClicked
384
405
  }, (0, _react.jsx)("div", {
@@ -387,18 +408,7 @@ var MediaSingleNode = /*#__PURE__*/function (_Component) {
387
408
  ref: this.captionPlaceHolderRef,
388
409
  onClick: this.clickPlaceholder
389
410
  }));
390
- return canResize ? (0, _react.jsx)(_ResizableMediaSingle.default, (0, _extends2.default)({}, mediaSingleProps, {
391
- lineLength: lineLength,
392
- view: this.props.view,
393
- getPos: getPos,
394
- updateSize: this.updateSize,
395
- gridSize: 12,
396
- viewMediaClientConfig: this.state.viewMediaClientConfig,
397
- allowBreakoutSnapPoints: mediaOptions && mediaOptions.allowBreakoutSnapPoints,
398
- selected: isSelected,
399
- dispatchAnalyticsEvent: this.props.dispatchAnalyticsEvent,
400
- pluginInjectionApi: this.props.pluginInjectionApi
401
- }), MediaChildren) : (0, _react.jsx)(_ui.MediaSingle, mediaSingleProps, MediaChildren);
411
+ return canResize ? (0, _platformFeatureFlags.getBooleanFF)('platform.editor.media.extended-resize-experience') ? (0, _react.jsx)(_ResizableMediaSingleNext.default, ResizableMediaSingleProps, MediaChildren) : (0, _react.jsx)(_ResizableMediaSingle.default, ResizableMediaSingleProps, MediaChildren) : (0, _react.jsx)(_ui.MediaSingle, mediaSingleProps, MediaChildren);
402
412
  }
403
413
  }]);
404
414
  return MediaSingleNode;
@@ -25,6 +25,7 @@ var _linkingToolbarAppearance = require("./linking-toolbar-appearance");
25
25
  var _analytics = require("@atlaskit/editor-common/analytics");
26
26
  var _mediaUi = require("@atlaskit/media-ui");
27
27
  var _messages2 = require("@atlaskit/editor-common/messages");
28
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
28
29
  var _filePreviewItem = require("./filePreviewItem");
29
30
  var _utils2 = require("./utils");
30
31
  var _commands = require("./commands");
@@ -232,7 +233,20 @@ var generateMediaSingleFloatingToolbar = function generateMediaSingleFloatingToo
232
233
  }
233
234
  if (allowAdvancedToolBarOptions) {
234
235
  var _pluginInjectionApi$d;
235
- var layoutButtons = (0, _card.buildLayoutButtons)(state, intl, state.schema.nodes.mediaSingle, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.dependencies.width, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$d = pluginInjectionApi.dependencies.analytics) === null || _pluginInjectionApi$d === void 0 ? void 0 : _pluginInjectionApi$d.actions, allowResizing, allowResizingInTables);
236
+ var widthPlugin = pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.dependencies.width;
237
+ var isChangingLayoutDisabled = false;
238
+ if ((0, _platformFeatureFlags.getBooleanFF)('platform.editor.media.extended-resize-experience')) {
239
+ var _widthPlugin$sharedSt;
240
+ var contentWidth = widthPlugin === null || widthPlugin === void 0 ? void 0 : (_widthPlugin$sharedSt = widthPlugin.sharedState.currentState()) === null || _widthPlugin$sharedSt === void 0 ? void 0 : _widthPlugin$sharedSt.lineLength;
241
+ var selectedNode = (0, _utils2.getSelectedMediaSingle)(state);
242
+ if (selectedNode && contentWidth) {
243
+ var width = selectedNode.node.attrs.width;
244
+ if (width >= contentWidth) {
245
+ isChangingLayoutDisabled = true;
246
+ }
247
+ }
248
+ }
249
+ var layoutButtons = (0, _card.buildLayoutButtons)(state, intl, state.schema.nodes.mediaSingle, widthPlugin, pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : (_pluginInjectionApi$d = pluginInjectionApi.dependencies.analytics) === null || _pluginInjectionApi$d === void 0 ? void 0 : _pluginInjectionApi$d.actions, allowResizing, allowResizingInTables, true, true, isChangingLayoutDisabled);
236
250
  toolbarButtons = [].concat((0, _toConsumableArray2.default)(toolbarButtons), (0, _toConsumableArray2.default)(layoutButtons));
237
251
  if (layoutButtons.length) {
238
252
  toolbarButtons.push({
@@ -334,7 +348,7 @@ var floatingToolbar = function floatingToolbar(state, intl) {
334
348
  var mediaLinkingState = (0, _linking2.getMediaLinkingState)(state);
335
349
  var _ref2 = (_pluginInjectionApi$d4 = pluginInjectionApi === null || pluginInjectionApi === void 0 ? void 0 : pluginInjectionApi.dependencies.decorations.actions) !== null && _pluginInjectionApi$d4 !== void 0 ? _pluginInjectionApi$d4 : {},
336
350
  hoverDecoration = _ref2.hoverDecoration;
337
- if (!mediaPluginState) {
351
+ if (!mediaPluginState || mediaPluginState.isResizing) {
338
352
  return;
339
353
  }
340
354
  var nodeType = allowMediaInline ? [mediaInline, mediaSingle, media] : [mediaSingle];
@@ -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.removeMediaGroupNode = exports.getSelectedMediaContainerNodeAttrs = exports.downloadMedia = void 0;
7
+ exports.removeMediaGroupNode = exports.getSelectedMediaSingle = exports.getSelectedMediaContainerNodeAttrs = exports.downloadMedia = void 0;
8
8
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
9
9
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
10
10
  var _mediaClient = require("@atlaskit/media-client");
@@ -68,4 +68,9 @@ var removeMediaGroupNode = function removeMediaGroupNode(state) {
68
68
  }
69
69
  return tr;
70
70
  };
71
- exports.removeMediaGroupNode = removeMediaGroupNode;
71
+ exports.removeMediaGroupNode = removeMediaGroupNode;
72
+ var getSelectedMediaSingle = function getSelectedMediaSingle(state) {
73
+ var mediaSingle = state.schema.nodes.mediaSingle;
74
+ return (0, _utils.findSelectedNodeOfType)(mediaSingle)(state.selection) || (0, _utils.findParentNodeOfType)(mediaSingle)(state.selection);
75
+ };
76
+ exports.getSelectedMediaSingle = getSelectedMediaSingle;