@atlaskit/editor-plugin-media 1.34.7 → 1.34.9

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 (31) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/cjs/nodeviews/mediaSingle.js +11 -3
  3. package/dist/cjs/toDOM-fixes/media.js +25 -6
  4. package/dist/cjs/toDOM-fixes/mediaGroup.js +1 -1
  5. package/dist/cjs/toDOM-fixes/mediaSingle.js +189 -137
  6. package/dist/cjs/ui/CaptionPlaceholder/index.js +42 -7
  7. package/dist/cjs/ui/PixelEntry/index.js +8 -3
  8. package/dist/cjs/ui/PixelEntry/styles.js +3 -6
  9. package/dist/es2019/nodeviews/mediaSingle.js +11 -3
  10. package/dist/es2019/toDOM-fixes/media.js +24 -16
  11. package/dist/es2019/toDOM-fixes/mediaGroup.js +3 -3
  12. package/dist/es2019/toDOM-fixes/mediaSingle.js +194 -136
  13. package/dist/es2019/ui/CaptionPlaceholder/index.js +39 -6
  14. package/dist/es2019/ui/PixelEntry/index.js +10 -5
  15. package/dist/es2019/ui/PixelEntry/styles.js +2 -5
  16. package/dist/esm/nodeviews/mediaSingle.js +11 -3
  17. package/dist/esm/toDOM-fixes/media.js +25 -5
  18. package/dist/esm/toDOM-fixes/mediaGroup.js +1 -1
  19. package/dist/esm/toDOM-fixes/mediaSingle.js +188 -135
  20. package/dist/esm/ui/CaptionPlaceholder/index.js +38 -6
  21. package/dist/esm/ui/PixelEntry/index.js +10 -5
  22. package/dist/esm/ui/PixelEntry/styles.js +2 -5
  23. package/dist/types/nodeviews/mediaSingle.d.ts +1 -1
  24. package/dist/types/toDOM-fixes/mediaSingle.d.ts +41 -26
  25. package/dist/types/ui/CaptionPlaceholder/index.d.ts +4 -2
  26. package/dist/types/ui/PixelEntry/styles.d.ts +0 -1
  27. package/dist/types-ts4.5/nodeviews/mediaSingle.d.ts +1 -1
  28. package/dist/types-ts4.5/toDOM-fixes/mediaSingle.d.ts +41 -26
  29. package/dist/types-ts4.5/ui/CaptionPlaceholder/index.d.ts +4 -2
  30. package/dist/types-ts4.5/ui/PixelEntry/styles.d.ts +0 -1
  31. package/package.json +5 -9
package/CHANGELOG.md CHANGED
@@ -1,5 +1,32 @@
1
1
  # @atlaskit/editor-plugin-media
2
2
 
3
+ ## 1.34.9
4
+
5
+ ### Patch Changes
6
+
7
+ - [#149558](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/149558)
8
+ [`5e8619ac0f6e4`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/5e8619ac0f6e4) -
9
+ [ux] [ED-25085] Migrate typography \
10
+
11
+ editor-plugin-media:
12
+
13
+ - replace caption placeholder span with button
14
+ - replace x between width and height pixel entry with symbol × \
15
+
16
+ tmp-editor-statsig:
17
+
18
+ - Add experiment `platform_editor_typography_migration_ugc`
19
+
20
+ - Updated dependencies
21
+
22
+ ## 1.34.8
23
+
24
+ ### Patch Changes
25
+
26
+ - [#149178](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/pull-requests/149178)
27
+ [`f3c027c1f8373`](https://stash.atlassian.com/projects/CONFCLOUD/repos/confluence-frontend/commits/f3c027c1f8373) -
28
+ [ED-24859] Improve LazyNodeView toDOM implementation to avoid LayoutShifts
29
+
3
30
  ## 1.34.7
4
31
 
5
32
  ### Patch Changes
@@ -33,7 +33,7 @@ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
33
33
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
34
34
  var _captions = require("../commands/captions");
35
35
  var _main = require("../pm-plugins/main");
36
- var _CaptionPlaceholder = _interopRequireDefault(require("../ui/CaptionPlaceholder"));
36
+ var _CaptionPlaceholder = require("../ui/CaptionPlaceholder");
37
37
  var _CommentBadge = require("../ui/CommentBadge");
38
38
  var _ResizableMediaSingle = _interopRequireDefault(require("../ui/ResizableMediaSingle"));
39
39
  var _ResizableMediaSingleNext = _interopRequireDefault(require("../ui/ResizableMediaSingle/ResizableMediaSingleNext"));
@@ -73,6 +73,8 @@ var MediaSingleNode = exports.default = /*#__PURE__*/function (_Component) {
73
73
  isCopying: false
74
74
  });
75
75
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "mediaSingleWrapperRef", /*#__PURE__*/_react.default.createRef());
76
+ // platform_editor_typography_migration_ugc clean up
77
+ // remove HTMLSpanElement type
76
78
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "captionPlaceHolderRef", /*#__PURE__*/_react.default.createRef());
77
79
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "createOrUpdateMediaNodeUpdater", function (props) {
78
80
  var node = _this.props.node.firstChild;
@@ -505,10 +507,16 @@ var MediaSingleNode = exports.default = /*#__PURE__*/function (_Component) {
505
507
  isDrafting: isCurrentNodeDrafting
506
508
  }), (0, _react2.jsx)("div", {
507
509
  ref: this.props.forwardRef
508
- }), shouldShowPlaceholder && (0, _react2.jsx)(_CaptionPlaceholder.default, {
510
+ }), shouldShowPlaceholder && ((0, _experiments.editorExperiment)('typography_migration_ugc', true) ? (0, _react2.jsx)(_CaptionPlaceholder.CaptionPlaceholderButton
511
+ // platform_editor_typography_migration_ugc clean up
512
+ // remove typecasting
513
+ , {
509
514
  ref: this.captionPlaceHolderRef,
510
515
  onClick: this.clickPlaceholder
511
- }));
516
+ }) : (0, _react2.jsx)(_CaptionPlaceholder.CaptionPlaceholder, {
517
+ ref: this.captionPlaceHolderRef,
518
+ onClick: this.clickPlaceholder
519
+ })));
512
520
  return (0, _react2.jsx)(_react.Fragment, null, canResize ? (0, _platformFeatureFlags.fg)('platform.editor.media.extended-resize-experience') ? (0, _react2.jsx)(_ResizableMediaSingleNext.default, (0, _extends2.default)({}, resizableMediaSingleProps, {
513
521
  showLegacyNotification: widthType !== 'pixel'
514
522
  }), MediaChildren) : (0, _react2.jsx)(_ResizableMediaSingle.default, (0, _extends2.default)({}, resizableMediaSingleProps, {
@@ -7,12 +7,11 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports.mediaSpecWithFixedToDOM = exports.defaultImageCardDimensions = void 0;
8
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
9
9
  var _adfSchema = require("@atlaskit/adf-schema");
10
+ var _lazyNodeView = require("@atlaskit/editor-common/lazy-node-view");
10
11
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
11
12
  var _toDOMAttrs = require("./toDOMAttrs");
12
13
  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; }
13
14
  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; }
14
- var skeletonStyling = "background: ".concat("var(--ds-background-neutral, #091E420F)", "; outline: none;");
15
-
16
15
  /**
17
16
  * Duplicate consts from `media-card`.
18
17
  * `packages/media/media-card/src/utils/cardDimensions.ts`
@@ -37,11 +36,15 @@ var mediaSpecWithFixedToDOM = exports.mediaSpecWithFixedToDOM = function mediaSp
37
36
  return _objectSpread(_objectSpread({}, _adfSchema.media), {}, {
38
37
  toDOM: function toDOM(node) {
39
38
  var attrs = (0, _toDOMAttrs.getMediaAttrs)('media', node);
40
- var styles = skeletonStyling;
41
39
  if (node.attrs.type === 'external') {
42
40
  return ['img', _objectSpread(_objectSpread({}, attrs), {}, {
43
41
  src: node.attrs.url,
44
- styles: styles
42
+ style: (0, _lazyNodeView.convertToInlineCss)({
43
+ backgroundColor: "var(--ds-background-neutral, #091E420F)",
44
+ outline: 'none',
45
+ width: "var(--ak-editor-media-card-width, 100%)",
46
+ height: "var(--ak-editor-media-card-height, 100%)"
47
+ })
45
48
  })];
46
49
  }
47
50
  if (node.attrs.type === 'file') {
@@ -54,11 +57,27 @@ var mediaSpecWithFixedToDOM = exports.mediaSpecWithFixedToDOM = function mediaSp
54
57
  }, attrs), {}, {
55
58
  // Manually kept in sync with the style of media cards. The goal is to render a plain gray
56
59
  // rectangle that provides an affordance for media.
57
- style: "\n\t\t\t\t\t\tdisplay: inline-block;\n\t\t\t\t\t\tbackground-image: url(\"".concat(dataUrl, "\");\n\t\t\t\t\t\tmargin-left: 0;\n\t\t\t\t\t\tmargin-right: 4px;\n\t\t\t\t\t\tborder-radius: 3px;\n\t\t\t\t\t\toutline: none;\n\n\t\t\t\t\t\tflex-basis: ").concat(defaultImageCardDimensions.width, "px;\n\t\t\t\t\t\tbackground-color: var(--media-card-background-color);\n\t\t\t\t\t\twidth: var(--media-card-width, ").concat(node.attrs.width || width, "px);\n\t\t\t\t\t\theight: var(--media-card-height, ").concat(node.attrs.height || height, "px);\n\t\t\t\t\t\t")
60
+
61
+ style: (0, _lazyNodeView.convertToInlineCss)({
62
+ display: 'var(--ak-editor-media-card-display, inline-block)',
63
+ backgroundImage: "url(\"".concat(dataUrl, "\")"),
64
+ marginLeft: '0',
65
+ marginRight: 'var(--ak-editor-media-margin-right, 4px)',
66
+ borderRadius: '3px',
67
+ outline: 'none',
68
+ flexBasis: "".concat(defaultImageCardDimensions.width, "px"),
69
+ backgroundColor: 'var(--ak-editor-media-card-background-color)',
70
+ width: "var(--ak-editor-media-card-width, 100%)",
71
+ height: "var(--ak-editor-media-card-height, 0)",
72
+ paddingBottom: "var(--ak-editor-media-padding-bottom, 0)"
73
+ })
58
74
  })];
59
75
  }
60
76
  return ['div', _objectSpread(_objectSpread({}, attrs), {}, {
61
- styles: styles
77
+ styles: (0, _lazyNodeView.convertToInlineCss)({
78
+ backgroundColor: "var(--ak-editor-media-card-background-color, ".concat("var(--ds-background-neutral, #091E420F)", ")"),
79
+ outline: 'none'
80
+ })
62
81
  })];
63
82
  }
64
83
  });
@@ -68,7 +68,7 @@ var mediaGroupSpecWithFixedToDOM = exports.mediaGroupSpecWithFixedToDOM = functi
68
68
  toDOM: function toDOM(node) {
69
69
  // Margin margin that consolidates the margin in the
70
70
  return ['div', {
71
- style: "\n\t\t\t\t\t\tmargin: 3px 5px;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\tgap: 8px;\n\t\t\t\t\t\t--media-card-background-color: #EBECF0;\n\t\t\t\t\t\t--media-card-width: ".concat(defaultImageCardDimensions.width, "px;\n\t\t\t\t\t\t--media-card-height: ").concat(defaultImageCardDimensions.height, "px;\n\t\t\t\t\t"),
71
+ style: "\n\t\t\t\t\t\tmargin: 3px 5px;\n\t\t\t\t\t\tdisplay: flex;\n\t\t\t\t\t\tgap: 8px;\n\t\t\t\t\t\t--ak-editor-media-card-background-color: #EBECF0;\n\t\t\t\t\t\t--ak-editor-media-card-width: ".concat(defaultImageCardDimensions.width, "px;\n\t\t\t\t\t\t--ak-editor-media-card-height: ").concat(defaultImageCardDimensions.height, "px;\n\t\t\t\t\t"),
72
72
  'data-node-type': 'mediaGroup'
73
73
  }, 0];
74
74
  }
@@ -4,118 +4,209 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.getMediaSinglePixelWidth = getMediaSinglePixelWidth;
8
- exports.wrappedLayouts = exports.shouldAddDefaultWrappedWidth = exports.mediaSingleSpecWithFixedToDOM = void 0;
7
+ exports.toDOM = exports.prepareWrapperContentDOM = exports.mediaWidthCSSCalc = exports.mediaSingleSpecWithFixedToDOM = exports.mediaProportionalWidthCSSCalc = exports.mediaJustifyContentCSS = exports.mediaContentWrapperWidthCSSCalc = void 0;
9
8
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
10
9
  var _adfSchema = require("@atlaskit/adf-schema");
10
+ var _lazyNodeView = require("@atlaskit/editor-common/lazy-node-view");
11
+ var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
12
+ var _colors = require("@atlaskit/theme/colors");
11
13
  var _experiments = require("@atlaskit/tmp-editor-statsig/experiments");
12
14
  var _toDOMAttrs = require("./toDOMAttrs");
13
15
  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; }
14
16
  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; }
15
- var skeletonStyling = "background: ".concat("var(--ds-background-neutral, #091E420F)", "; outline: none;");
16
- var wrappedLayouts = exports.wrappedLayouts = ['wrap-left', 'wrap-right', 'align-end', 'align-start'];
17
-
18
- /**
19
- * Duplicate of method from `@atlaskit/editor-common/utils`.
20
- * `packages/editor/editor-common/src/utils/rich-media-utils.ts`
21
- *
22
- * WHY?
23
- * This will eventually move to `@atlaskit/adf-schema` and we cannot reference
24
- * `@atlaskit/editor-common` from here or it will cause dependency issues.
25
- *
26
- * In the long term likely `toDOM` will move back out of `adf-schema` in which
27
- * case we can consolidate them.
28
- */
29
- var shouldAddDefaultWrappedWidth = exports.shouldAddDefaultWrappedWidth = function shouldAddDefaultWrappedWidth(layout, width, lineLength) {
30
- return wrappedLayouts.indexOf(layout) > -1 && lineLength && width && width > 0.5 * lineLength;
17
+ var WRAPPED_LAYOUTS = ['wrap-left', 'wrap-right'];
18
+ var ALIGNED_LAYOUTS = ['align-end', 'align-start'];
19
+ var LEGACY_LAYOUTS = ['full-width', 'wide'];
20
+ var DEFAULT_IMAGE_WIDTH = 250;
21
+ var DEFAULT_IMAGE_HEIGHT = 200;
22
+ var GUTTER_SIZE = '24px';
23
+ var HALF_GUTTER_SIZE = '12px';
24
+ var mediaWidthCSSCalc = exports.mediaWidthCSSCalc = function mediaWidthCSSCalc(_ref) {
25
+ var mediaSingleDimensionWidth = _ref.mediaSingleDimensionWidth,
26
+ layout = _ref.layout,
27
+ baseWidth = _ref.baseWidth,
28
+ isPixelWidth = _ref.isPixelWidth,
29
+ isExtendedResizeExperience = _ref.isExtendedResizeExperience;
30
+ var hasMediaDimensionWidth = typeof mediaSingleDimensionWidth === 'number';
31
+ var isMediaWrapped = WRAPPED_LAYOUTS.includes(layout);
32
+ var isMediaAligned = ALIGNED_LAYOUTS.includes(layout);
33
+ var isMediaLegacyLayout = LEGACY_LAYOUTS.includes(layout);
34
+ var shouldUseAlignedLayoutCalc = isMediaAligned && !hasMediaDimensionWidth;
35
+ var shouldUseWrappedLayoutCalc = isMediaWrapped && !hasMediaDimensionWidth;
36
+ var shouldUseBreakoutWideLogic = layout === 'wide';
37
+ var shouldUseBreakoutFullWidthLogic = layout === 'full-width';
38
+ var shouldUseProportionalCalc = !isExtendedResizeExperience && !isPixelWidth && hasMediaDimensionWidth && !isMediaLegacyLayout && !isMediaWrapped;
39
+ var shouldUseHalfContainerCalc = shouldUseProportionalCalc && isMediaAligned && mediaSingleDimensionWidth >= 100;
40
+ var shouldHardCodePixelWidth = isExtendedResizeExperience && isPixelWidth && hasMediaDimensionWidth;
41
+ var containerWidthPlusGutter = "(min(100cqw, 100%) + ".concat(GUTTER_SIZE, ")");
42
+ var fullContainerWidth = 'var(--ak-editor-max-container-width, 100cqw)';
43
+ var applyContainerWidthBoundaries = function applyContainerWidthBoundaries(calc) {
44
+ // Safe measure to avoid bleeding
45
+ return "min(".concat(calc, ", ").concat(fullContainerWidth, ")");
46
+ };
47
+ var cssCalc = '';
48
+ if (shouldUseAlignedLayoutCalc) {
49
+ cssCalc = "min(calc(".concat(containerWidthPlusGutter, " * 0.5 - ").concat(GUTTER_SIZE, "), ").concat(baseWidth, "px)");
50
+ } else if (shouldUseWrappedLayoutCalc) {
51
+ cssCalc = "100%";
52
+ } else if (shouldUseHalfContainerCalc) {
53
+ cssCalc = "min(min(".concat(baseWidth, "px, calc(50cqw - ").concat(HALF_GUTTER_SIZE, ")), 100%)");
54
+ } else if (shouldUseProportionalCalc) {
55
+ cssCalc = "calc(".concat(containerWidthPlusGutter, " * var(--ak-editor-media-single--proportion, 1px) - ").concat(GUTTER_SIZE, ")");
56
+ } else if (shouldHardCodePixelWidth) {
57
+ cssCalc = "min(".concat(mediaSingleDimensionWidth, "px, ").concat(fullContainerWidth, ")");
58
+ } else if (shouldUseBreakoutWideLogic) {
59
+ cssCalc = "max(var(--ak-editor--line-length), min(var(--ak-editor--breakout-wide-layout-width), calc(100cqw - var(--ak-editor--breakout-full-page-guttering-padding))))";
60
+ } else if (shouldUseBreakoutFullWidthLogic) {
61
+ cssCalc = "max(var(--ak-editor--line-length), min(var(--ak-editor--full-width-layout-width), calc(100cqw - var(--ak-editor--breakout-full-page-guttering-padding))))";
62
+ } else {
63
+ cssCalc = "max(min(".concat(baseWidth, "px, min(100cqw, 100%)), ").concat(GUTTER_SIZE, ")");
64
+ }
65
+ return applyContainerWidthBoundaries(cssCalc);
31
66
  };
32
- var MEDIA_SINGLE_GUTTER_SIZE = 24;
33
- var DEFAULT_EMBED_CARD_WIDTH = 680;
34
- var akEditorMediaResizeHandlerPaddingWide = 12;
35
-
36
- /**
37
- * Duplicate of method from `@atlaskit/editor-common/media-single`.
38
- * `packages/editor/editor-common/src/media-single/utils.ts`
39
- *
40
- * WHY?
41
- * This will eventually move to `@atlaskit/adf-schema` and we cannot reference
42
- * `@atlaskit/editor-common` from here or it will cause dependency issues.
43
- *
44
- * In the long term likely `toDOM` will move back out of `adf-schema` in which
45
- * case we can consolidate them.
46
- */
47
- function getMediaSinglePixelWidth(width, editorWidth) {
48
- var widthType = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'percentage';
49
- var gutterOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
50
- if (widthType === 'pixel') {
51
- return width;
67
+ var mediaContentWrapperWidthCSSCalc = exports.mediaContentWrapperWidthCSSCalc = function mediaContentWrapperWidthCSSCalc(_ref2) {
68
+ var isMediaWrapped = _ref2.isMediaWrapped,
69
+ isExternalMedia = _ref2.isExternalMedia,
70
+ isPixelWidth = _ref2.isPixelWidth,
71
+ childMediaWidth = _ref2.childMediaWidth,
72
+ mediaSingleDimensionWidth = _ref2.mediaSingleDimensionWidth;
73
+ if (isExternalMedia || !isMediaWrapped) {
74
+ return 'unset';
52
75
  }
53
- return Math.ceil((editorWidth + gutterOffset) * (width / 100) - gutterOffset);
54
- }
55
-
56
- /**
57
- * Duplicate logic from `@atlaskit/editor-common/ui` for MediaSingle.
58
- * `packages/editor/editor-common/src/ui/MediaSingle/index.tsx`
59
- *
60
- * WHY?
61
- * This will eventually move to `@atlaskit/adf-schema` and we cannot reference
62
- * `@atlaskit/editor-common` from here or it will cause dependency issues.
63
- *
64
- * In the long term likely `toDOM` will move back out of `adf-schema` in which
65
- * case we can consolidate them.
66
- */
67
- function computeMediaSingleDimensions(_ref) {
68
- var childNode = _ref.childNode,
69
- mediaSingleWidth = _ref.mediaSingleWidth,
70
- widthType = _ref.widthType,
71
- editorWidth = _ref.editorWidth;
72
- var width = childNode === null || childNode === void 0 ? void 0 : childNode.attrs.width;
73
- var height = childNode === null || childNode === void 0 ? void 0 : childNode.attrs.height;
74
- if (!mediaSingleWidth && shouldAddDefaultWrappedWidth(childNode === null || childNode === void 0 ? void 0 : childNode.attrs.layout, width, editorWidth)) {
75
- mediaSingleWidth = widthType === 'pixel' ? editorWidth / 2 : 50;
76
+ var hasMediaDimensionWidth = typeof mediaSingleDimensionWidth === 'number';
77
+ if (!hasMediaDimensionWidth) {
78
+ return "calc((100% / 2) - ".concat(HALF_GUTTER_SIZE, ")");
76
79
  }
77
- var isHeightOnly = width === undefined;
78
- if (mediaSingleWidth) {
79
- var pxWidth = getMediaSinglePixelWidth(mediaSingleWidth, editorWidth, widthType, MEDIA_SINGLE_GUTTER_SIZE);
80
- if (isHeightOnly) {
81
- return {
82
- width: pxWidth - akEditorMediaResizeHandlerPaddingWide,
83
- height: height
84
- };
85
- } else {
86
- return {
87
- width: pxWidth,
88
- height: height / width * pxWidth
89
- };
90
- }
91
- } else if (isHeightOnly) {
92
- return {
93
- width: DEFAULT_EMBED_CARD_WIDTH - akEditorMediaResizeHandlerPaddingWide,
94
- height: height
95
- };
80
+ if (isPixelWidth) {
81
+ return "min(calc((var(--ak-editor-max-container-width, 100%) / 2) - ".concat(HALF_GUTTER_SIZE, "), ").concat(mediaSingleDimensionWidth, "px)");
96
82
  }
97
- return {
98
- height: height,
99
- width: width
100
- };
101
- }
102
- function computeLayoutStyles(width, layout) {
83
+ var hasChildMediaWidth = typeof childMediaWidth === 'number';
84
+ if (hasChildMediaWidth) {
85
+ return "min(calc(100% * (".concat(mediaSingleDimensionWidth, " / 100) - ").concat(HALF_GUTTER_SIZE, "), ").concat(childMediaWidth, "px)");
86
+ }
87
+ return "calc(100% * (".concat(mediaSingleDimensionWidth, " / 100) - ").concat(HALF_GUTTER_SIZE, ")");
88
+ };
89
+ var mediaProportionalWidthCSSCalc = exports.mediaProportionalWidthCSSCalc = function mediaProportionalWidthCSSCalc(_ref3) {
90
+ var isPixelWidth = _ref3.isPixelWidth,
91
+ isExtendedResizeExperience = _ref3.isExtendedResizeExperience,
92
+ mediaSingleDimensionWidth = _ref3.mediaSingleDimensionWidth,
93
+ isMediaWrapped = _ref3.isMediaWrapped;
94
+ var hasMediaWidth = typeof mediaSingleDimensionWidth === 'number';
95
+ if (isPixelWidth || isExtendedResizeExperience || !hasMediaWidth) {
96
+ return 'unset';
97
+ }
98
+ if (isMediaWrapped) {
99
+ return mediaSingleDimensionWidth >= 50 ? '1' : "".concat(1 - mediaSingleDimensionWidth / 100);
100
+ }
101
+ return "".concat(mediaSingleDimensionWidth / 100);
102
+ };
103
+ var mediaJustifyContentCSS = exports.mediaJustifyContentCSS = function mediaJustifyContentCSS(_ref4) {
104
+ var layout = _ref4.layout;
103
105
  switch (layout) {
104
106
  case 'align-end':
105
- return "margin-left: auto; margin-right: 0; width: ".concat(width, "px;");
107
+ case 'wrap-right':
108
+ return 'end';
106
109
  case 'align-start':
107
- return "margin-left: 0; margin-right: auto; width: ".concat(width, "px;");
108
- case 'center':
109
- return 'margin-left: auto; margin-right: auto;';
110
- case 'full-width':
111
- case 'wide':
112
- return 'width: 100%; margin-top: 56px; margin-bottom: 56px;';
113
110
  case 'wrap-left':
114
- return 'float: left;';
115
- case 'wrap-right':
116
- return 'float: right;';
111
+ return 'start';
112
+ default:
113
+ return 'center';
117
114
  }
118
- }
115
+ };
116
+ var prepareWrapperContentDOM = exports.prepareWrapperContentDOM = function prepareWrapperContentDOM(_ref5) {
117
+ var layout = _ref5.layout,
118
+ dataAttrs = _ref5.dataAttrs,
119
+ childMediaWidth = _ref5.childMediaWidth,
120
+ childMediaHeight = _ref5.childMediaHeight,
121
+ mediaSingleDimensionWidth = _ref5.mediaSingleDimensionWidth,
122
+ isPixelWidth = _ref5.isPixelWidth,
123
+ isExtendedResizeExperience = _ref5.isExtendedResizeExperience;
124
+ var layoutStyleJustifyContent = mediaJustifyContentCSS({
125
+ layout: layout
126
+ });
127
+ var mediaWidthCalc = mediaWidthCSSCalc({
128
+ layout: layout,
129
+ mediaSingleDimensionWidth: mediaSingleDimensionWidth,
130
+ baseWidth: childMediaWidth,
131
+ isPixelWidth: isPixelWidth,
132
+ isExtendedResizeExperience: isExtendedResizeExperience
133
+ });
134
+ var paddingBottom = "calc((".concat(childMediaHeight, " / ").concat(childMediaWidth, ") * 100%)");
135
+ return ['div', _objectSpread({
136
+ class: "rich-media-item mediaSingleView-content-wrap image-".concat(layout),
137
+ style: (0, _lazyNodeView.convertToInlineCss)({
138
+ display: 'flex',
139
+ justifyContent: layoutStyleJustifyContent,
140
+ transform: 'unset',
141
+ marginLeft: '0'
142
+ })
143
+ }, dataAttrs), ['div', {
144
+ style: (0, _lazyNodeView.convertToInlineCss)({
145
+ borderRadius: "var(--ds-border-radius, 3px)",
146
+ width: mediaWidthCalc,
147
+ minWidth: mediaWidthCalc,
148
+ color: "var(--ds-icon, ".concat(_colors.N50, ")")
149
+ })
150
+ }, ['figure', {
151
+ class: 'media-single-node',
152
+ style: (0, _lazyNodeView.convertToInlineCss)({
153
+ '--ak-editor-media-padding-bottom': paddingBottom,
154
+ margin: '0px'
155
+ })
156
+ }, ['div', {}, ['div', {
157
+ class: 'media-content-wrap'
158
+ }, 0]]]]];
159
+ };
160
+ var toDOM = exports.toDOM = function toDOM(node) {
161
+ var _mediaSingleAttrs$lay;
162
+ var mediaSingleAttrs = node.attrs;
163
+ var isPixelWidth = (mediaSingleAttrs === null || mediaSingleAttrs === void 0 ? void 0 : mediaSingleAttrs.widthType) === 'pixel';
164
+ var layout = (_mediaSingleAttrs$lay = mediaSingleAttrs === null || mediaSingleAttrs === void 0 ? void 0 : mediaSingleAttrs.layout) !== null && _mediaSingleAttrs$lay !== void 0 ? _mediaSingleAttrs$lay : 'center';
165
+ var childNode = node.firstChild;
166
+ var isExternalMedia = (childNode === null || childNode === void 0 ? void 0 : childNode.attrs.type) === 'external';
167
+ var childMediaWidth = (childNode === null || childNode === void 0 ? void 0 : childNode.attrs.width) || DEFAULT_IMAGE_WIDTH;
168
+ var childMediaHeight = (childNode === null || childNode === void 0 ? void 0 : childNode.attrs.height) || DEFAULT_IMAGE_HEIGHT;
169
+ var dataAttrs = (0, _toDOMAttrs.getAttrsFromNodeMediaSingle)((0, _platformFeatureFlags.fg)('platform.editor.media.extended-resize-experience'), node);
170
+ var content = prepareWrapperContentDOM({
171
+ layout: layout,
172
+ dataAttrs: dataAttrs,
173
+ childMediaWidth: childMediaWidth,
174
+ childMediaHeight: childMediaHeight,
175
+ mediaSingleDimensionWidth: mediaSingleAttrs.width,
176
+ isPixelWidth: isPixelWidth,
177
+ isExtendedResizeExperience: (0, _platformFeatureFlags.fg)('platform.editor.media.extended-resize-experience')
178
+ });
179
+ var isMediaWrapped = WRAPPED_LAYOUTS.includes(layout);
180
+ var proportionCalc = mediaProportionalWidthCSSCalc({
181
+ isPixelWidth: isPixelWidth,
182
+ isMediaWrapped: isMediaWrapped,
183
+ mediaSingleDimensionWidth: mediaSingleAttrs === null || mediaSingleAttrs === void 0 ? void 0 : mediaSingleAttrs.width,
184
+ isExtendedResizeExperience: (0, _platformFeatureFlags.fg)('platform.editor.media.extended-resize-experience')
185
+ });
186
+ var contentWrapperWidth = mediaContentWrapperWidthCSSCalc({
187
+ isMediaWrapped: isMediaWrapped,
188
+ isExternalMedia: isExternalMedia,
189
+ isPixelWidth: isPixelWidth,
190
+ childMediaWidth: childMediaWidth,
191
+ mediaSingleDimensionWidth: mediaSingleAttrs === null || mediaSingleAttrs === void 0 ? void 0 : mediaSingleAttrs.width
192
+ });
193
+ return ['div', {
194
+ class: 'mediaSingleView-content-wrap',
195
+ layout: layout,
196
+ style: (0, _lazyNodeView.convertToInlineCss)({
197
+ '--ak-editor-media-single--proportion': proportionCalc,
198
+ '--ak-editor-media-card-display': 'block',
199
+ '--ak-editor-media-single--gutter-size': GUTTER_SIZE,
200
+ '--ak-editor-media-margin-right': '0',
201
+ '--ak-editor-media-card-background-color': "var(--ds-background-neutral, ".concat(_colors.N20, ")"),
202
+ marginTop: isMediaWrapped ? HALF_GUTTER_SIZE : "var(--ds-space-300, 24px)",
203
+ marginBottom: isMediaWrapped ? HALF_GUTTER_SIZE : "var(--ds-space-300, 24px)",
204
+ marginRight: isMediaWrapped ? layout === 'wrap-right' ? 'auto' : HALF_GUTTER_SIZE : 0,
205
+ marginLeft: isMediaWrapped ? layout === 'wrap-left' ? 'auto' : HALF_GUTTER_SIZE : 0,
206
+ width: contentWrapperWidth
207
+ })
208
+ }, content];
209
+ };
119
210
 
120
211
  // @nodeSpecException:toDOM patch
121
212
  var mediaSingleSpecWithFixedToDOM = exports.mediaSingleSpecWithFixedToDOM = function mediaSingleSpecWithFixedToDOM(mediaSingleOption) {
@@ -124,45 +215,6 @@ var mediaSingleSpecWithFixedToDOM = exports.mediaSingleSpecWithFixedToDOM = func
124
215
  return mediaSingleNode;
125
216
  }
126
217
  return _objectSpread(_objectSpread({}, mediaSingleNode), {}, {
127
- toDOM: function toDOM(node, lazyNodeViewOptions) {
128
- var _mediaSingleAttrs$lay;
129
- var mediaSingleAttrs = node.attrs;
130
- var layout = (_mediaSingleAttrs$lay = mediaSingleAttrs === null || mediaSingleAttrs === void 0 ? void 0 : mediaSingleAttrs.layout) !== null && _mediaSingleAttrs$lay !== void 0 ? _mediaSingleAttrs$lay : 'center';
131
- var mediaSingleWidth = mediaSingleAttrs === null || mediaSingleAttrs === void 0 ? void 0 : mediaSingleAttrs.width;
132
- var widthType = mediaSingleAttrs === null || mediaSingleAttrs === void 0 ? void 0 : mediaSingleAttrs.widthType;
133
- var childNode = node.firstChild;
134
- var dataAttrs = (0, _toDOMAttrs.getAttrsFromNodeMediaSingle)(mediaSingleOption.withExtendedWidthTypes, node);
135
- var _computeMediaSingleDi = computeMediaSingleDimensions({
136
- childNode: childNode,
137
- widthType: widthType,
138
- mediaSingleWidth: mediaSingleWidth,
139
- editorWidth: (lazyNodeViewOptions === null || lazyNodeViewOptions === void 0 ? void 0 : lazyNodeViewOptions.editorLineWidth) || 760
140
- }),
141
- width = _computeMediaSingleDi.width,
142
- height = _computeMediaSingleDi.height;
143
- var sizes = width && height ? "width: ".concat(width, "px; height: ").concat(height, "px; ").concat(skeletonStyling) : '';
144
- var layoutStyles = computeLayoutStyles(mediaSingleWidth, layout);
145
- var style = "display: block; margin-top: ".concat("var(--ds-space-300, 24px)", "; margin-bottom: ", "var(--ds-space-300, 24px)", "; ", layoutStyles);
146
- var layoutClass = "image-".concat(layout);
147
- var centerLayout = "display: flex; justify-content: center;";
148
- var endLayout = "display: flex; justify-content: end;";
149
- var startLayout = "display: flex; justify-content: start;";
150
- var layoutStyle = layout === 'align-end' ? endLayout : layout === 'align-start' ? startLayout : centerLayout;
151
- var content = ['div', _objectSpread({
152
- class: "rich-media-item mediaSingleView-content-wrap ".concat(layoutClass)
153
- }, dataAttrs), ['div', {
154
- // Transparent image workaround to control styling
155
- style: "".concat(sizes, "; ").concat(style, "; max-width: 100%; border-radius: ", "var(--ds-border-radius, 3px)", "; ").concat(layoutStyle)
156
- }, ['figure', {
157
- class: 'media-single-node',
158
- style: 'margin: 0px'
159
- }, ['div', {}, ['div', {
160
- class: 'media-content-wrap'
161
- }, 0]]]]];
162
- return ['div', {
163
- class: 'mediaSingleView-content-wrap',
164
- layout: layout
165
- }, content];
166
- }
218
+ toDOM: toDOM
167
219
  });
168
220
  };
@@ -1,16 +1,18 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+ var _typeof = require("@babel/runtime/helpers/typeof");
4
5
  Object.defineProperty(exports, "__esModule", {
5
6
  value: true
6
7
  });
7
- exports.default = void 0;
8
+ exports.CaptionPlaceholderButton = exports.CaptionPlaceholder = void 0;
8
9
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
- var _react = _interopRequireDefault(require("react"));
10
+ var _react = _interopRequireWildcard(require("react"));
10
11
  var _react2 = require("@emotion/react");
11
12
  var _reactIntlNext = require("react-intl-next");
12
13
  var _media = require("@atlaskit/editor-common/media");
13
14
  var _mediaSingle = require("@atlaskit/editor-common/media-single");
15
+ var _primitives = require("@atlaskit/primitives");
14
16
  var _colors = require("@atlaskit/theme/colors");
15
17
  var _templateObject;
16
18
  /**
@@ -18,15 +20,48 @@ var _templateObject;
18
20
  * @jsx jsx
19
21
  */
20
22
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
23
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
24
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
21
25
  // eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
22
26
  var placeholder = (0, _react2.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n\tcolor: ", ";\n\twidth: 100%;\n\ttext-align: center;\n\tmargin-top: ", " !important;\n\tdisplay: block;\n"])), "var(--ds-text-subtlest, ".concat(_colors.N200, ")"), "var(--ds-space-100, 8px)");
23
- var _default = exports.default = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
27
+ var placeholderButton = (0, _primitives.xcss)({
28
+ width: '100%',
29
+ marginTop: 'space.100'
30
+ });
31
+
32
+ // platform_editor_typography_migration_ugc clean up
33
+ // Remove this component
34
+ var CaptionPlaceholder = exports.CaptionPlaceholder = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
24
35
  var onClick = _ref.onClick;
25
- return (0, _react2.jsx)("span", {
36
+ return (
37
+ // eslint-disable-next-line @atlaskit/design-system/use-primitives-text
38
+ (0, _react2.jsx)("span", {
39
+ ref: ref,
40
+ css: placeholder,
41
+ onClick: onClick,
42
+ "data-id": _mediaSingle.CAPTION_PLACEHOLDER_ID,
43
+ "data-testid": "caption-placeholder"
44
+ }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _media.captionMessages.placeholder))
45
+ );
46
+ });
47
+ var CaptionPlaceholderButton = exports.CaptionPlaceholderButton = /*#__PURE__*/_react.default.forwardRef(function (_ref2, ref) {
48
+ var onClick = _ref2.onClick;
49
+ var handleMouseDown = (0, _react.useCallback)(function (e) {
50
+ // In firefox, button is focused when mouse down, which make editor lose focus
51
+ // Hence we want to disabled it so that user can type in caption directly after click
52
+ e.preventDefault();
53
+ }, []);
54
+ return (0, _react2.jsx)(_primitives.Pressable, {
26
55
  ref: ref,
27
- css: placeholder,
56
+ backgroundColor: "color.background.neutral.subtle",
28
57
  onClick: onClick,
58
+ onMouseDown: handleMouseDown,
29
59
  "data-id": _mediaSingle.CAPTION_PLACEHOLDER_ID,
30
- "data-testid": "caption-placeholder"
31
- }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _media.captionMessages.placeholder));
60
+ testId: "caption-placeholder",
61
+ padding: "space.0",
62
+ xcss: placeholderButton
63
+ }, (0, _react2.jsx)(_primitives.Text, {
64
+ color: "color.text.subtlest",
65
+ size: "large"
66
+ }, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, _media.captionMessages.placeholder)));
32
67
  });
@@ -27,6 +27,10 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
27
27
 
28
28
  // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
29
29
 
30
+ var pixelSizingLabel = (0, _primitives.xcss)({
31
+ gridArea: 'label',
32
+ lineHeight: "var(--ds-space-300, 24px)"
33
+ });
30
34
  var PixelEntry = exports.PixelEntry = function PixelEntry(_ref) {
31
35
  var width = _ref.width,
32
36
  mediaWidth = _ref.mediaWidth,
@@ -160,9 +164,10 @@ var PixelEntry = exports.PixelEntry = function PixelEntry(_ref) {
160
164
  maxWidth: maxWidth
161
165
  })
162
166
  })));
163
- }), (0, _react2.jsx)("span", {
164
- css: _styles.pixelSizingLabel
165
- }, "x"), (0, _react2.jsx)(_form.Field, {
167
+ }), (0, _react2.jsx)(_primitives.Box, {
168
+ as: "span",
169
+ xcss: pixelSizingLabel
170
+ }, "\xD7"), (0, _react2.jsx)(_form.Field, {
166
171
  key: "inputHeight",
167
172
  name: "inputHeight",
168
173
  defaultValue: computedHeight
@@ -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.pixelSizingWrapper = exports.pixelSizingWidthInput = exports.pixelSizingLabel = exports.pixelSizingInput = exports.pixelSizingHeightInput = exports.pixelSizingFullWidthLabelStyles = exports.pixelEntryHiddenSubmit = exports.pixelEntryForm = void 0;
7
+ exports.pixelSizingWrapper = exports.pixelSizingWidthInput = exports.pixelSizingInput = exports.pixelSizingHeightInput = exports.pixelSizingFullWidthLabelStyles = exports.pixelEntryHiddenSubmit = exports.pixelEntryForm = void 0;
8
8
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
9
9
  var _react = require("@emotion/react");
10
10
  var _templateObject; // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
@@ -12,6 +12,7 @@ var PIXEL_SIZING_WRAPPER_MINIMUM_WIDTH = 120;
12
12
 
13
13
  // eslint-disable-next-line @atlaskit/design-system/no-css-tagged-template-expression, @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
14
14
  var pixelSizingWrapper = exports.pixelSizingWrapper = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n\tdisplay: grid;\n\tgrid-template-columns: 1fr 1em 1fr 0;\n\tgrid-template-rows: auto;\n\tgrid-template-areas: 'widthinput label heightinput submit';\n\twidth: ", "px;\n\ttext-align: center;\n\theight: ", ";\n\n\t// Atlaskit fieldset does not allow style override\n\t& > * {\n\t\tmargin-top: 0 !important;\n\t}\n"])), PIXEL_SIZING_WRAPPER_MINIMUM_WIDTH, "var(--ds-space-300, 24px)");
15
+
15
16
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
16
17
  var pixelEntryForm = exports.pixelEntryForm = (0, _react.css)({
17
18
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-nested-selectors -- Ignored via go/DSP-18766
@@ -29,11 +30,7 @@ var pixelSizingInput = exports.pixelSizingInput = (0, _react.css)({
29
30
  textAlign: 'center'
30
31
  }
31
32
  });
32
- // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
33
- var pixelSizingLabel = exports.pixelSizingLabel = (0, _react.css)({
34
- gridArea: 'label',
35
- lineHeight: "var(--ds-space-300, 24px)"
36
- });
33
+
37
34
  // eslint-disable-next-line @atlaskit/ui-styling-standard/no-exported-styles -- Ignored via go/DSP-18766
38
35
  var pixelSizingWidthInput = exports.pixelSizingWidthInput = (0, _react.css)({
39
36
  gridArea: 'widthinput'