@atlaskit/media-avatar-picker 28.0.1 → 28.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AGENTS.md CHANGED
@@ -17,11 +17,13 @@
17
17
  > codebase and the docs after any code change. Use the `generate` subcommand to bootstrap the index
18
18
  > in a new repository.
19
19
 
20
- **Entry point:** `.agents/knowledge-index/INDEX.md`
21
- **Unit doc:** `.agents/knowledge-index/domains/media/units/atlaskit-media-avatar-picker.md`
22
- **Standards page:** `.agents/knowledge-index/domains/media/units/atlaskit-media-avatar-picker/standards-and-patterns.md`
23
- **CLI:** `python3 .agents/skills/knowledge-index/scripts/kg.py {find,read,edit,investigate,validate,init,explore,generate} …`
24
- **Refresh protocol:** never silently bump `Last verified` — always re-read the listed `Sources` first, edit, then `kg.py edit <path> --message "<reason>"`.
20
+ **Entry point:** `.agents/knowledge-index/INDEX.md` **Unit doc:**
21
+ `.agents/knowledge-index/domains/media/units/atlaskit-media-avatar-picker.md` **Standards page:**
22
+ `.agents/knowledge-index/domains/media/units/atlaskit-media-avatar-picker/standards-and-patterns.md`
23
+ **CLI:**
24
+ `python3 .agents/skills/knowledge-index/scripts/kg.py {find,read,edit,investigate,validate,init,explore,generate} …`
25
+ **Refresh protocol:** never silently bump `Last verified` — always re-read the listed `Sources`
26
+ first, edit, then `kg.py edit <path> --message "<reason>"`.
25
27
 
26
28
  ---
27
29
 
package/CHANGELOG.md CHANGED
@@ -1,11 +1,38 @@
1
1
  # @atlaskit/media-avatar-picker
2
2
 
3
+ ## 28.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - [`dbc145df6b864`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/dbc145df6b864) -
8
+ Clean up feature gate `platform_media_package_react19_lifecycle_fix`. The React 19-safe lifecycle
9
+ behaviour is now permanent: prop-change reactions run in `componentDidUpdate` and the legacy
10
+ `UNSAFE_componentWillReceiveProps` paths have been removed.
11
+
12
+ ## 28.1.0
13
+
14
+ ### Minor Changes
15
+
16
+ - [`cd097a2111788`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/cd097a2111788) -
17
+ Republish packages depending on `@atlaskit/react-compiler-gating` so their published dependency
18
+ reference is updated to the renamed `@atlaskit/react-compiler-gating` scope.
19
+
20
+ The earlier rename of `@atlassian/react-compiler-gating` to `@atlaskit/react-compiler-gating` only
21
+ bumped the renamed package itself, so dependent packages were never republished and their
22
+ published versions still referenced the old `@atlassian/react-compiler-gating` name, which is not
23
+ available in the public npm registry. This minor bump republishes all affected packages with the
24
+ corrected dependency.
25
+
26
+ ### Patch Changes
27
+
28
+ - Updated dependencies
29
+
3
30
  ## 28.0.1
4
31
 
5
32
  ### Patch Changes
6
33
 
7
34
  - [`ee28cf33718b0`](https://bitbucket.org/atlassian/atlassian-frontend-monorepo/commits/ee28cf33718b0) -
8
- Add @atlassian/react-compiler-gating as a runtime dependency to enable React Compiler platform
35
+ Add @atlaskit/react-compiler-gating as a runtime dependency to enable React Compiler platform
9
36
  gating.
10
37
  - Updated dependencies
11
38
 
package/compass.yml CHANGED
@@ -1,41 +1,61 @@
1
1
  name: Media Avatar Picker
2
- id: 'ari:cloud:compass:a436116f-02ce-4520-8fbb-7301462a1674:component/c5751cc6-3513-4070-9deb-af31e86aed34/91b4a140-e4d9-4c93-b685-33ab22c6fa6d'
2
+ id: ari:cloud:compass:a436116f-02ce-4520-8fbb-7301462a1674:component/c5751cc6-3513-4070-9deb-af31e86aed34/91b4a140-e4d9-4c93-b685-33ab22c6fa6d
3
3
  description:
4
- 'A component to select, drag and resize image avatars. It also provides a default list of
5
- predefined avatars.'
4
+ A component to select, drag and resize image avatars. It also provides a default list of
5
+ predefined avatars.
6
6
  configVersion: 1
7
7
  typeId: UI_ELEMENT
8
- ownerId: 'ari:cloud:teams::team/3bee892f-cb1b-496c-b866-0f08d9e0296c'
8
+ ownerId: ari:cloud:teams::team/3bee892f-cb1b-496c-b866-0f08d9e0296c # Media EXIF
9
9
  fields:
10
- lifecycle: Active
11
10
  tier: 2
11
+ lifecycle: Active
12
+ isMonorepoProject: true
12
13
  labels:
13
14
  - atlassian-platform
15
+ - platform-code
16
+ - platform-afm
14
17
  links:
15
18
  - name: Root Repository
16
19
  type: REPOSITORY
17
20
  url: https://bitbucket.org/atlassian/atlassian-frontend-monorepo/src/master
18
21
  - name: ''
19
22
  type: REPOSITORY
20
- url: 'https://bitbucket.org/atlassian/atlassian-frontend-monorepo/src/master/platform/packages/media/media-avatar-picker/'
23
+ url: https://bitbucket.org/atlassian/atlassian-frontend-monorepo/src/master/platform/packages/media/media-avatar-picker/
21
24
  - name: ''
22
25
  type: DOCUMENT
23
- url: 'https://atlaskit.atlassian.com/packages/media/media-avatar-picker'
24
- #- name: '' # Tome Capability
25
- # type: OTHER_LINK
26
- # url: ''
26
+ url: https://atlaskit.atlassian.com/packages/media/media-avatar-picker
27
27
  - name: Media By Product
28
28
  type: DASHBOARD
29
- url: 'https://atlassian.signalfx.com/#/dashboard/E-vk3wqAwAA?groupId=E-vkzo1AwAA&configId=E-vk5fsAwAA&startTime=-7d&endTime=Now'
29
+ url: https://atlassian.signalfx.com/#/dashboard/E-vk3wqAwAA?groupId=E-vkzo1AwAA&configId=E-vk5fsAwAA&startTime=-7d&endTime=Now
30
30
  - name: ''
31
31
  type: CHAT_CHANNEL
32
- url: 'https://atlassian.slack.com/archives/C05J5GNHPLN'
32
+ url: https://atlassian.slack.com/archives/C05J5GNHPLN
33
33
  - name: ''
34
34
  type: ON_CALL
35
- url: 'https://atlassian.app.opsgenie.com/settings/schedule/detail/b62291ff-4029-4f26-b7fc-d75d46d7aebc'
35
+ url: https://atlassian.app.opsgenie.com/settings/schedule/detail/b62291ff-4029-4f26-b7fc-d75d46d7aebc
36
36
  - name: ''
37
37
  type: PROJECT
38
- url: 'https://product-fabric.atlassian.net/jira/software/c/projects/BMPT/boards/5090'
38
+ url: https://product-fabric.atlassian.net/jira/software/c/projects/BMPT/boards/5090
39
+ - name: Slack Channel
40
+ type: CHAT_CHANNEL
41
+ url: https://atlassian.enterprise.slack.com/archives/C05J5GNHPLN # #help-media-platform
42
+ - name: Media Avatar Picker
43
+ type: REPOSITORY
44
+ url: https://bitbucket.org/atlassian/atlassian-frontend-monorepo/src/master/platform/packages/media/media-avatar-picker
39
45
  relationships: {}
40
- # Learn more about formatting compass.yml:
41
- # https://go.atlassian.com/compass-yml-format
46
+ customFields:
47
+ - name: Department
48
+ type: text
49
+ value: Eng - Automation
50
+ - name: Technical Owner
51
+ type: user
52
+ value: ari:cloud:identity::user/712020:678ede01-221b-4b2f-9fce-adcc0b0d095e # Anupama Majety
53
+ - name: Required Reviewers Opt In
54
+ type: boolean
55
+ value: true
56
+ - name: Reviewer Selection Mechanism
57
+ type: text
58
+ value: random(2)
59
+ - name: Required Reviewer Approvals
60
+ type: number
61
+ value: 1
@@ -9,7 +9,6 @@ exports.defaultProps = exports.ImagePlacer = exports.DEFAULT_ZOOM = exports.DEFA
9
9
  require("./index.compiled.css");
10
10
  var _runtime = require("@compiled/react/runtime");
11
11
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
12
- var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
12
  var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
14
13
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
15
14
  var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
@@ -24,7 +23,6 @@ var _image = require("./image");
24
23
  var _margin = require("./margin");
25
24
  var _imageProcessor = require("./imageProcessor");
26
25
  var _constraints = require("./constraints");
27
- var _platformFeatureFlags = require("@atlaskit/platform-feature-flags");
28
26
  var _imagePlacerErrorWrapper = require("./imagePlacerErrorWrapper");
29
27
  var _util = require("../util");
30
28
  function _callSuper(t, o, e) { return o = (0, _getPrototypeOf2.default)(o), (0, _possibleConstructorReturn2.default)(t, _isNativeReflectConstruct() ? Reflect.construct(o, e || [], (0, _getPrototypeOf2.default)(t).constructor) : o.apply(t, e)); }
@@ -257,102 +255,14 @@ var ImagePlacer = exports.ImagePlacer = /*#__PURE__*/function (_React$Component)
257
255
  });
258
256
  }
259
257
  }
260
-
261
- /* respond to prop changes */
262
- }, {
263
- key: "UNSAFE_componentWillReceiveProps",
264
- value: (function () {
265
- var _UNSAFE_componentWillReceiveProps = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(nextProps) {
266
- var imageSourceRect, state, props, zoom, currentUseConstraints, currentContainerWidth, currentContainerHeight, currentMargin, currentSrc, nextZoom, nextUseConstraints, nextContainerWidth, nextContainerHeight, nextMargin, nextSrc, nextOnImageActions, isZoomChange, isUseConstraintsChange, isContainerWidthChange, isContainerHeightChange, isMarginChange, isImageAction, zoomReset, fileInfo;
267
- return _regenerator.default.wrap(function (_context) {
268
- while (1) switch (_context.prev = _context.next) {
269
- case 0:
270
- if (!(0, _platformFeatureFlags.fg)('platform_media_package_react19_lifecycle_fix')) {
271
- _context.next = 1;
272
- break;
273
- }
274
- return _context.abrupt("return");
275
- case 1:
276
- imageSourceRect = this.imageSourceRect, state = this.state, props = this.props;
277
- zoom = state.zoom;
278
- currentUseConstraints = props.useConstraints, currentContainerWidth = props.containerWidth, currentContainerHeight = props.containerHeight, currentMargin = props.margin, currentSrc = props.src;
279
- nextZoom = nextProps.zoom, nextUseConstraints = nextProps.useConstraints, nextContainerWidth = nextProps.containerWidth, nextContainerHeight = nextProps.containerHeight, nextMargin = nextProps.margin, nextSrc = nextProps.src, nextOnImageActions = nextProps.onImageActions;
280
- isZoomChange = nextZoom !== undefined && nextZoom !== zoom;
281
- isUseConstraintsChange = nextUseConstraints !== undefined && nextUseConstraints !== currentUseConstraints;
282
- isContainerWidthChange = nextContainerWidth !== undefined && nextContainerWidth !== currentContainerWidth;
283
- isContainerHeightChange = nextContainerHeight !== undefined && nextContainerHeight !== currentContainerHeight;
284
- isMarginChange = nextMargin !== undefined && nextMargin !== currentMargin;
285
- isImageAction = (0, _typeof2.default)(nextOnImageActions) !== undefined;
286
- zoomReset = {
287
- zoom: 0
288
- };
289
- if (isZoomChange) {
290
- this.setZoom(nextZoom);
291
- }
292
- if (isUseConstraintsChange) {
293
- this.setState({
294
- zoom: 0,
295
- imageWidth: imageSourceRect.width,
296
- imageHeight: imageSourceRect.height
297
- }, this.update);
298
- }
299
- if (isContainerWidthChange || isContainerHeightChange || isMarginChange) {
300
- this.setState(zoomReset, this.update);
301
- this.updateZoomProp();
302
- }
303
- if (!(nextSrc instanceof File && nextSrc !== currentSrc)) {
304
- _context.next = 3;
305
- break;
306
- }
307
- _context.next = 2;
308
- return (0, _mediaUi.getFileInfo)(nextSrc);
309
- case 2:
310
- fileInfo = _context.sent;
311
- case 3:
312
- if (!(typeof nextSrc === 'string' && nextSrc !== currentSrc)) {
313
- _context.next = 5;
314
- break;
315
- }
316
- _context.next = 4;
317
- return (0, _mediaUi.getFileInfoFromSrc)(nextSrc);
318
- case 4:
319
- fileInfo = _context.sent;
320
- case 5:
321
- if (!fileInfo) {
322
- _context.next = 6;
323
- break;
324
- }
325
- _context.next = 6;
326
- return this.preprocessFile(fileInfo);
327
- case 6:
328
- if (isImageAction) {
329
- this.provideImageActions();
330
- }
331
- case 7:
332
- case "end":
333
- return _context.stop();
334
- }
335
- }, _callee, this);
336
- }));
337
- function UNSAFE_componentWillReceiveProps(_x) {
338
- return _UNSAFE_componentWillReceiveProps.apply(this, arguments);
339
- }
340
- return UNSAFE_componentWillReceiveProps;
341
- }())
342
258
  }, {
343
259
  key: "componentDidUpdate",
344
260
  value: function () {
345
- var _componentDidUpdate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(prevProps) {
261
+ var _componentDidUpdate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(prevProps) {
346
262
  var imageSourceRect, props, nextZoom, nextUseConstraints, nextContainerWidth, nextContainerHeight, nextMargin, nextSrc, nextOnImageActions, prevZoom, prevUseConstraints, prevContainerWidth, prevContainerHeight, prevMargin, prevSrc, prevOnImageActions, isZoomChange, isUseConstraintsChange, isContainerWidthChange, isContainerHeightChange, isMarginChange, isImageActionChange, zoomReset, fileInfo;
347
- return _regenerator.default.wrap(function (_context2) {
348
- while (1) switch (_context2.prev = _context2.next) {
263
+ return _regenerator.default.wrap(function (_context) {
264
+ while (1) switch (_context.prev = _context.next) {
349
265
  case 0:
350
- if ((0, _platformFeatureFlags.fg)('platform_media_package_react19_lifecycle_fix')) {
351
- _context2.next = 1;
352
- break;
353
- }
354
- return _context2.abrupt("return");
355
- case 1:
356
266
  imageSourceRect = this.imageSourceRect, props = this.props;
357
267
  nextZoom = props.zoom, nextUseConstraints = props.useConstraints, nextContainerWidth = props.containerWidth, nextContainerHeight = props.containerHeight, nextMargin = props.margin, nextSrc = props.src, nextOnImageActions = props.onImageActions;
358
268
  prevZoom = prevProps.zoom, prevUseConstraints = prevProps.useConstraints, prevContainerWidth = prevProps.containerWidth, prevContainerHeight = prevProps.containerHeight, prevMargin = prevProps.margin, prevSrc = prevProps.src, prevOnImageActions = prevProps.onImageActions;
@@ -380,44 +290,44 @@ var ImagePlacer = exports.ImagePlacer = /*#__PURE__*/function (_React$Component)
380
290
  this.updateZoomProp();
381
291
  }
382
292
  if (!(nextSrc !== prevSrc)) {
383
- _context2.next = 6;
293
+ _context.next = 5;
384
294
  break;
385
295
  }
386
296
  if (!(nextSrc instanceof File)) {
387
- _context2.next = 3;
297
+ _context.next = 2;
388
298
  break;
389
299
  }
390
- _context2.next = 2;
300
+ _context.next = 1;
391
301
  return (0, _mediaUi.getFileInfo)(nextSrc);
302
+ case 1:
303
+ fileInfo = _context.sent;
392
304
  case 2:
393
- fileInfo = _context2.sent;
394
- case 3:
395
305
  if (!(typeof nextSrc === 'string')) {
396
- _context2.next = 5;
306
+ _context.next = 4;
397
307
  break;
398
308
  }
399
- _context2.next = 4;
309
+ _context.next = 3;
400
310
  return (0, _mediaUi.getFileInfoFromSrc)(nextSrc);
311
+ case 3:
312
+ fileInfo = _context.sent;
401
313
  case 4:
402
- fileInfo = _context2.sent;
403
- case 5:
404
314
  if (!fileInfo) {
405
- _context2.next = 6;
315
+ _context.next = 5;
406
316
  break;
407
317
  }
408
- _context2.next = 6;
318
+ _context.next = 5;
409
319
  return this.preprocessFile(fileInfo);
410
- case 6:
320
+ case 5:
411
321
  if (isImageActionChange) {
412
322
  this.provideImageActions();
413
323
  }
414
- case 7:
324
+ case 6:
415
325
  case "end":
416
- return _context2.stop();
326
+ return _context.stop();
417
327
  }
418
- }, _callee2, this);
328
+ }, _callee, this);
419
329
  }));
420
- function componentDidUpdate(_x2) {
330
+ function componentDidUpdate(_x) {
421
331
  return _componentDidUpdate.apply(this, arguments);
422
332
  }
423
333
  return componentDidUpdate;
@@ -425,16 +335,16 @@ var ImagePlacer = exports.ImagePlacer = /*#__PURE__*/function (_React$Component)
425
335
  }, {
426
336
  key: "preprocessFile",
427
337
  value: function () {
428
- var _preprocessFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(fileInfo) {
338
+ var _preprocessFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(fileInfo) {
429
339
  var maxZoom, previewInfo, width, height;
430
- return _regenerator.default.wrap(function (_context3) {
431
- while (1) switch (_context3.prev = _context3.next) {
340
+ return _regenerator.default.wrap(function (_context2) {
341
+ while (1) switch (_context2.prev = _context2.next) {
432
342
  case 0:
433
343
  maxZoom = this.props.maxZoom;
434
- _context3.next = 1;
344
+ _context2.next = 1;
435
345
  return (0, _imageProcessor.initialiseImagePreview)(fileInfo, this.containerRect, maxZoom);
436
346
  case 1:
437
- previewInfo = _context3.sent;
347
+ previewInfo = _context2.sent;
438
348
  if (previewInfo) {
439
349
  width = previewInfo.width, height = previewInfo.height;
440
350
  this.imageSourceRect = new _mediaUi.Rectangle(width, height);
@@ -447,11 +357,11 @@ var ImagePlacer = exports.ImagePlacer = /*#__PURE__*/function (_React$Component)
447
357
  }
448
358
  case 2:
449
359
  case "end":
450
- return _context3.stop();
360
+ return _context2.stop();
451
361
  }
452
- }, _callee3, this);
362
+ }, _callee2, this);
453
363
  }));
454
- function preprocessFile(_x3) {
364
+ function preprocessFile(_x2) {
455
365
  return _preprocessFile.apply(this, arguments);
456
366
  }
457
367
  return preprocessFile;
@@ -9,7 +9,6 @@ import { ImagePlacerImage } from './image';
9
9
  import { Margin } from './margin';
10
10
  import { initialiseImagePreview, renderImageAtCurrentView } from './imageProcessor';
11
11
  import { zoomToFit, applyConstraints, transformVisibleBoundsToImageCoords } from './constraints';
12
- import { fg } from '@atlaskit/platform-feature-flags';
13
12
  import { ImagePlacerErrorWrapper } from './imagePlacerErrorWrapper';
14
13
  import { isSSR } from '../util';
15
14
 
@@ -245,77 +244,7 @@ export class ImagePlacer extends React.Component {
245
244
  });
246
245
  }
247
246
  }
248
-
249
- /* respond to prop changes */
250
- async UNSAFE_componentWillReceiveProps(nextProps) {
251
- if (fg('platform_media_package_react19_lifecycle_fix')) {
252
- return;
253
- }
254
- const {
255
- imageSourceRect,
256
- state,
257
- props
258
- } = this;
259
- const {
260
- zoom
261
- } = state;
262
- const {
263
- useConstraints: currentUseConstraints,
264
- containerWidth: currentContainerWidth,
265
- containerHeight: currentContainerHeight,
266
- margin: currentMargin,
267
- src: currentSrc
268
- } = props;
269
- const {
270
- zoom: nextZoom,
271
- useConstraints: nextUseConstraints,
272
- containerWidth: nextContainerWidth,
273
- containerHeight: nextContainerHeight,
274
- margin: nextMargin,
275
- src: nextSrc,
276
- onImageActions: nextOnImageActions
277
- } = nextProps;
278
- const isZoomChange = nextZoom !== undefined && nextZoom !== zoom;
279
- const isUseConstraintsChange = nextUseConstraints !== undefined && nextUseConstraints !== currentUseConstraints;
280
- const isContainerWidthChange = nextContainerWidth !== undefined && nextContainerWidth !== currentContainerWidth;
281
- const isContainerHeightChange = nextContainerHeight !== undefined && nextContainerHeight !== currentContainerHeight;
282
- const isMarginChange = nextMargin !== undefined && nextMargin !== currentMargin;
283
- const isImageAction = typeof nextOnImageActions !== undefined;
284
- const zoomReset = {
285
- zoom: 0
286
- };
287
- if (isZoomChange) {
288
- this.setZoom(nextZoom);
289
- }
290
- if (isUseConstraintsChange) {
291
- this.setState({
292
- zoom: 0,
293
- imageWidth: imageSourceRect.width,
294
- imageHeight: imageSourceRect.height
295
- }, this.update);
296
- }
297
- if (isContainerWidthChange || isContainerHeightChange || isMarginChange) {
298
- this.setState(zoomReset, this.update);
299
- this.updateZoomProp();
300
- }
301
- let fileInfo;
302
- if (nextSrc instanceof File && nextSrc !== currentSrc) {
303
- fileInfo = await getFileInfo(nextSrc);
304
- }
305
- if (typeof nextSrc === 'string' && nextSrc !== currentSrc) {
306
- fileInfo = await getFileInfoFromSrc(nextSrc);
307
- }
308
- if (fileInfo) {
309
- await this.preprocessFile(fileInfo);
310
- }
311
- if (isImageAction) {
312
- this.provideImageActions();
313
- }
314
- }
315
247
  async componentDidUpdate(prevProps) {
316
- if (!fg('platform_media_package_react19_lifecycle_fix')) {
317
- return;
318
- }
319
248
  const {
320
249
  imageSourceRect,
321
250
  props
@@ -1,5 +1,4 @@
1
1
  /* index.tsx generated by @compiled/babel-plugin v0.39.1 */
2
- import _typeof from "@babel/runtime/helpers/typeof";
3
2
  import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
4
3
  import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
5
4
  import _createClass from "@babel/runtime/helpers/createClass";
@@ -19,7 +18,6 @@ import { ImagePlacerImage } from './image';
19
18
  import { Margin } from './margin';
20
19
  import { initialiseImagePreview, renderImageAtCurrentView } from './imageProcessor';
21
20
  import { zoomToFit as _zoomToFit, applyConstraints as _applyConstraints, transformVisibleBoundsToImageCoords as _transformVisibleBoundsToImageCoords } from './constraints';
22
- import { fg } from '@atlaskit/platform-feature-flags';
23
21
  import { ImagePlacerErrorWrapper } from './imagePlacerErrorWrapper';
24
22
  import { isSSR } from '../util';
25
23
 
@@ -251,102 +249,14 @@ export var ImagePlacer = /*#__PURE__*/function (_React$Component) {
251
249
  });
252
250
  }
253
251
  }
254
-
255
- /* respond to prop changes */
256
- }, {
257
- key: "UNSAFE_componentWillReceiveProps",
258
- value: (function () {
259
- var _UNSAFE_componentWillReceiveProps = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(nextProps) {
260
- var imageSourceRect, state, props, zoom, currentUseConstraints, currentContainerWidth, currentContainerHeight, currentMargin, currentSrc, nextZoom, nextUseConstraints, nextContainerWidth, nextContainerHeight, nextMargin, nextSrc, nextOnImageActions, isZoomChange, isUseConstraintsChange, isContainerWidthChange, isContainerHeightChange, isMarginChange, isImageAction, zoomReset, fileInfo;
261
- return _regeneratorRuntime.wrap(function (_context) {
262
- while (1) switch (_context.prev = _context.next) {
263
- case 0:
264
- if (!fg('platform_media_package_react19_lifecycle_fix')) {
265
- _context.next = 1;
266
- break;
267
- }
268
- return _context.abrupt("return");
269
- case 1:
270
- imageSourceRect = this.imageSourceRect, state = this.state, props = this.props;
271
- zoom = state.zoom;
272
- currentUseConstraints = props.useConstraints, currentContainerWidth = props.containerWidth, currentContainerHeight = props.containerHeight, currentMargin = props.margin, currentSrc = props.src;
273
- nextZoom = nextProps.zoom, nextUseConstraints = nextProps.useConstraints, nextContainerWidth = nextProps.containerWidth, nextContainerHeight = nextProps.containerHeight, nextMargin = nextProps.margin, nextSrc = nextProps.src, nextOnImageActions = nextProps.onImageActions;
274
- isZoomChange = nextZoom !== undefined && nextZoom !== zoom;
275
- isUseConstraintsChange = nextUseConstraints !== undefined && nextUseConstraints !== currentUseConstraints;
276
- isContainerWidthChange = nextContainerWidth !== undefined && nextContainerWidth !== currentContainerWidth;
277
- isContainerHeightChange = nextContainerHeight !== undefined && nextContainerHeight !== currentContainerHeight;
278
- isMarginChange = nextMargin !== undefined && nextMargin !== currentMargin;
279
- isImageAction = _typeof(nextOnImageActions) !== undefined;
280
- zoomReset = {
281
- zoom: 0
282
- };
283
- if (isZoomChange) {
284
- this.setZoom(nextZoom);
285
- }
286
- if (isUseConstraintsChange) {
287
- this.setState({
288
- zoom: 0,
289
- imageWidth: imageSourceRect.width,
290
- imageHeight: imageSourceRect.height
291
- }, this.update);
292
- }
293
- if (isContainerWidthChange || isContainerHeightChange || isMarginChange) {
294
- this.setState(zoomReset, this.update);
295
- this.updateZoomProp();
296
- }
297
- if (!(nextSrc instanceof File && nextSrc !== currentSrc)) {
298
- _context.next = 3;
299
- break;
300
- }
301
- _context.next = 2;
302
- return getFileInfo(nextSrc);
303
- case 2:
304
- fileInfo = _context.sent;
305
- case 3:
306
- if (!(typeof nextSrc === 'string' && nextSrc !== currentSrc)) {
307
- _context.next = 5;
308
- break;
309
- }
310
- _context.next = 4;
311
- return getFileInfoFromSrc(nextSrc);
312
- case 4:
313
- fileInfo = _context.sent;
314
- case 5:
315
- if (!fileInfo) {
316
- _context.next = 6;
317
- break;
318
- }
319
- _context.next = 6;
320
- return this.preprocessFile(fileInfo);
321
- case 6:
322
- if (isImageAction) {
323
- this.provideImageActions();
324
- }
325
- case 7:
326
- case "end":
327
- return _context.stop();
328
- }
329
- }, _callee, this);
330
- }));
331
- function UNSAFE_componentWillReceiveProps(_x) {
332
- return _UNSAFE_componentWillReceiveProps.apply(this, arguments);
333
- }
334
- return UNSAFE_componentWillReceiveProps;
335
- }())
336
252
  }, {
337
253
  key: "componentDidUpdate",
338
254
  value: function () {
339
- var _componentDidUpdate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(prevProps) {
255
+ var _componentDidUpdate = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(prevProps) {
340
256
  var imageSourceRect, props, nextZoom, nextUseConstraints, nextContainerWidth, nextContainerHeight, nextMargin, nextSrc, nextOnImageActions, prevZoom, prevUseConstraints, prevContainerWidth, prevContainerHeight, prevMargin, prevSrc, prevOnImageActions, isZoomChange, isUseConstraintsChange, isContainerWidthChange, isContainerHeightChange, isMarginChange, isImageActionChange, zoomReset, fileInfo;
341
- return _regeneratorRuntime.wrap(function (_context2) {
342
- while (1) switch (_context2.prev = _context2.next) {
257
+ return _regeneratorRuntime.wrap(function (_context) {
258
+ while (1) switch (_context.prev = _context.next) {
343
259
  case 0:
344
- if (fg('platform_media_package_react19_lifecycle_fix')) {
345
- _context2.next = 1;
346
- break;
347
- }
348
- return _context2.abrupt("return");
349
- case 1:
350
260
  imageSourceRect = this.imageSourceRect, props = this.props;
351
261
  nextZoom = props.zoom, nextUseConstraints = props.useConstraints, nextContainerWidth = props.containerWidth, nextContainerHeight = props.containerHeight, nextMargin = props.margin, nextSrc = props.src, nextOnImageActions = props.onImageActions;
352
262
  prevZoom = prevProps.zoom, prevUseConstraints = prevProps.useConstraints, prevContainerWidth = prevProps.containerWidth, prevContainerHeight = prevProps.containerHeight, prevMargin = prevProps.margin, prevSrc = prevProps.src, prevOnImageActions = prevProps.onImageActions;
@@ -374,44 +284,44 @@ export var ImagePlacer = /*#__PURE__*/function (_React$Component) {
374
284
  this.updateZoomProp();
375
285
  }
376
286
  if (!(nextSrc !== prevSrc)) {
377
- _context2.next = 6;
287
+ _context.next = 5;
378
288
  break;
379
289
  }
380
290
  if (!(nextSrc instanceof File)) {
381
- _context2.next = 3;
291
+ _context.next = 2;
382
292
  break;
383
293
  }
384
- _context2.next = 2;
294
+ _context.next = 1;
385
295
  return getFileInfo(nextSrc);
296
+ case 1:
297
+ fileInfo = _context.sent;
386
298
  case 2:
387
- fileInfo = _context2.sent;
388
- case 3:
389
299
  if (!(typeof nextSrc === 'string')) {
390
- _context2.next = 5;
300
+ _context.next = 4;
391
301
  break;
392
302
  }
393
- _context2.next = 4;
303
+ _context.next = 3;
394
304
  return getFileInfoFromSrc(nextSrc);
305
+ case 3:
306
+ fileInfo = _context.sent;
395
307
  case 4:
396
- fileInfo = _context2.sent;
397
- case 5:
398
308
  if (!fileInfo) {
399
- _context2.next = 6;
309
+ _context.next = 5;
400
310
  break;
401
311
  }
402
- _context2.next = 6;
312
+ _context.next = 5;
403
313
  return this.preprocessFile(fileInfo);
404
- case 6:
314
+ case 5:
405
315
  if (isImageActionChange) {
406
316
  this.provideImageActions();
407
317
  }
408
- case 7:
318
+ case 6:
409
319
  case "end":
410
- return _context2.stop();
320
+ return _context.stop();
411
321
  }
412
- }, _callee2, this);
322
+ }, _callee, this);
413
323
  }));
414
- function componentDidUpdate(_x2) {
324
+ function componentDidUpdate(_x) {
415
325
  return _componentDidUpdate.apply(this, arguments);
416
326
  }
417
327
  return componentDidUpdate;
@@ -419,16 +329,16 @@ export var ImagePlacer = /*#__PURE__*/function (_React$Component) {
419
329
  }, {
420
330
  key: "preprocessFile",
421
331
  value: function () {
422
- var _preprocessFile = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee3(fileInfo) {
332
+ var _preprocessFile = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(fileInfo) {
423
333
  var maxZoom, previewInfo, width, height;
424
- return _regeneratorRuntime.wrap(function (_context3) {
425
- while (1) switch (_context3.prev = _context3.next) {
334
+ return _regeneratorRuntime.wrap(function (_context2) {
335
+ while (1) switch (_context2.prev = _context2.next) {
426
336
  case 0:
427
337
  maxZoom = this.props.maxZoom;
428
- _context3.next = 1;
338
+ _context2.next = 1;
429
339
  return initialiseImagePreview(fileInfo, this.containerRect, maxZoom);
430
340
  case 1:
431
- previewInfo = _context3.sent;
341
+ previewInfo = _context2.sent;
432
342
  if (previewInfo) {
433
343
  width = previewInfo.width, height = previewInfo.height;
434
344
  this.imageSourceRect = new Rectangle(width, height);
@@ -441,11 +351,11 @@ export var ImagePlacer = /*#__PURE__*/function (_React$Component) {
441
351
  }
442
352
  case 2:
443
353
  case "end":
444
- return _context3.stop();
354
+ return _context2.stop();
445
355
  }
446
- }, _callee3, this);
356
+ }, _callee2, this);
447
357
  }));
448
- function preprocessFile(_x3) {
358
+ function preprocessFile(_x2) {
449
359
  return _preprocessFile.apply(this, arguments);
450
360
  }
451
361
  return preprocessFile;
@@ -81,7 +81,6 @@ export declare class ImagePlacer extends React.Component<ImagePlacerProps, Image
81
81
  get sourceBounds(): Bounds;
82
82
  constructor(props: ImagePlacerProps);
83
83
  private provideImageActions;
84
- UNSAFE_componentWillReceiveProps(nextProps: ImagePlacerProps): Promise<void>;
85
84
  componentDidUpdate(prevProps: ImagePlacerProps): Promise<void>;
86
85
  preprocessFile(fileInfo: FileInfo): Promise<void>;
87
86
  setSrc(fileInfo: FileInfo): void;
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Structured MCP docs for `@atlaskit/media-avatar-picker`.
3
+ */
4
+
5
+ import path from 'path';
6
+
7
+ import type { StructuredContentSource } from '@atlassian/structured-docs-types/types';
8
+
9
+ import packageJson from './package.json';
10
+
11
+ const packagePath = path.resolve(__dirname);
12
+
13
+ const documentation: StructuredContentSource = {
14
+ package: {
15
+ package: '@atlaskit/media-avatar-picker',
16
+ packagePath,
17
+ packageJson,
18
+ overview:
19
+ 'A component to select, drag and resize image avatars. It also provides a default list of predefined avatars.',
20
+ },
21
+ components: [
22
+ {
23
+ name: 'AvatarPickerDialog',
24
+ description: 'Main dialog component that orchestrates the avatar selection experience.',
25
+ status: 'general-availability',
26
+ import: {
27
+ name: 'AvatarPickerDialog',
28
+ package: '@atlaskit/media-avatar-picker',
29
+ type: 'named',
30
+ packagePath,
31
+ packageJson,
32
+ },
33
+ usageGuidelines: [
34
+ 'Use `AvatarPickerDialog` when you need to allow users to upload or select an avatar.',
35
+ ],
36
+ keywords: ['media', 'avatar', 'picker', 'upload'],
37
+ categories: ['media'],
38
+ examples: [
39
+ {
40
+ name: 'Avatar picker with source',
41
+ description: 'Basic usage of AvatarPickerDialog with an initial image source.',
42
+ source: path.resolve(packagePath, './examples/0-avatar-picker-with-source.tsx'),
43
+ },
44
+ ],
45
+ },
46
+ {
47
+ name: 'ImageCropper',
48
+ description: 'Interactive component for cropping uploaded images.',
49
+ status: 'general-availability',
50
+ import: {
51
+ name: 'ImageCropper',
52
+ package: '@atlaskit/media-avatar-picker/image-cropper',
53
+ type: 'named',
54
+ packagePath,
55
+ packageJson,
56
+ },
57
+ usageGuidelines: ['Use `ImageCropper` for standalone image cropping functionality.'],
58
+ keywords: ['media', 'crop', 'image'],
59
+ categories: ['media'],
60
+ examples: [
61
+ {
62
+ name: 'Image cropper',
63
+ description: 'Basic usage of ImageCropper.',
64
+ source: path.resolve(packagePath, './examples/1-image-cropper.tsx'),
65
+ },
66
+ ],
67
+ },
68
+ ],
69
+ };
70
+
71
+ export default documentation;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/media-avatar-picker",
3
- "version": "28.0.1",
3
+ "version": "28.1.1",
4
4
  "description": "A component to select, drag and resize image avatars. It also provides a default list of predefined avatars.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/"
@@ -20,7 +20,7 @@
20
20
  "react-compiler": {
21
21
  "enabled": true,
22
22
  "gating": {
23
- "source": "@atlassian/react-compiler-gating",
23
+ "source": "@atlaskit/react-compiler-gating",
24
24
  "importSpecifierName": "isReactCompilerActivePlatform"
25
25
  }
26
26
  },
@@ -30,21 +30,21 @@
30
30
  }
31
31
  },
32
32
  "dependencies": {
33
- "@atlaskit/button": "^24.1.0",
33
+ "@atlaskit/button": "^24.3.0",
34
34
  "@atlaskit/css": "^1.0.0",
35
- "@atlaskit/flag": "^18.0.0",
36
- "@atlaskit/form": "^16.0.0",
37
- "@atlaskit/icon": "^36.0.0",
38
- "@atlaskit/media-ui": "^30.3.0",
39
- "@atlaskit/modal-dialog": "^16.0.0",
35
+ "@atlaskit/flag": "^18.1.0",
36
+ "@atlaskit/form": "^16.1.0",
37
+ "@atlaskit/icon": "^36.2.0",
38
+ "@atlaskit/media-ui": "^30.6.0",
39
+ "@atlaskit/modal-dialog": "^16.1.0",
40
40
  "@atlaskit/platform-feature-flags": "^2.0.0",
41
- "@atlaskit/primitives": "^20.0.0",
42
- "@atlaskit/range": "^11.0.0",
43
- "@atlaskit/spinner": "^20.0.0",
44
- "@atlaskit/textfield": "^9.0.0",
45
- "@atlaskit/tokens": "^15.0.0",
46
- "@atlaskit/visually-hidden": "^4.0.0",
47
- "@atlassian/react-compiler-gating": "^0.2.0",
41
+ "@atlaskit/primitives": "^20.5.0",
42
+ "@atlaskit/range": "^11.1.0",
43
+ "@atlaskit/react-compiler-gating": "^0.2.0",
44
+ "@atlaskit/spinner": "^20.1.0",
45
+ "@atlaskit/textfield": "^9.1.0",
46
+ "@atlaskit/tokens": "^15.5.0",
47
+ "@atlaskit/visually-hidden": "^4.1.0",
48
48
  "@babel/runtime": "^7.0.0",
49
49
  "@compiled/react": "^0.20.0",
50
50
  "exenv": "^1.2.2",
@@ -57,9 +57,9 @@
57
57
  },
58
58
  "devDependencies": {
59
59
  "@atlaskit/media-core": "^38.0.0",
60
- "@atlaskit/media-test-helpers": "^42.0.0",
61
- "@atlassian/a11y-jest-testing": "^0.12.0",
62
- "@atlassian/testing-library": "^0.6.0",
60
+ "@atlaskit/media-test-helpers": "^42.2.0",
61
+ "@atlassian/a11y-jest-testing": "^0.13.0",
62
+ "@atlassian/testing-library": "^0.11.0",
63
63
  "@testing-library/react": "^16.3.0",
64
64
  "@testing-library/user-event": "^14.4.3",
65
65
  "@types/exenv": "^1.2.0",
@@ -67,11 +67,6 @@
67
67
  "react-dom": "^18.2.0",
68
68
  "react-intl": "^7.0.0"
69
69
  },
70
- "platform-feature-flags": {
71
- "platform_media_package_react19_lifecycle_fix": {
72
- "type": "boolean"
73
- }
74
- },
75
70
  "techstack": {
76
71
  "@repo/internal": {
77
72
  "design-tokens": [