@atlaskit/media-avatar-picker 22.3.0 → 23.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.
Files changed (43) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/cjs/avatar-picker-dialog/avatar-picker-dialog-loader.js +2 -2
  3. package/dist/cjs/avatar-picker-dialog/index.js +16 -12
  4. package/dist/cjs/avatar-picker-dialog/layout-const.js +1 -1
  5. package/dist/cjs/avatar-picker-dialog/styled.js +1 -1
  6. package/dist/cjs/image-cropper/index.js +2 -2
  7. package/dist/cjs/image-cropper/styled.js +1 -1
  8. package/dist/cjs/image-navigator/images.js +1 -1
  9. package/dist/cjs/image-navigator/index.js +7 -7
  10. package/dist/cjs/image-navigator/slider.js +1 -1
  11. package/dist/cjs/image-navigator/styled.js +1 -1
  12. package/dist/cjs/image-placer/constraints.js +1 -1
  13. package/dist/cjs/image-placer/imageProcessor.js +1 -1
  14. package/dist/cjs/image-placer/index.js +1 -1
  15. package/dist/cjs/image-placer/styled.js +1 -1
  16. package/dist/cjs/predefined-avatar-list/index.js +2 -2
  17. package/dist/cjs/predefined-avatar-view/index.js +2 -2
  18. package/dist/cjs/predefined-avatar-view/styled.js +1 -1
  19. package/dist/cjs/version.json +1 -1
  20. package/dist/cjs/viewport/viewport-render.js +8 -5
  21. package/dist/cjs/viewport/viewport.js +1 -1
  22. package/dist/es2019/avatar-picker-dialog/avatar-picker-dialog-loader.js +2 -2
  23. package/dist/es2019/avatar-picker-dialog/index.js +8 -7
  24. package/dist/es2019/image-cropper/index.js +1 -1
  25. package/dist/es2019/image-navigator/index.js +3 -3
  26. package/dist/es2019/predefined-avatar-view/index.js +1 -1
  27. package/dist/es2019/version.json +1 -1
  28. package/dist/es2019/viewport/viewport-render.js +8 -6
  29. package/dist/esm/avatar-picker-dialog/avatar-picker-dialog-loader.js +2 -2
  30. package/dist/esm/avatar-picker-dialog/index.js +8 -7
  31. package/dist/esm/image-cropper/index.js +1 -1
  32. package/dist/esm/image-navigator/index.js +3 -3
  33. package/dist/esm/predefined-avatar-list/index.js +2 -2
  34. package/dist/esm/predefined-avatar-view/index.js +1 -1
  35. package/dist/esm/version.json +1 -1
  36. package/dist/esm/viewport/viewport-render.js +8 -5
  37. package/dist/types/avatar-picker-dialog/avatar-picker-dialog-loader.d.ts +2 -2
  38. package/dist/types/avatar-picker-dialog/index.d.ts +10 -9
  39. package/dist/types/avatar-picker-dialog/types.d.ts +2 -0
  40. package/dist/types/image-cropper/index.d.ts +3 -5
  41. package/dist/types/image-navigator/index.d.ts +5 -7
  42. package/dist/types/viewport/viewport-render.d.ts +1 -1
  43. package/package.json +11 -12
package/CHANGELOG.md CHANGED
@@ -1,5 +1,67 @@
1
1
  # @atlaskit/media-avatar-picker
2
2
 
3
+ ## 23.1.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies
8
+
9
+ ## 23.1.0
10
+
11
+ ### Minor Changes
12
+
13
+ - [`6c6bd435635`](https://bitbucket.org/atlassian/atlassian-frontend/commits/6c6bd435635) - TC-2422: add the ability for avatars to have different output sizes
14
+
15
+ ### Patch Changes
16
+
17
+ - Updated dependencies
18
+
19
+ ## 23.0.0
20
+
21
+ ### Major Changes
22
+
23
+ - [`47f58da5946`](https://bitbucket.org/atlassian/atlassian-frontend/commits/47f58da5946) - ED-13322, ED-13324, ED-13326, ED-13323, ED-13204: Upgrade and support react-intl@^5.18.1 including breaking API changes, types and tests in atlassian-frontend packages
24
+
25
+ What changed: Upgraded our react-intl support from ^2.6.0 to ^5.18.1. This means editor packages now rely on consumers installing ^5.18.1, otherwise editor usage of react-intl will mismatch with actual installed react-intl APIs.
26
+ Why change was made: As part of a coordinated upgrade effort across AF packages, as react-intl v2 is quite dated.
27
+ How consumer should update their code: Ensure react-intl ^5.18.1 is installed in consuming applications.
28
+
29
+ Upgrade guide: To consume atlassian-frontend packages that use react-intl5 setup a second provider for the new version, using an npm alias
30
+
31
+ ```js
32
+ "react-intl": "^2.6.0",
33
+ "react-intl-next": "npm:react-intl@^5.18.1",
34
+ ```
35
+
36
+ ```js
37
+ import { IntlProvider } from 'react-intl';
38
+ import { IntlProvider as IntlNextProvider } from 'react-intl-next';
39
+
40
+ return (
41
+ <IntlProvider
42
+ key={locale}
43
+ data-test-language={locale}
44
+ locale={locale}
45
+ defaultLocale={DEFAULT_LOCALE}
46
+ messages={messages}
47
+ >
48
+ <IntlNextProvider
49
+ key={locale}
50
+ data-test-language={locale}
51
+ locale={locale}
52
+ defaultLocale={DEFAULT_LOCALE}
53
+ messages={messages}
54
+ >
55
+ {children}
56
+ </IntlNextProvider>
57
+ </IntlProvider>
58
+ );
59
+ ```
60
+
61
+ ### Patch Changes
62
+
63
+ - Updated dependencies
64
+
3
65
  ## 22.3.0
4
66
 
5
67
  ### Minor Changes
@@ -83,9 +83,9 @@ var AsyncAvatarPickerDialog = /*#__PURE__*/function (_React$PureComponent) {
83
83
 
84
84
  case 4:
85
85
  module = _context.sent;
86
- AsyncAvatarPickerDialog.AvatarPickerDialog = module.AvatarPickerDialog;
86
+ AsyncAvatarPickerDialog.AvatarPickerDialog = module.default;
87
87
  this.setState({
88
- AvatarPickerDialog: module.AvatarPickerDialog
88
+ AvatarPickerDialog: module.default
89
89
  });
90
90
  _context.next = 11;
91
91
  break;
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.AvatarPickerDialog = exports.fixedCrop = exports.ACCEPT = exports.ERROR = exports.MAX_SIZE_MB = void 0;
10
+ exports.fixedCrop = exports.default = exports.MAX_SIZE_MB = exports.ERROR = exports.AvatarPickerDialog = exports.ACCEPT = void 0;
11
11
 
12
12
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
13
 
@@ -33,7 +33,7 @@ var _modalDialog = _interopRequireWildcard(require("@atlaskit/modal-dialog"));
33
33
 
34
34
  var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
35
35
 
36
- var _reactIntl = require("react-intl");
36
+ var _reactIntlNext = require("react-intl-next");
37
37
 
38
38
  var _mediaUi = require("@atlaskit/media-ui");
39
39
 
@@ -146,20 +146,21 @@ var AvatarPickerDialog = /*#__PURE__*/function (_PureComponent) {
146
146
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onImageNavigatorLoad", function (loadParams) {
147
147
  _this.exportCroppedImage = loadParams.export;
148
148
  });
149
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "exportCroppedImage", function () {
149
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "exportCroppedImage", function (outputSize) {
150
150
  return '';
151
151
  });
152
152
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "onSaveClick", function () {
153
153
  var _this$props = _this.props,
154
154
  onImagePicked = _this$props.onImagePicked,
155
155
  onImagePickedDataURI = _this$props.onImagePickedDataURI,
156
- onAvatarPicked = _this$props.onAvatarPicked;
156
+ onAvatarPicked = _this$props.onAvatarPicked,
157
+ outputSize = _this$props.outputSize;
157
158
  var _this$state = _this.state,
158
159
  selectedImage = _this$state.selectedImage,
159
160
  selectedAvatar = _this$state.selectedAvatar;
160
161
 
161
162
  if (selectedImage) {
162
- var exportedCroppedImageURI = _this.exportCroppedImage();
163
+ var exportedCroppedImageURI = _this.exportCroppedImage(outputSize);
163
164
 
164
165
  if (onImagePicked) {
165
166
  onImagePicked((0, _mediaUi.dataURItoFile)(exportedCroppedImageURI), fixedCrop);
@@ -209,7 +210,7 @@ var AvatarPickerDialog = /*#__PURE__*/function (_PureComponent) {
209
210
  var title = _this.props.title;
210
211
  return /*#__PURE__*/_react.default.createElement(_styled.ModalHeader, {
211
212
  "data-test-id": "modal-header"
212
- }, title || /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _mediaUi.messages.upload_an_avatar));
213
+ }, title || /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.upload_an_avatar));
213
214
  });
214
215
  (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "footerContent", function () {
215
216
  var _this$props2 = _this.props,
@@ -224,10 +225,10 @@ var AvatarPickerDialog = /*#__PURE__*/function (_PureComponent) {
224
225
  appearance: "primary",
225
226
  onClick: onSaveClick,
226
227
  isDisabled: isDisabled
227
- }, primaryButtonText || /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _mediaUi.messages.save)), /*#__PURE__*/_react.default.createElement(_customThemeButton.default, {
228
+ }, primaryButtonText || /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.save)), /*#__PURE__*/_react.default.createElement(_customThemeButton.default, {
228
229
  appearance: "default",
229
230
  onClick: onCancel
230
- }, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _mediaUi.messages.cancel))));
231
+ }, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.cancel))));
231
232
  });
232
233
  return _this;
233
234
  }
@@ -242,7 +243,7 @@ var AvatarPickerDialog = /*#__PURE__*/function (_PureComponent) {
242
243
  onClose: this.props.onCancel
243
244
  }, this.headerContent(), /*#__PURE__*/_react.default.createElement(_modalDialog.ModalBody, null, /*#__PURE__*/_react.default.createElement(_styled.AvatarPickerViewWrapper, null, this.renderBody())), this.footerContent());
244
245
 
245
- return this.context.intl ? content : /*#__PURE__*/_react.default.createElement(_reactIntl.IntlProvider, {
246
+ return this.props.intl ? content : /*#__PURE__*/_react.default.createElement(_reactIntlNext.IntlProvider, {
246
247
  locale: "en"
247
248
  }, content);
248
249
  }
@@ -335,6 +336,9 @@ exports.AvatarPickerDialog = AvatarPickerDialog;
335
336
  (0, _defineProperty2.default)(AvatarPickerDialog, "defaultProps", {
336
337
  avatars: []
337
338
  });
338
- (0, _defineProperty2.default)(AvatarPickerDialog, "contextTypes", {
339
- intl: _reactIntl.intlShape
340
- });
339
+
340
+ var _default = (0, _reactIntlNext.injectIntl)(AvatarPickerDialog, {
341
+ enforceContext: false
342
+ });
343
+
344
+ exports.default = _default;
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.CONTAINER_RECT = exports.CONTAINER_PADDING = exports.CONTAINER_INNER_SIZE = exports.CONTAINER_SIZE = exports.PREDEFINED_AVATARS_VIEW_HEIGHT = exports.PREDEFINED_AVATARS_VIEW_WIDTH = exports.AVATAR_DIALOG_HEIGHT = exports.AVATAR_DIALOG_WIDTH = exports.DEFAULT_VISIBLE_PREDEFINED_AVATARS = void 0;
6
+ exports.PREDEFINED_AVATARS_VIEW_WIDTH = exports.PREDEFINED_AVATARS_VIEW_HEIGHT = exports.DEFAULT_VISIBLE_PREDEFINED_AVATARS = exports.CONTAINER_SIZE = exports.CONTAINER_RECT = exports.CONTAINER_PADDING = exports.CONTAINER_INNER_SIZE = exports.AVATAR_DIALOG_WIDTH = exports.AVATAR_DIALOG_HEIGHT = void 0;
7
7
 
8
8
  var _constants = require("@atlaskit/theme/constants");
9
9
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.ModalFooterButtons = exports.CroppingWrapper = exports.ModalHeader = exports.AvatarPickerViewWrapper = void 0;
8
+ exports.ModalHeader = exports.ModalFooterButtons = exports.CroppingWrapper = exports.AvatarPickerViewWrapper = void 0;
9
9
 
10
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
11
 
@@ -27,7 +27,7 @@ var _react = _interopRequireWildcard(require("react"));
27
27
 
28
28
  var _cross = _interopRequireDefault(require("@atlaskit/icon/glyph/cross"));
29
29
 
30
- var _reactIntl = require("react-intl");
30
+ var _reactIntlNext = require("react-intl-next");
31
31
 
32
32
  var _mediaUi = require("@atlaskit/media-ui");
33
33
 
@@ -159,6 +159,6 @@ exports.ImageCropper = ImageCropper;
159
159
  onImageSize: function onImageSize() {}
160
160
  });
161
161
 
162
- var _default = (0, _reactIntl.injectIntl)(ImageCropper);
162
+ var _default = (0, _reactIntlNext.injectIntl)(ImageCropper);
163
163
 
164
164
  exports.default = _default;
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.RemoveImageButton = exports.RemoveImageContainer = exports.DragOverlay = exports.CircularMask = exports.RectMask = exports.CONTAINER_PADDING = exports.ImageContainer = exports.Container = void 0;
8
+ exports.RemoveImageContainer = exports.RemoveImageButton = exports.RectMask = exports.ImageContainer = exports.DragOverlay = exports.Container = exports.CircularMask = exports.CONTAINER_PADDING = void 0;
9
9
 
10
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
11
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.checkeredBg = exports.errorIcon = exports.uploadPlaceholder = void 0;
6
+ exports.uploadPlaceholder = exports.errorIcon = exports.checkeredBg = void 0;
7
7
  var uploadPlaceholder = 'data:image/png;base64,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';
8
8
  exports.uploadPlaceholder = uploadPlaceholder;
9
9
  var errorIcon = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAH0AAACECAYAAAC9HST0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAABCRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuNC4wIj4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIgogICAgICAgICAgICB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iCiAgICAgICAgICAgIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyI+CiAgICAgICAgIDx0aWZmOlJlc29sdXRpb25Vbml0PjI8L3RpZmY6UmVzb2x1dGlvblVuaXQ+CiAgICAgICAgIDx0aWZmOkNvbXByZXNzaW9uPjU8L3RpZmY6Q29tcHJlc3Npb24+CiAgICAgICAgIDx0aWZmOlhSZXNvbHV0aW9uPjcyPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj43MjwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjEyNTwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U+MTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFlEaW1lbnNpb24+MTMyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAg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';
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.default = exports.ImageNavigator = exports.viewport = void 0;
10
+ exports.viewport = exports.default = exports.ImageNavigator = void 0;
11
11
 
12
12
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
13
13
 
@@ -31,7 +31,7 @@ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/de
31
31
 
32
32
  var _react = _interopRequireWildcard(require("react"));
33
33
 
34
- var _reactIntl = require("react-intl");
34
+ var _reactIntlNext = require("react-intl-next");
35
35
 
36
36
  var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
37
37
 
@@ -170,12 +170,12 @@ var ImageNavigator = /*#__PURE__*/function (_Component) {
170
170
 
171
171
  _this.exportCrop();
172
172
  });
173
- (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "exportCroppedImage", function () {
173
+ (0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "exportCroppedImage", function (outputSize) {
174
174
  var _assertThisInitialize = (0, _assertThisInitialized2.default)(_this),
175
175
  imageElement = _assertThisInitialize.imageElement;
176
176
 
177
177
  if (imageElement) {
178
- var canvas = (0, _viewport2.renderViewport)(_this.state.viewport, imageElement);
178
+ var canvas = (0, _viewport2.renderViewport)(_this.state.viewport, imageElement, document.createElement('canvas'), outputSize);
179
179
 
180
180
  if (canvas) {
181
181
  return canvas.toDataURL();
@@ -376,10 +376,10 @@ var ImageNavigator = /*#__PURE__*/function (_Component) {
376
376
  var _this$props2 = this.props,
377
377
  errorMessage = _this$props2.errorMessage,
378
378
  isLoading = _this$props2.isLoading;
379
- return /*#__PURE__*/_react.default.createElement(_styled.ImageUploader, null, this.renderDragZone(), isLoading ? null : /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_styled.PaddedBreak, null, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, errorMessage ? _mediaUi.messages.try_again : _mediaUi.messages.or)), /*#__PURE__*/_react.default.createElement(_customThemeButton.default, {
379
+ return /*#__PURE__*/_react.default.createElement(_styled.ImageUploader, null, this.renderDragZone(), isLoading ? null : /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_styled.PaddedBreak, null, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, errorMessage ? _mediaUi.messages.try_again : _mediaUi.messages.or)), /*#__PURE__*/_react.default.createElement(_customThemeButton.default, {
380
380
  onClick: this.onUploadButtonClick,
381
381
  isDisabled: isLoading
382
- }, /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _mediaUi.messages.upload_photo), /*#__PURE__*/_react.default.createElement(_styled.FileInput, {
382
+ }, /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.upload_photo), /*#__PURE__*/_react.default.createElement(_styled.FileInput, {
383
383
  type: "file",
384
384
  id: "image-input",
385
385
  onChange: this.onFileChange,
@@ -441,6 +441,6 @@ var ImageNavigator = /*#__PURE__*/function (_Component) {
441
441
 
442
442
  exports.ImageNavigator = ImageNavigator;
443
443
 
444
- var _default = (0, _reactIntl.injectIntl)(ImageNavigator);
444
+ var _default = (0, _reactIntlNext.injectIntl)(ImageNavigator);
445
445
 
446
446
  exports.default = _default;
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.Slider = exports.defaultProps = void 0;
10
+ exports.defaultProps = exports.Slider = void 0;
11
11
 
12
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
13
 
@@ -7,7 +7,7 @@ var _typeof = require("@babel/runtime/helpers/typeof");
7
7
  Object.defineProperty(exports, "__esModule", {
8
8
  value: true
9
9
  });
10
- exports.SliderWrapper = exports.PaddedBreak = exports.SelectionBlocker = exports.DragZoneText = exports.DragZoneImage = exports.DragZone = exports.ImageUploader = exports.FileInput = exports.SliderContainer = exports.Container = exports.ImageBg = void 0;
10
+ exports.SliderWrapper = exports.SliderContainer = exports.SelectionBlocker = exports.PaddedBreak = exports.ImageUploader = exports.ImageBg = exports.FileInput = exports.DragZoneText = exports.DragZoneImage = exports.DragZone = exports.Container = void 0;
11
11
 
12
12
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
13
13
 
@@ -3,11 +3,11 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.zoomToFit = zoomToFit;
7
6
  exports.applyConstraints = applyConstraints;
8
7
  exports.applyFullConstraints = applyFullConstraints;
9
8
  exports.applyPartialConstraints = applyPartialConstraints;
10
9
  exports.transformVisibleBoundsToImageCoords = transformVisibleBoundsToImageCoords;
10
+ exports.zoomToFit = zoomToFit;
11
11
 
12
12
  var _mediaUi = require("@atlaskit/media-ui");
13
13
 
@@ -5,9 +5,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.radians = radians;
9
8
  exports.applyOrientation = applyOrientation;
10
9
  exports.initialiseImagePreview = initialiseImagePreview;
10
+ exports.radians = radians;
11
11
  exports.renderImageAtCurrentView = renderImageAtCurrentView;
12
12
 
13
13
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.ImagePlacer = exports.defaultProps = exports.DEFAULT_BACKGROUND_COLOR = exports.DEFAULT_USE_CIRCULAR_CLIP_WITH_ACTIONS = exports.DEFAULT_USE_CIRCULAR = exports.DEFAULT_USE_CONSTRAINTS = exports.DEFAULT_ORIGIN_Y = exports.DEFAULT_ORIGIN_X = exports.DEFAULT_ZOOM = exports.DEFAULT_CONTAINER_SIZE = exports.DEFAULT_MARGIN = exports.DEFAULT_MAX_ZOOM = void 0;
8
+ exports.defaultProps = exports.ImagePlacer = exports.DEFAULT_ZOOM = exports.DEFAULT_USE_CONSTRAINTS = exports.DEFAULT_USE_CIRCULAR_CLIP_WITH_ACTIONS = exports.DEFAULT_USE_CIRCULAR = exports.DEFAULT_ORIGIN_Y = exports.DEFAULT_ORIGIN_X = exports.DEFAULT_MAX_ZOOM = exports.DEFAULT_MARGIN = exports.DEFAULT_CONTAINER_SIZE = exports.DEFAULT_BACKGROUND_COLOR = void 0;
9
9
 
10
10
  var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
11
11
 
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.MarginWrapperCircle = exports.MarginWrapperSquare = exports.ImageWrapper = exports.EASING = exports.ContainerWrapper = exports.ImagePlacerErrorWrapper = exports.ImagePlacerWrapper = exports.checkeredBg = void 0;
8
+ exports.checkeredBg = exports.MarginWrapperSquare = exports.MarginWrapperCircle = exports.ImageWrapper = exports.ImagePlacerWrapper = exports.ImagePlacerErrorWrapper = exports.EASING = exports.ContainerWrapper = void 0;
9
9
 
10
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
11
 
@@ -35,9 +35,9 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
35
35
 
36
36
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
37
37
 
38
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
38
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
39
39
 
40
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
40
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
41
41
 
42
42
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
43
43
 
@@ -23,7 +23,7 @@ var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/ge
23
23
 
24
24
  var _react = _interopRequireWildcard(require("react"));
25
25
 
26
- var _reactIntl = require("react-intl");
26
+ var _reactIntlNext = require("react-intl-next");
27
27
 
28
28
  var _mediaUi = require("@atlaskit/media-ui");
29
29
 
@@ -102,7 +102,7 @@ var PredefinedAvatarView = /*#__PURE__*/function (_PureComponent2) {
102
102
  onClick: onGoBack
103
103
  }), /*#__PURE__*/_react.default.createElement("div", {
104
104
  className: "description"
105
- }, predefinedAvatarsText || /*#__PURE__*/_react.default.createElement(_reactIntl.FormattedMessage, _mediaUi.messages.default_avatars))), /*#__PURE__*/_react.default.createElement("ul", null, cards));
105
+ }, predefinedAvatarsText || /*#__PURE__*/_react.default.createElement(_reactIntlNext.FormattedMessage, _mediaUi.messages.default_avatars))), /*#__PURE__*/_react.default.createElement("ul", null, cards));
106
106
  }
107
107
  }, {
108
108
  key: "createOnItemClickHandler",
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.PredefinedAvatarViewWrapper = exports.SmallAvatarImage = exports.LargeAvatarImage = void 0;
8
+ exports.SmallAvatarImage = exports.PredefinedAvatarViewWrapper = exports.LargeAvatarImage = void 0;
9
9
 
10
10
  var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
11
11
 
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-avatar-picker",
3
- "version": "22.3.0",
3
+ "version": "23.1.1",
4
4
  "sideEffects": false
5
5
  }
@@ -13,6 +13,7 @@ exports.radians = radians;
13
13
 
14
14
  var renderViewport = function renderViewport(viewport, image) {
15
15
  var canvas = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : document.createElement('canvas');
16
+ var outputSize = arguments.length > 3 ? arguments[3] : undefined;
16
17
  var visibleSourceBounds = viewport.visibleSourceBounds,
17
18
  innerBounds = viewport.innerBounds,
18
19
  itemSourceBounds = viewport.itemSourceBounds,
@@ -20,8 +21,10 @@ var renderViewport = function renderViewport(viewport, image) {
20
21
  var sourceBounds = visibleSourceBounds;
21
22
  var width = innerBounds.width,
22
23
  height = innerBounds.height;
23
- canvas.width = width;
24
- canvas.height = height;
24
+ var targetSizeActual = outputSize !== null && outputSize !== void 0 ? outputSize : width;
25
+ var outputScaleFactor = targetSizeActual / width;
26
+ canvas.width = width * outputScaleFactor;
27
+ canvas.height = height * outputScaleFactor;
25
28
  var ctx = canvas.getContext('2d');
26
29
 
27
30
  if (ctx && image) {
@@ -34,13 +37,13 @@ var renderViewport = function renderViewport(viewport, image) {
34
37
 
35
38
  case 3:
36
39
  sourceBounds = sourceBounds.hFlipWithin(itemSourceBounds).vFlipWithin(itemSourceBounds);
37
- ctx.translate(width, height);
40
+ ctx.translate(width * outputScaleFactor, height * outputScaleFactor);
38
41
  ctx.scale(-1, -1);
39
42
  break;
40
43
 
41
44
  case 4:
42
45
  sourceBounds = sourceBounds.vFlipWithin(itemSourceBounds);
43
- ctx.translate(0, height);
46
+ ctx.translate(0, height * outputScaleFactor);
44
47
  ctx.scale(1, -1);
45
48
  break;
46
49
 
@@ -75,7 +78,7 @@ var renderViewport = function renderViewport(viewport, image) {
75
78
  break;
76
79
  }
77
80
 
78
- ctx.drawImage(image, sourceBounds.x, sourceBounds.y, sourceBounds.width, sourceBounds.height, 0, 0, width, height);
81
+ ctx.drawImage(image, sourceBounds.x, sourceBounds.y, sourceBounds.width, sourceBounds.height, 0, 0, width * outputScaleFactor, height * outputScaleFactor);
79
82
  return canvas;
80
83
  } else {
81
84
  return null;
@@ -5,7 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports.Viewport = exports.DEFAULT_INNER_HEIGHT = exports.DEFAULT_INNER_WIDTH = exports.DEFAULT_MARGIN = exports.DEFAULT_HEIGHT = exports.DEFAULT_WIDTH = exports.MAX_SCALE = void 0;
8
+ exports.Viewport = exports.MAX_SCALE = exports.DEFAULT_WIDTH = exports.DEFAULT_MARGIN = exports.DEFAULT_INNER_WIDTH = exports.DEFAULT_INNER_HEIGHT = exports.DEFAULT_HEIGHT = void 0;
9
9
 
10
10
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
11
11
 
@@ -17,9 +17,9 @@ export default class AsyncAvatarPickerDialog extends React.PureComponent {
17
17
  const module = await import(
18
18
  /* webpackChunkName: "@atlaskit-internal_media-avatar-picker" */
19
19
  '.');
20
- AsyncAvatarPickerDialog.AvatarPickerDialog = module.AvatarPickerDialog;
20
+ AsyncAvatarPickerDialog.AvatarPickerDialog = module.default;
21
21
  this.setState({
22
- AvatarPickerDialog: module.AvatarPickerDialog
22
+ AvatarPickerDialog: module.default
23
23
  });
24
24
  } catch (error) {// TODO [MS-2272]: Add operational error to catch async import error
25
25
  }
@@ -3,7 +3,7 @@ import React from 'react';
3
3
  import { PureComponent } from 'react';
4
4
  import ModalDialog, { ModalFooter, ModalBody } from '@atlaskit/modal-dialog';
5
5
  import Button from '@atlaskit/button/custom-theme-button';
6
- import { FormattedMessage, intlShape, IntlProvider } from 'react-intl';
6
+ import { FormattedMessage, IntlProvider, injectIntl } from 'react-intl-next';
7
7
  import { fileToDataURI, dataURItoFile, messages } from '@atlaskit/media-ui';
8
8
  import ImageNavigator from '../image-navigator';
9
9
  import { PredefinedAvatarList } from '../predefined-avatar-list';
@@ -60,13 +60,14 @@ export class AvatarPickerDialog extends PureComponent {
60
60
  this.exportCroppedImage = loadParams.export;
61
61
  });
62
62
 
63
- _defineProperty(this, "exportCroppedImage", () => '');
63
+ _defineProperty(this, "exportCroppedImage", outputSize => '');
64
64
 
65
65
  _defineProperty(this, "onSaveClick", () => {
66
66
  const {
67
67
  onImagePicked,
68
68
  onImagePickedDataURI,
69
- onAvatarPicked
69
+ onAvatarPicked,
70
+ outputSize
70
71
  } = this.props;
71
72
  const {
72
73
  selectedImage,
@@ -74,7 +75,7 @@ export class AvatarPickerDialog extends PureComponent {
74
75
  } = this.state;
75
76
 
76
77
  if (selectedImage) {
77
- const exportedCroppedImageURI = this.exportCroppedImage();
78
+ const exportedCroppedImageURI = this.exportCroppedImage(outputSize);
78
79
 
79
80
  if (onImagePicked) {
80
81
  onImagePicked(dataURItoFile(exportedCroppedImageURI), fixedCrop);
@@ -164,7 +165,7 @@ export class AvatarPickerDialog extends PureComponent {
164
165
  shouldScrollInViewport: true,
165
166
  onClose: this.props.onCancel
166
167
  }, this.headerContent(), /*#__PURE__*/React.createElement(ModalBody, null, /*#__PURE__*/React.createElement(AvatarPickerViewWrapper, null, this.renderBody())), this.footerContent());
167
- return this.context.intl ? content : /*#__PURE__*/React.createElement(IntlProvider, {
168
+ return this.props.intl ? content : /*#__PURE__*/React.createElement(IntlProvider, {
168
169
  locale: "en"
169
170
  }, content);
170
171
  }
@@ -263,6 +264,6 @@ _defineProperty(AvatarPickerDialog, "defaultProps", {
263
264
  avatars: []
264
265
  });
265
266
 
266
- _defineProperty(AvatarPickerDialog, "contextTypes", {
267
- intl: intlShape
267
+ export default injectIntl(AvatarPickerDialog, {
268
+ enforceContext: false
268
269
  });
@@ -2,7 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import React from 'react';
3
3
  import { Component } from 'react';
4
4
  import CrossIcon from '@atlaskit/icon/glyph/cross';
5
- import { injectIntl } from 'react-intl';
5
+ import { injectIntl } from 'react-intl-next';
6
6
  import { messages, MediaImage } from '@atlaskit/media-ui';
7
7
  import { isImageRemote } from './isImageRemote';
8
8
  import { CircularMask, Container, DragOverlay, RectMask, RemoveImageContainer, RemoveImageButton, ImageContainer } from './styled';
@@ -1,7 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import React from 'react';
3
3
  import { Component } from 'react';
4
- import { FormattedMessage, injectIntl } from 'react-intl';
4
+ import { FormattedMessage, injectIntl } from 'react-intl-next';
5
5
  import Button from '@atlaskit/button/custom-theme-button';
6
6
  import ImageCropper from '../image-cropper';
7
7
  import Spinner from '@atlaskit/spinner';
@@ -110,13 +110,13 @@ export class ImageNavigator extends Component {
110
110
  this.exportCrop();
111
111
  });
112
112
 
113
- _defineProperty(this, "exportCroppedImage", () => {
113
+ _defineProperty(this, "exportCroppedImage", outputSize => {
114
114
  const {
115
115
  imageElement
116
116
  } = this;
117
117
 
118
118
  if (imageElement) {
119
- const canvas = renderViewport(this.state.viewport, imageElement);
119
+ const canvas = renderViewport(this.state.viewport, imageElement, document.createElement('canvas'), outputSize);
120
120
 
121
121
  if (canvas) {
122
122
  return canvas.toDataURL();
@@ -1,7 +1,7 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import React from 'react';
3
3
  import { PureComponent } from 'react';
4
- import { FormattedMessage } from 'react-intl';
4
+ import { FormattedMessage } from 'react-intl-next';
5
5
  import { messages } from '@atlaskit/media-ui';
6
6
  import { PredefinedAvatarViewWrapper, LargeAvatarImage } from './styled';
7
7
  import ArrowLeftIcon from '@atlaskit/icon/glyph/arrow-left';
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-avatar-picker",
3
- "version": "22.3.0",
3
+ "version": "23.1.1",
4
4
  "sideEffects": false
5
5
  }
@@ -1,5 +1,5 @@
1
1
  export const radians = deg => deg * (Math.PI / 180);
2
- export const renderViewport = (viewport, image, canvas = document.createElement('canvas')) => {
2
+ export const renderViewport = (viewport, image, canvas = document.createElement('canvas'), outputSize) => {
3
3
  const {
4
4
  visibleSourceBounds,
5
5
  innerBounds,
@@ -11,8 +11,10 @@ export const renderViewport = (viewport, image, canvas = document.createElement(
11
11
  width,
12
12
  height
13
13
  } = innerBounds;
14
- canvas.width = width;
15
- canvas.height = height;
14
+ const targetSizeActual = outputSize !== null && outputSize !== void 0 ? outputSize : width;
15
+ const outputScaleFactor = targetSizeActual / width;
16
+ canvas.width = width * outputScaleFactor;
17
+ canvas.height = height * outputScaleFactor;
16
18
  const ctx = canvas.getContext('2d');
17
19
 
18
20
  if (ctx && image) {
@@ -25,13 +27,13 @@ export const renderViewport = (viewport, image, canvas = document.createElement(
25
27
 
26
28
  case 3:
27
29
  sourceBounds = sourceBounds.hFlipWithin(itemSourceBounds).vFlipWithin(itemSourceBounds);
28
- ctx.translate(width, height);
30
+ ctx.translate(width * outputScaleFactor, height * outputScaleFactor);
29
31
  ctx.scale(-1, -1);
30
32
  break;
31
33
 
32
34
  case 4:
33
35
  sourceBounds = sourceBounds.vFlipWithin(itemSourceBounds);
34
- ctx.translate(0, height);
36
+ ctx.translate(0, height * outputScaleFactor);
35
37
  ctx.scale(1, -1);
36
38
  break;
37
39
 
@@ -66,7 +68,7 @@ export const renderViewport = (viewport, image, canvas = document.createElement(
66
68
  break;
67
69
  }
68
70
 
69
- ctx.drawImage(image, sourceBounds.x, sourceBounds.y, sourceBounds.width, sourceBounds.height, 0, 0, width, height);
71
+ ctx.drawImage(image, sourceBounds.x, sourceBounds.y, sourceBounds.width, sourceBounds.height, 0, 0, width * outputScaleFactor, height * outputScaleFactor);
70
72
  return canvas;
71
73
  } else {
72
74
  return null;
@@ -61,9 +61,9 @@ var AsyncAvatarPickerDialog = /*#__PURE__*/function (_React$PureComponent) {
61
61
 
62
62
  case 4:
63
63
  module = _context.sent;
64
- AsyncAvatarPickerDialog.AvatarPickerDialog = module.AvatarPickerDialog;
64
+ AsyncAvatarPickerDialog.AvatarPickerDialog = module.default;
65
65
  this.setState({
66
- AvatarPickerDialog: module.AvatarPickerDialog
66
+ AvatarPickerDialog: module.default
67
67
  });
68
68
  _context.next = 11;
69
69
  break;
@@ -16,7 +16,7 @@ import React from 'react';
16
16
  import { PureComponent } from 'react';
17
17
  import ModalDialog, { ModalFooter, ModalBody } from '@atlaskit/modal-dialog';
18
18
  import Button from '@atlaskit/button/custom-theme-button';
19
- import { FormattedMessage, intlShape, IntlProvider } from 'react-intl';
19
+ import { FormattedMessage, IntlProvider, injectIntl } from 'react-intl-next';
20
20
  import { fileToDataURI, dataURItoFile, messages } from '@atlaskit/media-ui';
21
21
  import ImageNavigator from '../image-navigator';
22
22
  import { PredefinedAvatarList } from '../predefined-avatar-list';
@@ -114,7 +114,7 @@ export var AvatarPickerDialog = /*#__PURE__*/function (_PureComponent) {
114
114
  _this.exportCroppedImage = loadParams.export;
115
115
  });
116
116
 
117
- _defineProperty(_assertThisInitialized(_this), "exportCroppedImage", function () {
117
+ _defineProperty(_assertThisInitialized(_this), "exportCroppedImage", function (outputSize) {
118
118
  return '';
119
119
  });
120
120
 
@@ -122,13 +122,14 @@ export var AvatarPickerDialog = /*#__PURE__*/function (_PureComponent) {
122
122
  var _this$props = _this.props,
123
123
  onImagePicked = _this$props.onImagePicked,
124
124
  onImagePickedDataURI = _this$props.onImagePickedDataURI,
125
- onAvatarPicked = _this$props.onAvatarPicked;
125
+ onAvatarPicked = _this$props.onAvatarPicked,
126
+ outputSize = _this$props.outputSize;
126
127
  var _this$state = _this.state,
127
128
  selectedImage = _this$state.selectedImage,
128
129
  selectedAvatar = _this$state.selectedAvatar;
129
130
 
130
131
  if (selectedImage) {
131
- var exportedCroppedImageURI = _this.exportCroppedImage();
132
+ var exportedCroppedImageURI = _this.exportCroppedImage(outputSize);
132
133
 
133
134
  if (onImagePicked) {
134
135
  onImagePicked(dataURItoFile(exportedCroppedImageURI), fixedCrop);
@@ -220,7 +221,7 @@ export var AvatarPickerDialog = /*#__PURE__*/function (_PureComponent) {
220
221
  shouldScrollInViewport: true,
221
222
  onClose: this.props.onCancel
222
223
  }, this.headerContent(), /*#__PURE__*/React.createElement(ModalBody, null, /*#__PURE__*/React.createElement(AvatarPickerViewWrapper, null, this.renderBody())), this.footerContent());
223
- return this.context.intl ? content : /*#__PURE__*/React.createElement(IntlProvider, {
224
+ return this.props.intl ? content : /*#__PURE__*/React.createElement(IntlProvider, {
224
225
  locale: "en"
225
226
  }, content);
226
227
  }
@@ -314,6 +315,6 @@ _defineProperty(AvatarPickerDialog, "defaultProps", {
314
315
  avatars: []
315
316
  });
316
317
 
317
- _defineProperty(AvatarPickerDialog, "contextTypes", {
318
- intl: intlShape
318
+ export default injectIntl(AvatarPickerDialog, {
319
+ enforceContext: false
319
320
  });
@@ -13,7 +13,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
13
13
  import React from 'react';
14
14
  import { Component } from 'react';
15
15
  import CrossIcon from '@atlaskit/icon/glyph/cross';
16
- import { injectIntl } from 'react-intl';
16
+ import { injectIntl } from 'react-intl-next';
17
17
  import { messages, MediaImage } from '@atlaskit/media-ui';
18
18
  import { isImageRemote } from './isImageRemote';
19
19
  import { CircularMask, Container, DragOverlay, RectMask, RemoveImageContainer, RemoveImageButton, ImageContainer } from './styled';
@@ -15,7 +15,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
15
15
 
16
16
  import React from 'react';
17
17
  import { Component } from 'react';
18
- import { FormattedMessage, injectIntl } from 'react-intl';
18
+ import { FormattedMessage, injectIntl } from 'react-intl-next';
19
19
  import Button from '@atlaskit/button/custom-theme-button';
20
20
  import ImageCropper from '../image-cropper';
21
21
  import Spinner from '@atlaskit/spinner';
@@ -138,12 +138,12 @@ export var ImageNavigator = /*#__PURE__*/function (_Component) {
138
138
  _this.exportCrop();
139
139
  });
140
140
 
141
- _defineProperty(_assertThisInitialized(_this), "exportCroppedImage", function () {
141
+ _defineProperty(_assertThisInitialized(_this), "exportCroppedImage", function (outputSize) {
142
142
  var _assertThisInitialize = _assertThisInitialized(_this),
143
143
  imageElement = _assertThisInitialize.imageElement;
144
144
 
145
145
  if (imageElement) {
146
- var canvas = renderViewport(_this.state.viewport, imageElement);
146
+ var canvas = renderViewport(_this.state.viewport, imageElement, document.createElement('canvas'), outputSize);
147
147
 
148
148
  if (canvas) {
149
149
  return canvas.toDataURL();
@@ -5,9 +5,9 @@ import _inherits from "@babel/runtime/helpers/inherits";
5
5
  import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
6
6
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
7
7
 
8
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
8
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
9
9
 
10
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
10
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
11
11
 
12
12
  function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
13
13
 
@@ -11,7 +11,7 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
11
11
 
12
12
  import React from 'react';
13
13
  import { PureComponent } from 'react';
14
- import { FormattedMessage } from 'react-intl';
14
+ import { FormattedMessage } from 'react-intl-next';
15
15
  import { messages } from '@atlaskit/media-ui';
16
16
  import { PredefinedAvatarViewWrapper, LargeAvatarImage } from './styled';
17
17
  import ArrowLeftIcon from '@atlaskit/icon/glyph/arrow-left';
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@atlaskit/media-avatar-picker",
3
- "version": "22.3.0",
3
+ "version": "23.1.1",
4
4
  "sideEffects": false
5
5
  }
@@ -3,6 +3,7 @@ export var radians = function radians(deg) {
3
3
  };
4
4
  export var renderViewport = function renderViewport(viewport, image) {
5
5
  var canvas = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : document.createElement('canvas');
6
+ var outputSize = arguments.length > 3 ? arguments[3] : undefined;
6
7
  var visibleSourceBounds = viewport.visibleSourceBounds,
7
8
  innerBounds = viewport.innerBounds,
8
9
  itemSourceBounds = viewport.itemSourceBounds,
@@ -10,8 +11,10 @@ export var renderViewport = function renderViewport(viewport, image) {
10
11
  var sourceBounds = visibleSourceBounds;
11
12
  var width = innerBounds.width,
12
13
  height = innerBounds.height;
13
- canvas.width = width;
14
- canvas.height = height;
14
+ var targetSizeActual = outputSize !== null && outputSize !== void 0 ? outputSize : width;
15
+ var outputScaleFactor = targetSizeActual / width;
16
+ canvas.width = width * outputScaleFactor;
17
+ canvas.height = height * outputScaleFactor;
15
18
  var ctx = canvas.getContext('2d');
16
19
 
17
20
  if (ctx && image) {
@@ -24,13 +27,13 @@ export var renderViewport = function renderViewport(viewport, image) {
24
27
 
25
28
  case 3:
26
29
  sourceBounds = sourceBounds.hFlipWithin(itemSourceBounds).vFlipWithin(itemSourceBounds);
27
- ctx.translate(width, height);
30
+ ctx.translate(width * outputScaleFactor, height * outputScaleFactor);
28
31
  ctx.scale(-1, -1);
29
32
  break;
30
33
 
31
34
  case 4:
32
35
  sourceBounds = sourceBounds.vFlipWithin(itemSourceBounds);
33
- ctx.translate(0, height);
36
+ ctx.translate(0, height * outputScaleFactor);
34
37
  ctx.scale(1, -1);
35
38
  break;
36
39
 
@@ -65,7 +68,7 @@ export var renderViewport = function renderViewport(viewport, image) {
65
68
  break;
66
69
  }
67
70
 
68
- ctx.drawImage(image, sourceBounds.x, sourceBounds.y, sourceBounds.width, sourceBounds.height, 0, 0, width, height);
71
+ ctx.drawImage(image, sourceBounds.x, sourceBounds.y, sourceBounds.width, sourceBounds.height, 0, 0, width * outputScaleFactor, height * outputScaleFactor);
69
72
  return canvas;
70
73
  } else {
71
74
  return null;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { ReactNode } from 'react';
3
- import { AvatarPickerDialog } from '.';
3
+ import { default as AvatarPickerDialog } from '.';
4
4
  import { AvatarPickerDialogProps } from './types';
5
5
  export interface AsyncAvatarPickerDialogState {
6
6
  AvatarPickerDialog?: typeof AvatarPickerDialog;
@@ -12,7 +12,7 @@ export default class AsyncAvatarPickerDialog extends React.PureComponent<AsyncAv
12
12
  static displayName: string;
13
13
  static AvatarPickerDialog?: typeof AvatarPickerDialog;
14
14
  state: {
15
- AvatarPickerDialog: typeof AvatarPickerDialog | undefined;
15
+ AvatarPickerDialog: React.FC<AvatarPickerDialogProps> | undefined;
16
16
  };
17
17
  UNSAFE_componentWillMount(): Promise<void>;
18
18
  render(): {};
@@ -1,18 +1,20 @@
1
+ import React from 'react';
1
2
  import { PureComponent } from 'react';
2
- import { FormattedMessage } from 'react-intl';
3
+ import { WrappedComponentProps } from 'react-intl-next';
3
4
  import { Avatar } from '../avatar-list';
4
5
  import { CropProperties } from '../image-navigator';
5
6
  import { LoadParameters } from '../image-navigator/index';
6
7
  import { AvatarPickerDialogProps, AvatarPickerDialogState } from './types';
7
8
  export declare const MAX_SIZE_MB = 10;
8
9
  export declare const ERROR: {
9
- URL: FormattedMessage.MessageDescriptor;
10
- FORMAT: FormattedMessage.MessageDescriptor;
11
- SIZE: FormattedMessage.MessageDescriptor;
10
+ URL: import("react-intl-next").MessageDescriptor;
11
+ FORMAT: import("react-intl-next").MessageDescriptor;
12
+ SIZE: import("react-intl-next").MessageDescriptor;
12
13
  };
13
14
  export declare const ACCEPT: string[];
14
15
  export declare const fixedCrop: CropProperties;
15
- export declare class AvatarPickerDialog extends PureComponent<AvatarPickerDialogProps, AvatarPickerDialogState> {
16
+ export declare type AvatarPickerDialogWithIntlProps = AvatarPickerDialogProps & Partial<WrappedComponentProps>;
17
+ export declare class AvatarPickerDialog extends PureComponent<AvatarPickerDialogWithIntlProps, AvatarPickerDialogState> {
16
18
  static defaultProps: {
17
19
  avatars: never[];
18
20
  };
@@ -24,7 +26,7 @@ export declare class AvatarPickerDialog extends PureComponent<AvatarPickerDialog
24
26
  * Initialised with no-op function. Is assigned cropped image exporting
25
27
  * function when internal ImageCropper mounts via this.onImageNavigatorLoad
26
28
  */
27
- exportCroppedImage: () => string;
29
+ exportCroppedImage: (outputSize?: number | undefined) => string;
28
30
  onSaveClick: () => void;
29
31
  onShowMore: () => void;
30
32
  onGoBack: () => void;
@@ -33,9 +35,6 @@ export declare class AvatarPickerDialog extends PureComponent<AvatarPickerDialog
33
35
  setErrorState: (errorMessage: string) => void;
34
36
  onImageUploaded: () => void;
35
37
  onImageError: (errorMessage: string) => void;
36
- static contextTypes: {
37
- intl: ReactIntl.IntlShape;
38
- };
39
38
  render(): JSX.Element;
40
39
  headerContent: () => JSX.Element;
41
40
  footerContent: () => JSX.Element;
@@ -44,3 +43,5 @@ export declare class AvatarPickerDialog extends PureComponent<AvatarPickerDialog
44
43
  renderPredefinedAvatarList(): JSX.Element | null;
45
44
  renderBody(): JSX.Element;
46
45
  }
46
+ declare const _default: React.FC<AvatarPickerDialogProps>;
47
+ export default _default;
@@ -35,6 +35,8 @@ export interface AvatarPickerDialogProps {
35
35
  isLoading?: boolean;
36
36
  /** This property decribe the text related to the Avatar. */
37
37
  predefinedAvatarsText?: string;
38
+ /** The target width/height of the resulting (square) avatar. Leave blank for default (200x200) */
39
+ outputSize?: number;
38
40
  }
39
41
  export interface AvatarPickerDialogState {
40
42
  mode: Mode;
@@ -1,6 +1,6 @@
1
1
  import React from 'react';
2
2
  import { Component } from 'react';
3
- import { InjectedIntlProps } from 'react-intl';
3
+ import { WrappedComponentProps } from 'react-intl-next';
4
4
  export interface ImageCropperProp {
5
5
  imageSource: string;
6
6
  containerSize?: number;
@@ -15,7 +15,7 @@ export interface ImageCropperProp {
15
15
  onRemoveImage: () => void;
16
16
  onImageError: (errorMessage: string) => void;
17
17
  }
18
- export declare class ImageCropper extends Component<ImageCropperProp & InjectedIntlProps, {}> {
18
+ export declare class ImageCropper extends Component<ImageCropperProp & WrappedComponentProps, {}> {
19
19
  static defaultProps: {
20
20
  containerSize: number;
21
21
  isCircleMask: boolean;
@@ -27,7 +27,5 @@ export declare class ImageCropper extends Component<ImageCropperProp & InjectedI
27
27
  onImageError: () => void;
28
28
  render(): JSX.Element | null;
29
29
  }
30
- declare const _default: React.ComponentClass<ImageCropperProp, any> & {
31
- WrappedComponent: ReactIntl.ComponentConstructor<ImageCropperProp & InjectedIntlProps>;
32
- };
30
+ declare const _default: React.FC<ImageCropperProp>;
33
31
  export default _default;
@@ -1,10 +1,10 @@
1
1
  import React from 'react';
2
2
  import { Component } from 'react';
3
- import { InjectedIntlProps } from 'react-intl';
3
+ import { WrappedComponentProps } from 'react-intl-next';
4
4
  import { Vector2 } from '@atlaskit/media-ui';
5
5
  import { Viewport } from '../viewport';
6
6
  export interface LoadParameters {
7
- export: () => string;
7
+ export: (outputSize?: number) => string;
8
8
  }
9
9
  export declare type OnLoadHandler = (params: LoadParameters) => void;
10
10
  export declare const viewport: Viewport;
@@ -35,7 +35,7 @@ export interface State {
35
35
  imageOrientation: number;
36
36
  viewport: Viewport;
37
37
  }
38
- export declare class ImageNavigator extends Component<Props & InjectedIntlProps, State> {
38
+ export declare class ImageNavigator extends Component<Props & WrappedComponentProps, State> {
39
39
  state: State;
40
40
  imageElement?: HTMLImageElement;
41
41
  UNSAFE_componentWillMount(): void;
@@ -55,7 +55,7 @@ export declare class ImageNavigator extends Component<Props & InjectedIntlProps,
55
55
  * @param height the height of the image
56
56
  */
57
57
  onImageLoaded: (image: HTMLImageElement) => void;
58
- exportCroppedImage: () => string;
58
+ exportCroppedImage: (outputSize?: number | undefined) => string;
59
59
  exportCrop(): void;
60
60
  validateFile(imageFile: File): string | null;
61
61
  readFile(imageFile: File): Promise<void>;
@@ -73,7 +73,5 @@ export declare class ImageNavigator extends Component<Props & InjectedIntlProps,
73
73
  private get dataURI();
74
74
  render(): JSX.Element;
75
75
  }
76
- declare const _default: React.ComponentClass<Props, any> & {
77
- WrappedComponent: ReactIntl.ComponentConstructor<Props & InjectedIntlProps>;
78
- };
76
+ declare const _default: React.FC<Props>;
79
77
  export default _default;
@@ -1,3 +1,3 @@
1
1
  import { Viewport } from './viewport';
2
2
  export declare const radians: (deg: number) => number;
3
- export declare const renderViewport: (viewport: Viewport, image: HTMLImageElement, canvas?: HTMLCanvasElement) => HTMLCanvasElement | null;
3
+ export declare const renderViewport: (viewport: Viewport, image: HTMLImageElement, canvas?: HTMLCanvasElement, outputSize?: number | undefined) => HTMLCanvasElement | null;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atlaskit/media-avatar-picker",
3
- "version": "22.3.0",
3
+ "version": "23.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/"
@@ -26,33 +26,32 @@
26
26
  }
27
27
  },
28
28
  "dependencies": {
29
- "@atlaskit/button": "^16.0.0",
30
- "@atlaskit/icon": "^21.9.0",
31
- "@atlaskit/media-ui": "^17.1.0",
32
- "@atlaskit/modal-dialog": "^12.1.0",
33
- "@atlaskit/range": "^5.1.0",
29
+ "@atlaskit/button": "^16.2.0",
30
+ "@atlaskit/icon": "^21.10.0",
31
+ "@atlaskit/media-ui": "^20.0.0",
32
+ "@atlaskit/modal-dialog": "^12.2.0",
33
+ "@atlaskit/range": "^6.0.0",
34
34
  "@atlaskit/spinner": "^15.0.0",
35
- "@atlaskit/theme": "^12.0.0",
35
+ "@atlaskit/theme": "^12.1.0",
36
36
  "@babel/runtime": "^7.0.0",
37
37
  "exenv": "^1.2.2"
38
38
  },
39
39
  "peerDependencies": {
40
40
  "react": "^16.8.0",
41
- "react-intl": "^2.6.0",
41
+ "react-intl-next": "npm:react-intl@^5.18.1",
42
42
  "styled-components": "^3.2.6"
43
43
  },
44
44
  "devDependencies": {
45
- "@atlaskit/build-utils": "*",
46
45
  "@atlaskit/docs": "*",
47
46
  "@atlaskit/media-core": "^32.2.0",
48
- "@atlaskit/media-test-helpers": "^28.8.0",
49
- "@atlaskit/page": "^12.0.0",
47
+ "@atlaskit/media-test-helpers": "^29.2.0",
48
+ "@atlaskit/page": "^12.1.0",
50
49
  "@atlassian/atlassian-frontend-prettier-config-1.0.1": "npm:@atlassian/atlassian-frontend-prettier-config@1.0.1",
51
50
  "@types/enzyme": "^3.1.15",
52
51
  "enzyme": "^3.10.0",
53
52
  "react": "^16.8.0",
54
53
  "react-dom": "^16.8.0",
55
- "react-intl": "^2.6.0",
54
+ "react-intl-next": "npm:react-intl@^5.18.1",
56
55
  "typescript": "3.9.6"
57
56
  },
58
57
  "prettier": "@atlassian/atlassian-frontend-prettier-config-1.0.1"