@atlaskit/media-card 80.4.0 → 80.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.
Files changed (30) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/cjs/card/ai-generating-overlay/AIGeneratingOverlay.compiled.css +21 -0
  3. package/dist/cjs/card/ai-generating-overlay/AIGeneratingOverlay.js +54 -0
  4. package/dist/cjs/card/ai-generating-overlay/index.js +12 -0
  5. package/dist/cjs/card/card.js +1 -1
  6. package/dist/cjs/card/cardView.js +11 -23
  7. package/dist/cjs/card/media-card-analytics-error-boundary.js +1 -1
  8. package/dist/cjs/inline/loader.js +1 -1
  9. package/dist/cjs/utils/ufoExperiences.js +1 -1
  10. package/dist/es2019/card/ai-generating-overlay/AIGeneratingOverlay.compiled.css +22 -0
  11. package/dist/es2019/card/ai-generating-overlay/AIGeneratingOverlay.js +42 -0
  12. package/dist/es2019/card/ai-generating-overlay/index.js +1 -0
  13. package/dist/es2019/card/card.js +1 -1
  14. package/dist/es2019/card/cardView.js +11 -23
  15. package/dist/es2019/card/media-card-analytics-error-boundary.js +1 -1
  16. package/dist/es2019/inline/loader.js +1 -1
  17. package/dist/es2019/utils/ufoExperiences.js +1 -1
  18. package/dist/esm/card/ai-generating-overlay/AIGeneratingOverlay.compiled.css +21 -0
  19. package/dist/esm/card/ai-generating-overlay/AIGeneratingOverlay.js +46 -0
  20. package/dist/esm/card/ai-generating-overlay/index.js +1 -0
  21. package/dist/esm/card/card.js +1 -1
  22. package/dist/esm/card/cardView.js +11 -23
  23. package/dist/esm/card/media-card-analytics-error-boundary.js +1 -1
  24. package/dist/esm/inline/loader.js +1 -1
  25. package/dist/esm/utils/ufoExperiences.js +1 -1
  26. package/dist/types/card/ai-generating-overlay/AIGeneratingOverlay.d.ts +12 -0
  27. package/dist/types/card/ai-generating-overlay/index.d.ts +2 -0
  28. package/dist/types-ts4.5/card/ai-generating-overlay/AIGeneratingOverlay.d.ts +12 -0
  29. package/dist/types-ts4.5/card/ai-generating-overlay/index.d.ts +2 -0
  30. package/package.json +7 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @atlaskit/media-card
2
2
 
3
+ ## 80.4.2
4
+
5
+ ### Patch Changes
6
+
7
+ - [`e8a04d9738c5a`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/e8a04d9738c5a) -
8
+ Add a rainbow `AIGeneratingOverlay` shown over media nodes during AI inline edits, gated by
9
+ `fg('cc-maui-phase-2-loading')` layered on top of the existing MAUI gates and killswitch.
10
+
11
+ ## 80.4.1
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies
16
+
3
17
  ## 80.4.0
4
18
 
5
19
  ### Minor Changes
@@ -0,0 +1,21 @@
1
+
2
+ ._1r04idpf{inset:0}
3
+ ._2rkolb4i{border-radius:var(--ds-radius-xsmall,2px)}
4
+ ._y44v15mx{animation:var(--_1aqqhnb)}._154iidpf{top:0}
5
+ ._16jlkb7n{flex-grow:1}
6
+ ._18m915vq{overflow-y:hidden}
7
+ ._1bah1h6o{justify-content:center}
8
+ ._1bsb12it{width:75%}
9
+ ._1e0c1txw{display:flex}
10
+ ._1o9zidpf{flex-shrink:0}
11
+ ._1pbyqfx8{z-index:5}
12
+ ._1reo15vq{overflow-x:hidden}
13
+ ._4cvr1h6o{align-items:center}
14
+ ._4t3i1l7b{height:3px}
15
+ ._4t3i1osq{height:100%}
16
+ ._bfhk15uy{background-color:var(--ds-background-neutral,hsla(0,0%,100%,.3))}
17
+ ._bfhk1e9t{background-color:var(--ds-blanket,rgba(9,30,66,.36))}
18
+ ._i0dl1x1l{flex-basis:25%}
19
+ ._kqswh2mm{position:relative}
20
+ ._kqswstnw{position:absolute}
21
+ ._lcxv1wug{pointer-events:auto}
@@ -0,0 +1,54 @@
1
+ /* AIGeneratingOverlay.tsx generated by @compiled/babel-plugin v0.39.1 */
2
+ /** AI loading overlay rendered over a media node: blanket + sliding rainbow bar. */
3
+ "use strict";
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+ Object.defineProperty(exports, "__esModule", {
7
+ value: true
8
+ });
9
+ exports.AIGeneratingOverlay = AIGeneratingOverlay;
10
+ require("./AIGeneratingOverlay.compiled.css");
11
+ var React = _interopRequireWildcard(require("react"));
12
+ var _runtime = require("@compiled/react/runtime");
13
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
14
+ var overlayStyles = null;
15
+ var progressBarTrackStyles = null;
16
+ var RAINBOW_TRAIN_COLORS = ["var(--ds-chart-categorical-4, #F68909)", // orange
17
+ "var(--ds-chart-categorical-2, #82B536)", // green
18
+ "var(--ds-chart-categorical-1, #357DE8)", // blue
19
+ "var(--ds-chart-categorical-3, #BF63F3)" // purple
20
+ ];
21
+ var slideKeyframes = null;
22
+ var trainStyles = null;
23
+ var trainBlockStyles = null;
24
+ function AIGeneratingOverlay(_ref) {
25
+ var label = _ref.label,
26
+ testId = _ref.testId;
27
+ return /*#__PURE__*/React.createElement("div", {
28
+ "data-testid": testId !== null && testId !== void 0 ? testId : 'ai-generating-overlay',
29
+ role: "presentation",
30
+ className: (0, _runtime.ax)(["_1r04idpf _kqswstnw _1e0c1txw _4cvr1h6o _1bah1h6o _lcxv1wug _bfhk1e9t _1pbyqfx8"])
31
+ }, /*#__PURE__*/React.createElement("div", {
32
+ role: "progressbar",
33
+ "aria-label": label,
34
+ "aria-valuemin": 0,
35
+ "aria-valuemax": 100,
36
+ "data-testid": "ai-generating-overlay-progress-bar",
37
+ className: (0, _runtime.ax)(["_2rkolb4i _1reo15vq _18m915vq _1bsb12it _4t3i1l7b _kqswh2mm _bfhk15uy"])
38
+ }, /*#__PURE__*/React.createElement("div", {
39
+ "data-testid": "ai-generating-overlay-train",
40
+ className: (0, _runtime.ax)(["_y44v15mx _1e0c1txw _kqswstnw _154iidpf _4t3i1osq"]),
41
+ style: {
42
+ "--_1aqqhnb": (0, _runtime.ix)("".concat(slideKeyframes, " 1.2s linear infinite"))
43
+ }
44
+ }, RAINBOW_TRAIN_COLORS.map(function (color) {
45
+ return /*#__PURE__*/React.createElement("div", {
46
+ key: color,
47
+ "data-testid": "ai-generating-overlay-train-block",
48
+ style: {
49
+ backgroundColor: color
50
+ },
51
+ className: (0, _runtime.ax)(["_16jlkb7n _1o9zidpf _i0dl1x1l _4t3i1osq"])
52
+ });
53
+ }))));
54
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "AIGeneratingOverlay", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _AIGeneratingOverlay.AIGeneratingOverlay;
10
+ }
11
+ });
12
+ var _AIGeneratingOverlay = require("./AIGeneratingOverlay");
@@ -20,7 +20,7 @@ var _label = _interopRequireDefault(require("@atlaskit/react-ufo/label"));
20
20
  var _excluded = ["identifier"];
21
21
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
22
22
  var packageName = "@atlaskit/media-card";
23
- var packageVersion = "0.0.0-development";
23
+ var packageVersion = "80.4.1";
24
24
  var CardBase = exports.CardBase = function CardBase(_ref) {
25
25
  var identifier = _ref.identifier,
26
26
  otherProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
@@ -25,10 +25,9 @@ var _progressBar = require("./ui/progressBar/progressBar");
25
25
  var _playButton = require("./ui/playButton/playButton");
26
26
  var _tickBox = require("./ui/tickBox/tickBox");
27
27
  var _blanket = require("./ui/blanket/blanket");
28
- var _progressBar2 = require("@atlaskit/progress-bar");
29
- var _aiBorder = require("./ui/aiBorder/aiBorder");
30
28
  var _actionsBar = require("./ui/actionsBar/actionsBar");
31
29
  var _iconWrapper = require("./ui/iconWrapper/iconWrapper");
30
+ var _aiGeneratingOverlay = require("./ai-generating-overlay");
32
31
  var _iconMessage2 = require("./ui/iconMessage");
33
32
  var _errors = require("../errors");
34
33
  var _isNetworkError = require("../utils/isNetworkError");
@@ -39,6 +38,7 @@ var _openMediaViewerButton = _interopRequireDefault(require("./ui/openMediaViewe
39
38
  var _useCurrentValueRef = require("../utils/useCurrentValueRef");
40
39
  var _svgView = require("./svgView");
41
40
  var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
41
+ var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
42
42
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
43
43
  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; }
44
44
  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; }
@@ -54,14 +54,6 @@ var i18n = (0, _reactIntl.defineMessages)({
54
54
  description: 'Accessible label for the progress bar shown while AI is generating an image on the media card'
55
55
  }
56
56
  });
57
- var aiProgressBarWrapperStyle = {
58
- position: 'absolute',
59
- top: '50%',
60
- left: '50%',
61
- transform: 'translate(-50%, -50%)',
62
- width: '60%',
63
- zIndex: 2
64
- };
65
57
  var CardViewBase = exports.CardViewBase = function CardViewBase(_ref) {
66
58
  var identifier = _ref.identifier,
67
59
  _ref$innerRef = _ref.innerRef,
@@ -246,10 +238,10 @@ var CardViewBase = exports.CardViewBase = function CardViewBase(_ref) {
246
238
  customTitleMessage = _getRenderConfigBySta.customTitleMessage,
247
239
  traceTooltipVariant = _getRenderConfigBySta.traceTooltipVariant;
248
240
 
249
- // When AI is generating, always show the AI border.
250
- // The AI generating decoration is cleared when the replacement upload completes,
251
- // so we don't need to check status here.
252
- var renderAIBorderOverride = !!isAIGenerating && (0, _platformFeatureFlags.fg)('platform_editor_maui_edit');
241
+ // AI border shown while generating; cleared by the decoration on upload completion.
242
+ /* eslint-disable @atlaskit/platform/no-preconditioning -- loading-specific gate (cc-maui-phase-2-loading) layered on the existing platform_editor_maui_edit gate + MAUI experiment cohort during phased rollout; preconditioning is intentional and will be removed when the existing gates are cleaned up */
243
+ var renderAIBorderOverride = !!isAIGenerating && (0, _platformFeatureFlags.fg)('platform_editor_maui_edit') && (0, _platformFeatureFlags.fg)('cc-maui-phase-2-loading') && (0, _expValEquals.expValEquals)('cc-maui-experiment', 'isEnabled', true);
244
+ /* eslint-enable @atlaskit/platform/no-preconditioning */
253
245
  var shouldDisplayBackground = !cardPreview || !disableOverlay || status === 'error' || status === 'failed-processing';
254
246
  var isPlayButtonClickable = shouldRenderPlayButton() && !!disableOverlay;
255
247
  var isTickBoxSelectable = !disableOverlay && !!selectable && !selected;
@@ -335,14 +327,10 @@ var CardViewBase = exports.CardViewBase = function CardViewBase(_ref) {
335
327
  }), renderPlayButton && /*#__PURE__*/_react.default.createElement(_iconWrapper.IconWrapper, {
336
328
  breakpoint: breakpoint,
337
329
  hasTitleBox: hasVisibleTitleBox
338
- }, /*#__PURE__*/_react.default.createElement(_playButton.PlayButton, null)), renderAIBorderOverride ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_blanket.Blanket, {
339
- isFixed: true
340
- }), /*#__PURE__*/_react.default.createElement("div", {
341
- style: aiProgressBarWrapperStyle
342
- }, /*#__PURE__*/_react.default.createElement(_progressBar2.TransparentProgressBar, {
343
- isIndeterminate: true,
344
- ariaLabel: intl.formatMessage(i18n.aiGeneratingImage)
345
- }))) : renderBlanket && /*#__PURE__*/_react.default.createElement(_blanket.Blanket, {
330
+ }, /*#__PURE__*/_react.default.createElement(_playButton.PlayButton, null)), renderAIBorderOverride ? /*#__PURE__*/_react.default.createElement(_aiGeneratingOverlay.AIGeneratingOverlay, {
331
+ label: intl.formatMessage(i18n.aiGeneratingImage),
332
+ testId: "media-card-ai-generating-overlay"
333
+ }) : renderBlanket && /*#__PURE__*/_react.default.createElement(_blanket.Blanket, {
346
334
  isFixed: isFixedBlanket
347
335
  }), renderTitleBox && /*#__PURE__*/_react.default.createElement(_titleBox.TitleBox, {
348
336
  name: name,
@@ -360,7 +348,7 @@ var CardViewBase = exports.CardViewBase = function CardViewBase(_ref) {
360
348
  positionBottom: !hasVisibleTitleBox
361
349
  }), renderTickBox && /*#__PURE__*/_react.default.createElement(_tickBox.TickBox, {
362
350
  selected: selected
363
- })), renderAIBorderOverride && /*#__PURE__*/_react.default.createElement(_aiBorder.AIBorder, null), disableOverlay || !actions || actions.length === 0 ? null : /*#__PURE__*/_react.default.createElement(_actionsBar.ActionsBar, {
351
+ })), disableOverlay || !actions || actions.length === 0 ? null : /*#__PURE__*/_react.default.createElement(_actionsBar.ActionsBar, {
364
352
  filename: name,
365
353
  actions: actionsWithDetails
366
354
  }));
@@ -87,7 +87,7 @@ var WrappedMediaCardAnalyticsErrorBoundary = /*#__PURE__*/function (_React$Compo
87
87
  }(_react.default.Component);
88
88
  (0, _defineProperty2.default)(WrappedMediaCardAnalyticsErrorBoundary, "displayName", 'MediaCardAnalyticsErrorBoundary');
89
89
  var packageName = "@atlaskit/media-card";
90
- var packageVersion = "0.0.0-development";
90
+ var packageVersion = "80.4.1";
91
91
 
92
92
  // @ts-ignore: [PIT-1685] Fails in post-office due to backwards incompatibility issue with React 18
93
93
  var MediaCardAnalyticsErrorBoundary = (0, _mediaCommon.withMediaAnalyticsContext)({
@@ -116,7 +116,7 @@ var MediaInlineCardLoader = exports.default = /*#__PURE__*/function (_React$Pure
116
116
  ErrorBoundary = _this$state.ErrorBoundary;
117
117
  var analyticsContext = {
118
118
  packageVersion: "@atlaskit/media-card",
119
- packageName: "0.0.0-development",
119
+ packageName: "80.4.1",
120
120
  componentName: 'mediaInlineCard',
121
121
  component: 'mediaInlineCard'
122
122
  };
@@ -19,7 +19,7 @@ var _globalScope = require("./globalScope/globalScope");
19
19
  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; }
20
20
  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; }
21
21
  var packageName = "@atlaskit/media-card";
22
- var packageVersion = "0.0.0-development";
22
+ var packageVersion = "80.4.1";
23
23
  var SAMPLE_RATE = 0.05;
24
24
 
25
25
  /**
@@ -0,0 +1,22 @@
1
+
2
+ ._1r04idpf{inset:0}
3
+ ._2rkolb4i{border-radius:var(--ds-radius-xsmall,2px)}
4
+ ._y44v1j9w{animation:kq5ip39 1.2s linear infinite}._154iidpf{top:0}
5
+ ._16jlkb7n{flex-grow:1}
6
+ ._18m915vq{overflow-y:hidden}
7
+ ._1bah1h6o{justify-content:center}
8
+ ._1bsb12it{width:75%}
9
+ ._1e0c1txw{display:flex}
10
+ ._1o9zidpf{flex-shrink:0}
11
+ ._1pbyqfx8{z-index:5}
12
+ ._1reo15vq{overflow-x:hidden}
13
+ ._4cvr1h6o{align-items:center}
14
+ ._4t3i1l7b{height:3px}
15
+ ._4t3i1osq{height:100%}
16
+ ._bfhk15uy{background-color:var(--ds-background-neutral,hsla(0,0%,100%,.3))}
17
+ ._bfhk1e9t{background-color:var(--ds-blanket,rgba(9,30,66,.36))}
18
+ ._i0dl1x1l{flex-basis:25%}
19
+ ._kqswh2mm{position:relative}
20
+ ._kqswstnw{position:absolute}
21
+ ._lcxv1wug{pointer-events:auto}
22
+ @keyframes kq5ip39{0%{left:-30%;width:30%}50%{left:25%;width:75%}to{left:130%;width:30%}}
@@ -0,0 +1,42 @@
1
+ /* AIGeneratingOverlay.tsx generated by @compiled/babel-plugin v0.39.1 */
2
+ /** AI loading overlay rendered over a media node: blanket + sliding rainbow bar. */
3
+ import "./AIGeneratingOverlay.compiled.css";
4
+ import * as React from 'react';
5
+ import { ax, ix } from "@compiled/react/runtime";
6
+ const overlayStyles = null;
7
+ const progressBarTrackStyles = null;
8
+ const RAINBOW_TRAIN_COLORS = ["var(--ds-chart-categorical-4, #F68909)", // orange
9
+ "var(--ds-chart-categorical-2, #82B536)", // green
10
+ "var(--ds-chart-categorical-1, #357DE8)", // blue
11
+ "var(--ds-chart-categorical-3, #BF63F3)" // purple
12
+ ];
13
+ const slideKeyframes = null;
14
+ const trainStyles = null;
15
+ const trainBlockStyles = null;
16
+ export function AIGeneratingOverlay({
17
+ label,
18
+ testId
19
+ }) {
20
+ return /*#__PURE__*/React.createElement("div", {
21
+ "data-testid": testId !== null && testId !== void 0 ? testId : 'ai-generating-overlay',
22
+ role: "presentation",
23
+ className: ax(["_1r04idpf _kqswstnw _1e0c1txw _4cvr1h6o _1bah1h6o _lcxv1wug _bfhk1e9t _1pbyqfx8"])
24
+ }, /*#__PURE__*/React.createElement("div", {
25
+ role: "progressbar",
26
+ "aria-label": label,
27
+ "aria-valuemin": 0,
28
+ "aria-valuemax": 100,
29
+ "data-testid": "ai-generating-overlay-progress-bar",
30
+ className: ax(["_2rkolb4i _1reo15vq _18m915vq _1bsb12it _4t3i1l7b _kqswh2mm _bfhk15uy"])
31
+ }, /*#__PURE__*/React.createElement("div", {
32
+ "data-testid": "ai-generating-overlay-train",
33
+ className: ax(["_y44v1j9w _1e0c1txw _kqswstnw _154iidpf _4t3i1osq"])
34
+ }, RAINBOW_TRAIN_COLORS.map(color => /*#__PURE__*/React.createElement("div", {
35
+ key: color,
36
+ "data-testid": "ai-generating-overlay-train-block",
37
+ style: {
38
+ backgroundColor: color
39
+ },
40
+ className: ax(["_16jlkb7n _1o9zidpf _i0dl1x1l _4t3i1osq"])
41
+ })))));
42
+ }
@@ -0,0 +1 @@
1
+ export { AIGeneratingOverlay } from './AIGeneratingOverlay';
@@ -9,7 +9,7 @@ import { startResourceObserver, setAnalyticsContext } from '../utils/mediaPerfor
9
9
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
10
10
  import UFOLabel from '@atlaskit/react-ufo/label';
11
11
  const packageName = "@atlaskit/media-card";
12
- const packageVersion = "0.0.0-development";
12
+ const packageVersion = "80.4.1";
13
13
  export const CardBase = ({
14
14
  identifier,
15
15
  ...otherProps
@@ -15,10 +15,9 @@ import { ProgressBar } from './ui/progressBar/progressBar';
15
15
  import { PlayButton } from './ui/playButton/playButton';
16
16
  import { TickBox } from './ui/tickBox/tickBox';
17
17
  import { Blanket } from './ui/blanket/blanket';
18
- import { TransparentProgressBar } from '@atlaskit/progress-bar';
19
- import { AIBorder } from './ui/aiBorder/aiBorder';
20
18
  import { ActionsBar } from './ui/actionsBar/actionsBar';
21
19
  import { IconWrapper } from './ui/iconWrapper/iconWrapper';
20
+ import { AIGeneratingOverlay } from './ai-generating-overlay';
22
21
  import { PreviewUnavailable, CreatingPreview, FailedToUpload, FailedToLoad, CheckInternetConnection } from './ui/iconMessage';
23
22
  import { isUploadError } from '../errors';
24
23
  import { isNetworkError } from '../utils/isNetworkError';
@@ -29,6 +28,7 @@ import OpenMediaViewerButton from './ui/openMediaViewerButton/openMediaViewerBut
29
28
  import { useCurrentValueRef } from '../utils/useCurrentValueRef';
30
29
  import { SvgView } from './svgView';
31
30
  import { fg } from '@atlaskit/platform-feature-flags';
31
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
32
32
  const i18n = defineMessages({
33
33
  traceIdTooltip: {
34
34
  id: 'fabric.media.trace_id_tooltip',
@@ -41,14 +41,6 @@ const i18n = defineMessages({
41
41
  description: 'Accessible label for the progress bar shown while AI is generating an image on the media card'
42
42
  }
43
43
  });
44
- const aiProgressBarWrapperStyle = {
45
- position: 'absolute',
46
- top: '50%',
47
- left: '50%',
48
- transform: 'translate(-50%, -50%)',
49
- width: '60%',
50
- zIndex: 2
51
- };
52
44
  export const CardViewBase = ({
53
45
  identifier,
54
46
  innerRef = null,
@@ -235,10 +227,10 @@ export const CardViewBase = ({
235
227
  traceTooltipVariant
236
228
  } = getRenderConfigByStatus();
237
229
 
238
- // When AI is generating, always show the AI border.
239
- // The AI generating decoration is cleared when the replacement upload completes,
240
- // so we don't need to check status here.
241
- const renderAIBorderOverride = !!isAIGenerating && fg('platform_editor_maui_edit');
230
+ // AI border shown while generating; cleared by the decoration on upload completion.
231
+ /* eslint-disable @atlaskit/platform/no-preconditioning -- loading-specific gate (cc-maui-phase-2-loading) layered on the existing platform_editor_maui_edit gate + MAUI experiment cohort during phased rollout; preconditioning is intentional and will be removed when the existing gates are cleaned up */
232
+ const renderAIBorderOverride = !!isAIGenerating && fg('platform_editor_maui_edit') && fg('cc-maui-phase-2-loading') && expValEquals('cc-maui-experiment', 'isEnabled', true);
233
+ /* eslint-enable @atlaskit/platform/no-preconditioning */
242
234
  const shouldDisplayBackground = !cardPreview || !disableOverlay || status === 'error' || status === 'failed-processing';
243
235
  const isPlayButtonClickable = shouldRenderPlayButton() && !!disableOverlay;
244
236
  const isTickBoxSelectable = !disableOverlay && !!selectable && !selected;
@@ -324,14 +316,10 @@ export const CardViewBase = ({
324
316
  }), renderPlayButton && /*#__PURE__*/React.createElement(IconWrapper, {
325
317
  breakpoint: breakpoint,
326
318
  hasTitleBox: hasVisibleTitleBox
327
- }, /*#__PURE__*/React.createElement(PlayButton, null)), renderAIBorderOverride ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Blanket, {
328
- isFixed: true
329
- }), /*#__PURE__*/React.createElement("div", {
330
- style: aiProgressBarWrapperStyle
331
- }, /*#__PURE__*/React.createElement(TransparentProgressBar, {
332
- isIndeterminate: true,
333
- ariaLabel: intl.formatMessage(i18n.aiGeneratingImage)
334
- }))) : renderBlanket && /*#__PURE__*/React.createElement(Blanket, {
319
+ }, /*#__PURE__*/React.createElement(PlayButton, null)), renderAIBorderOverride ? /*#__PURE__*/React.createElement(AIGeneratingOverlay, {
320
+ label: intl.formatMessage(i18n.aiGeneratingImage),
321
+ testId: "media-card-ai-generating-overlay"
322
+ }) : renderBlanket && /*#__PURE__*/React.createElement(Blanket, {
335
323
  isFixed: isFixedBlanket
336
324
  }), renderTitleBox && /*#__PURE__*/React.createElement(TitleBox, {
337
325
  name: name,
@@ -349,7 +337,7 @@ export const CardViewBase = ({
349
337
  positionBottom: !hasVisibleTitleBox
350
338
  }), renderTickBox && /*#__PURE__*/React.createElement(TickBox, {
351
339
  selected: selected
352
- })), renderAIBorderOverride && /*#__PURE__*/React.createElement(AIBorder, null), disableOverlay || !actions || actions.length === 0 ? null : /*#__PURE__*/React.createElement(ActionsBar, {
340
+ })), disableOverlay || !actions || actions.length === 0 ? null : /*#__PURE__*/React.createElement(ActionsBar, {
353
341
  filename: name,
354
342
  actions: actionsWithDetails
355
343
  }));
@@ -66,7 +66,7 @@ class WrappedMediaCardAnalyticsErrorBoundary extends React.Component {
66
66
  }
67
67
  _defineProperty(WrappedMediaCardAnalyticsErrorBoundary, "displayName", 'MediaCardAnalyticsErrorBoundary');
68
68
  const packageName = "@atlaskit/media-card";
69
- const packageVersion = "0.0.0-development";
69
+ const packageVersion = "80.4.1";
70
70
 
71
71
  // @ts-ignore: [PIT-1685] Fails in post-office due to backwards incompatibility issue with React 18
72
72
  const MediaCardAnalyticsErrorBoundary = withMediaAnalyticsContext({
@@ -37,7 +37,7 @@ export default class MediaInlineCardLoader extends React.PureComponent {
37
37
  } = this.state;
38
38
  const analyticsContext = {
39
39
  packageVersion: "@atlaskit/media-card",
40
- packageName: "0.0.0-development",
40
+ packageName: "80.4.1",
41
41
  componentName: 'mediaInlineCard',
42
42
  component: 'mediaInlineCard'
43
43
  };
@@ -9,7 +9,7 @@ import { getMediaEnvironment, getMediaRegion } from '@atlaskit/media-client';
9
9
  import { getActiveInteraction } from '@atlaskit/react-ufo/interaction-metrics';
10
10
  import { getMediaGlobalScope } from './globalScope/globalScope';
11
11
  const packageName = "@atlaskit/media-card";
12
- const packageVersion = "0.0.0-development";
12
+ const packageVersion = "80.4.1";
13
13
  const SAMPLE_RATE = 0.05;
14
14
 
15
15
  /**
@@ -0,0 +1,21 @@
1
+
2
+ ._1r04idpf{inset:0}
3
+ ._2rkolb4i{border-radius:var(--ds-radius-xsmall,2px)}
4
+ ._y44v15mx{animation:var(--_1aqqhnb)}._154iidpf{top:0}
5
+ ._16jlkb7n{flex-grow:1}
6
+ ._18m915vq{overflow-y:hidden}
7
+ ._1bah1h6o{justify-content:center}
8
+ ._1bsb12it{width:75%}
9
+ ._1e0c1txw{display:flex}
10
+ ._1o9zidpf{flex-shrink:0}
11
+ ._1pbyqfx8{z-index:5}
12
+ ._1reo15vq{overflow-x:hidden}
13
+ ._4cvr1h6o{align-items:center}
14
+ ._4t3i1l7b{height:3px}
15
+ ._4t3i1osq{height:100%}
16
+ ._bfhk15uy{background-color:var(--ds-background-neutral,hsla(0,0%,100%,.3))}
17
+ ._bfhk1e9t{background-color:var(--ds-blanket,rgba(9,30,66,.36))}
18
+ ._i0dl1x1l{flex-basis:25%}
19
+ ._kqswh2mm{position:relative}
20
+ ._kqswstnw{position:absolute}
21
+ ._lcxv1wug{pointer-events:auto}
@@ -0,0 +1,46 @@
1
+ /* AIGeneratingOverlay.tsx generated by @compiled/babel-plugin v0.39.1 */
2
+ /** AI loading overlay rendered over a media node: blanket + sliding rainbow bar. */
3
+ import "./AIGeneratingOverlay.compiled.css";
4
+ import * as React from 'react';
5
+ import { ax, ix } from "@compiled/react/runtime";
6
+ var overlayStyles = null;
7
+ var progressBarTrackStyles = null;
8
+ var RAINBOW_TRAIN_COLORS = ["var(--ds-chart-categorical-4, #F68909)", // orange
9
+ "var(--ds-chart-categorical-2, #82B536)", // green
10
+ "var(--ds-chart-categorical-1, #357DE8)", // blue
11
+ "var(--ds-chart-categorical-3, #BF63F3)" // purple
12
+ ];
13
+ var slideKeyframes = null;
14
+ var trainStyles = null;
15
+ var trainBlockStyles = null;
16
+ export function AIGeneratingOverlay(_ref) {
17
+ var label = _ref.label,
18
+ testId = _ref.testId;
19
+ return /*#__PURE__*/React.createElement("div", {
20
+ "data-testid": testId !== null && testId !== void 0 ? testId : 'ai-generating-overlay',
21
+ role: "presentation",
22
+ className: ax(["_1r04idpf _kqswstnw _1e0c1txw _4cvr1h6o _1bah1h6o _lcxv1wug _bfhk1e9t _1pbyqfx8"])
23
+ }, /*#__PURE__*/React.createElement("div", {
24
+ role: "progressbar",
25
+ "aria-label": label,
26
+ "aria-valuemin": 0,
27
+ "aria-valuemax": 100,
28
+ "data-testid": "ai-generating-overlay-progress-bar",
29
+ className: ax(["_2rkolb4i _1reo15vq _18m915vq _1bsb12it _4t3i1l7b _kqswh2mm _bfhk15uy"])
30
+ }, /*#__PURE__*/React.createElement("div", {
31
+ "data-testid": "ai-generating-overlay-train",
32
+ className: ax(["_y44v15mx _1e0c1txw _kqswstnw _154iidpf _4t3i1osq"]),
33
+ style: {
34
+ "--_1aqqhnb": ix("".concat(slideKeyframes, " 1.2s linear infinite"))
35
+ }
36
+ }, RAINBOW_TRAIN_COLORS.map(function (color) {
37
+ return /*#__PURE__*/React.createElement("div", {
38
+ key: color,
39
+ "data-testid": "ai-generating-overlay-train-block",
40
+ style: {
41
+ backgroundColor: color
42
+ },
43
+ className: ax(["_16jlkb7n _1o9zidpf _i0dl1x1l _4t3i1osq"])
44
+ });
45
+ }))));
46
+ }
@@ -0,0 +1 @@
1
+ export { AIGeneratingOverlay } from './AIGeneratingOverlay';
@@ -11,7 +11,7 @@ import { startResourceObserver, setAnalyticsContext } from '../utils/mediaPerfor
11
11
  import { useAnalyticsEvents } from '@atlaskit/analytics-next';
12
12
  import UFOLabel from '@atlaskit/react-ufo/label';
13
13
  var packageName = "@atlaskit/media-card";
14
- var packageVersion = "0.0.0-development";
14
+ var packageVersion = "80.4.1";
15
15
  export var CardBase = function CardBase(_ref) {
16
16
  var identifier = _ref.identifier,
17
17
  otherProps = _objectWithoutProperties(_ref, _excluded);
@@ -19,10 +19,9 @@ import { ProgressBar } from './ui/progressBar/progressBar';
19
19
  import { PlayButton } from './ui/playButton/playButton';
20
20
  import { TickBox } from './ui/tickBox/tickBox';
21
21
  import { Blanket } from './ui/blanket/blanket';
22
- import { TransparentProgressBar } from '@atlaskit/progress-bar';
23
- import { AIBorder } from './ui/aiBorder/aiBorder';
24
22
  import { ActionsBar } from './ui/actionsBar/actionsBar';
25
23
  import { IconWrapper } from './ui/iconWrapper/iconWrapper';
24
+ import { AIGeneratingOverlay } from './ai-generating-overlay';
26
25
  import { PreviewUnavailable, CreatingPreview, FailedToUpload, FailedToLoad, CheckInternetConnection } from './ui/iconMessage';
27
26
  import { isUploadError } from '../errors';
28
27
  import { isNetworkError } from '../utils/isNetworkError';
@@ -33,6 +32,7 @@ import OpenMediaViewerButton from './ui/openMediaViewerButton/openMediaViewerBut
33
32
  import { useCurrentValueRef } from '../utils/useCurrentValueRef';
34
33
  import { SvgView } from './svgView';
35
34
  import { fg } from '@atlaskit/platform-feature-flags';
35
+ import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals';
36
36
  var i18n = defineMessages({
37
37
  traceIdTooltip: {
38
38
  id: 'fabric.media.trace_id_tooltip',
@@ -45,14 +45,6 @@ var i18n = defineMessages({
45
45
  description: 'Accessible label for the progress bar shown while AI is generating an image on the media card'
46
46
  }
47
47
  });
48
- var aiProgressBarWrapperStyle = {
49
- position: 'absolute',
50
- top: '50%',
51
- left: '50%',
52
- transform: 'translate(-50%, -50%)',
53
- width: '60%',
54
- zIndex: 2
55
- };
56
48
  export var CardViewBase = function CardViewBase(_ref) {
57
49
  var identifier = _ref.identifier,
58
50
  _ref$innerRef = _ref.innerRef,
@@ -237,10 +229,10 @@ export var CardViewBase = function CardViewBase(_ref) {
237
229
  customTitleMessage = _getRenderConfigBySta.customTitleMessage,
238
230
  traceTooltipVariant = _getRenderConfigBySta.traceTooltipVariant;
239
231
 
240
- // When AI is generating, always show the AI border.
241
- // The AI generating decoration is cleared when the replacement upload completes,
242
- // so we don't need to check status here.
243
- var renderAIBorderOverride = !!isAIGenerating && fg('platform_editor_maui_edit');
232
+ // AI border shown while generating; cleared by the decoration on upload completion.
233
+ /* eslint-disable @atlaskit/platform/no-preconditioning -- loading-specific gate (cc-maui-phase-2-loading) layered on the existing platform_editor_maui_edit gate + MAUI experiment cohort during phased rollout; preconditioning is intentional and will be removed when the existing gates are cleaned up */
234
+ var renderAIBorderOverride = !!isAIGenerating && fg('platform_editor_maui_edit') && fg('cc-maui-phase-2-loading') && expValEquals('cc-maui-experiment', 'isEnabled', true);
235
+ /* eslint-enable @atlaskit/platform/no-preconditioning */
244
236
  var shouldDisplayBackground = !cardPreview || !disableOverlay || status === 'error' || status === 'failed-processing';
245
237
  var isPlayButtonClickable = shouldRenderPlayButton() && !!disableOverlay;
246
238
  var isTickBoxSelectable = !disableOverlay && !!selectable && !selected;
@@ -326,14 +318,10 @@ export var CardViewBase = function CardViewBase(_ref) {
326
318
  }), renderPlayButton && /*#__PURE__*/React.createElement(IconWrapper, {
327
319
  breakpoint: breakpoint,
328
320
  hasTitleBox: hasVisibleTitleBox
329
- }, /*#__PURE__*/React.createElement(PlayButton, null)), renderAIBorderOverride ? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Blanket, {
330
- isFixed: true
331
- }), /*#__PURE__*/React.createElement("div", {
332
- style: aiProgressBarWrapperStyle
333
- }, /*#__PURE__*/React.createElement(TransparentProgressBar, {
334
- isIndeterminate: true,
335
- ariaLabel: intl.formatMessage(i18n.aiGeneratingImage)
336
- }))) : renderBlanket && /*#__PURE__*/React.createElement(Blanket, {
321
+ }, /*#__PURE__*/React.createElement(PlayButton, null)), renderAIBorderOverride ? /*#__PURE__*/React.createElement(AIGeneratingOverlay, {
322
+ label: intl.formatMessage(i18n.aiGeneratingImage),
323
+ testId: "media-card-ai-generating-overlay"
324
+ }) : renderBlanket && /*#__PURE__*/React.createElement(Blanket, {
337
325
  isFixed: isFixedBlanket
338
326
  }), renderTitleBox && /*#__PURE__*/React.createElement(TitleBox, {
339
327
  name: name,
@@ -351,7 +339,7 @@ export var CardViewBase = function CardViewBase(_ref) {
351
339
  positionBottom: !hasVisibleTitleBox
352
340
  }), renderTickBox && /*#__PURE__*/React.createElement(TickBox, {
353
341
  selected: selected
354
- })), renderAIBorderOverride && /*#__PURE__*/React.createElement(AIBorder, null), disableOverlay || !actions || actions.length === 0 ? null : /*#__PURE__*/React.createElement(ActionsBar, {
342
+ })), disableOverlay || !actions || actions.length === 0 ? null : /*#__PURE__*/React.createElement(ActionsBar, {
355
343
  filename: name,
356
344
  actions: actionsWithDetails
357
345
  }));
@@ -80,7 +80,7 @@ var WrappedMediaCardAnalyticsErrorBoundary = /*#__PURE__*/function (_React$Compo
80
80
  }(React.Component);
81
81
  _defineProperty(WrappedMediaCardAnalyticsErrorBoundary, "displayName", 'MediaCardAnalyticsErrorBoundary');
82
82
  var packageName = "@atlaskit/media-card";
83
- var packageVersion = "0.0.0-development";
83
+ var packageVersion = "80.4.1";
84
84
 
85
85
  // @ts-ignore: [PIT-1685] Fails in post-office due to backwards incompatibility issue with React 18
86
86
  var MediaCardAnalyticsErrorBoundary = withMediaAnalyticsContext({
@@ -101,7 +101,7 @@ var MediaInlineCardLoader = /*#__PURE__*/function (_React$PureComponent) {
101
101
  ErrorBoundary = _this$state.ErrorBoundary;
102
102
  var analyticsContext = {
103
103
  packageVersion: "@atlaskit/media-card",
104
- packageName: "0.0.0-development",
104
+ packageName: "80.4.1",
105
105
  componentName: 'mediaInlineCard',
106
106
  component: 'mediaInlineCard'
107
107
  };
@@ -13,7 +13,7 @@ import { getMediaEnvironment, getMediaRegion } from '@atlaskit/media-client';
13
13
  import { getActiveInteraction } from '@atlaskit/react-ufo/interaction-metrics';
14
14
  import { getMediaGlobalScope } from './globalScope/globalScope';
15
15
  var packageName = "@atlaskit/media-card";
16
- var packageVersion = "0.0.0-development";
16
+ var packageVersion = "80.4.1";
17
17
  var SAMPLE_RATE = 0.05;
18
18
 
19
19
  /**
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
5
+ /** AI loading overlay rendered over a media node: blanket + sliding rainbow bar. */
6
+ export type AIGeneratingOverlayProps = {
7
+ /** Accessible label for the progress bar (translated). */
8
+ label: string;
9
+ /** Optional test id for the overlay root element. Defaults to `'ai-generating-overlay'`. */
10
+ testId?: string;
11
+ };
12
+ export declare function AIGeneratingOverlay({ label, testId }: AIGeneratingOverlayProps): JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { AIGeneratingOverlay } from './AIGeneratingOverlay';
2
+ export type { AIGeneratingOverlayProps } from './AIGeneratingOverlay';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @jsxRuntime classic
3
+ * @jsx jsx
4
+ */
5
+ /** AI loading overlay rendered over a media node: blanket + sliding rainbow bar. */
6
+ export type AIGeneratingOverlayProps = {
7
+ /** Accessible label for the progress bar (translated). */
8
+ label: string;
9
+ /** Optional test id for the overlay root element. Defaults to `'ai-generating-overlay'`. */
10
+ testId?: string;
11
+ };
12
+ export declare function AIGeneratingOverlay({ label, testId }: AIGeneratingOverlayProps): JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { AIGeneratingOverlay } from './AIGeneratingOverlay';
2
+ export type { AIGeneratingOverlayProps } from './AIGeneratingOverlay';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/media-card",
3
- "version": "80.4.0",
3
+ "version": "80.4.2",
4
4
  "description": "Includes all media card related components, CardView, CardViewSmall, Card...",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -47,10 +47,10 @@
47
47
  "@atlaskit/platform-feature-flags": "^1.1.0",
48
48
  "@atlaskit/primitives": "^19.0.0",
49
49
  "@atlaskit/progress-bar": "^4.2.0",
50
- "@atlaskit/react-ufo": "^5.17.0",
50
+ "@atlaskit/react-ufo": "^5.18.0",
51
51
  "@atlaskit/spinner": "^19.1.0",
52
52
  "@atlaskit/theme": "^23.2.0",
53
- "@atlaskit/tmp-editor-statsig": "^73.0.0",
53
+ "@atlaskit/tmp-editor-statsig": "^74.0.0",
54
54
  "@atlaskit/tokens": "^13.0.0",
55
55
  "@atlaskit/tooltip": "^21.2.0",
56
56
  "@atlaskit/ufo": "^0.4.0",
@@ -80,7 +80,7 @@
80
80
  "@atlaskit/media-test-data": "^3.3.0",
81
81
  "@atlaskit/media-test-helpers": "^41.0.0",
82
82
  "@atlaskit/radio": "^8.5.0",
83
- "@atlaskit/range": "^10.0.0",
83
+ "@atlaskit/range": "^10.1.0",
84
84
  "@atlaskit/ssr": "workspace:^",
85
85
  "@atlaskit/toggle": "^15.6.0",
86
86
  "@atlassian/a11y-jest-testing": "^0.11.0",
@@ -101,6 +101,9 @@
101
101
  "wait-for-expect": "^1.2.0"
102
102
  },
103
103
  "platform-feature-flags": {
104
+ "cc-maui-phase-2-loading": {
105
+ "type": "boolean"
106
+ },
104
107
  "platform_editor_maui_edit": {
105
108
  "type": "boolean"
106
109
  },