@atlaskit/reactions 21.0.4 → 21.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +3 -0
  3. package/dist/cjs/analytics/index.js +11 -1
  4. package/dist/cjs/analytics/ufo.js +71 -0
  5. package/dist/cjs/components/Counter.js +20 -20
  6. package/dist/cjs/components/EmojiButton.js +9 -11
  7. package/dist/cjs/components/FlashAnimation.js +19 -17
  8. package/dist/cjs/components/Reaction.js +22 -28
  9. package/dist/cjs/components/ReactionPicker.js +43 -37
  10. package/dist/cjs/components/ReactionTooltip.js +33 -29
  11. package/dist/cjs/components/Reactions.js +15 -17
  12. package/dist/cjs/components/Selector.js +23 -28
  13. package/dist/cjs/components/ShowMore.js +25 -22
  14. package/dist/cjs/components/Trigger.js +11 -16
  15. package/dist/cjs/components/UfoErrorBoundary.js +68 -0
  16. package/dist/cjs/components/index.js +9 -1
  17. package/dist/cjs/containers/ConnectedReactionPicker.js +44 -0
  18. package/dist/cjs/containers/ConnectedReactionsView.js +131 -0
  19. package/dist/cjs/containers/index.js +4 -6
  20. package/dist/cjs/i18n/cs.js +4 -3
  21. package/dist/cjs/i18n/da.js +4 -3
  22. package/dist/cjs/i18n/de.js +4 -3
  23. package/dist/cjs/i18n/en_ZZ.js +21 -0
  24. package/dist/cjs/i18n/es.js +4 -3
  25. package/dist/cjs/i18n/et.js +2 -2
  26. package/dist/cjs/i18n/fi.js +4 -3
  27. package/dist/cjs/i18n/fr.js +4 -3
  28. package/dist/cjs/i18n/hu.js +4 -3
  29. package/dist/cjs/i18n/it.js +4 -3
  30. package/dist/cjs/i18n/ja.js +4 -3
  31. package/dist/cjs/i18n/ko.js +4 -3
  32. package/dist/cjs/i18n/nb.js +4 -3
  33. package/dist/cjs/i18n/nl.js +4 -3
  34. package/dist/cjs/i18n/pl.js +4 -3
  35. package/dist/cjs/i18n/pt_BR.js +4 -3
  36. package/dist/cjs/i18n/pt_PT.js +2 -2
  37. package/dist/cjs/i18n/ru.js +4 -3
  38. package/dist/cjs/i18n/sk.js +2 -2
  39. package/dist/cjs/i18n/sv.js +4 -3
  40. package/dist/cjs/i18n/th.js +4 -3
  41. package/dist/cjs/i18n/tr.js +4 -3
  42. package/dist/cjs/i18n/uk.js +4 -3
  43. package/dist/cjs/i18n/vi.js +4 -3
  44. package/dist/cjs/i18n/zh.js +4 -3
  45. package/dist/cjs/i18n/zh_TW.js +4 -3
  46. package/dist/cjs/index.js +11 -3
  47. package/dist/cjs/{reaction-store → store}/ReactionConsumer.js +0 -0
  48. package/dist/cjs/{reaction-store → store}/ReactionsStore.js +63 -14
  49. package/dist/cjs/{reaction-store → store}/batched.js +0 -0
  50. package/dist/cjs/{reaction-store → store}/index.js +0 -0
  51. package/dist/cjs/{reaction-store → store}/utils.js +0 -0
  52. package/dist/cjs/version.json +1 -1
  53. package/dist/es2019/analytics/index.js +2 -0
  54. package/dist/es2019/analytics/ufo.js +62 -0
  55. package/dist/es2019/components/Counter.js +18 -18
  56. package/dist/es2019/components/EmojiButton.js +10 -10
  57. package/dist/es2019/components/FlashAnimation.js +16 -15
  58. package/dist/es2019/components/Reaction.js +23 -28
  59. package/dist/es2019/components/ReactionPicker.js +39 -34
  60. package/dist/es2019/components/ReactionTooltip.js +27 -27
  61. package/dist/es2019/components/Reactions.js +16 -16
  62. package/dist/es2019/components/Selector.js +21 -24
  63. package/dist/es2019/components/ShowMore.js +22 -18
  64. package/dist/es2019/components/Trigger.js +10 -14
  65. package/dist/es2019/components/UfoErrorBoundary.js +13 -0
  66. package/dist/es2019/components/index.js +2 -1
  67. package/dist/es2019/containers/ConnectedReactionPicker.js +27 -0
  68. package/dist/es2019/containers/ConnectedReactionsView.js +112 -0
  69. package/dist/es2019/containers/index.js +2 -2
  70. package/dist/es2019/i18n/cs.js +4 -3
  71. package/dist/es2019/i18n/da.js +4 -3
  72. package/dist/es2019/i18n/de.js +4 -3
  73. package/dist/es2019/i18n/en_ZZ.js +13 -0
  74. package/dist/es2019/i18n/es.js +4 -3
  75. package/dist/es2019/i18n/et.js +2 -2
  76. package/dist/es2019/i18n/fi.js +4 -3
  77. package/dist/es2019/i18n/fr.js +4 -3
  78. package/dist/es2019/i18n/hu.js +4 -3
  79. package/dist/es2019/i18n/it.js +4 -3
  80. package/dist/es2019/i18n/ja.js +4 -3
  81. package/dist/es2019/i18n/ko.js +4 -3
  82. package/dist/es2019/i18n/nb.js +4 -3
  83. package/dist/es2019/i18n/nl.js +4 -3
  84. package/dist/es2019/i18n/pl.js +4 -3
  85. package/dist/es2019/i18n/pt_BR.js +4 -3
  86. package/dist/es2019/i18n/pt_PT.js +2 -2
  87. package/dist/es2019/i18n/ru.js +4 -3
  88. package/dist/es2019/i18n/sk.js +2 -2
  89. package/dist/es2019/i18n/sv.js +4 -3
  90. package/dist/es2019/i18n/th.js +4 -3
  91. package/dist/es2019/i18n/tr.js +4 -3
  92. package/dist/es2019/i18n/uk.js +4 -3
  93. package/dist/es2019/i18n/vi.js +4 -3
  94. package/dist/es2019/i18n/zh.js +4 -3
  95. package/dist/es2019/i18n/zh_TW.js +4 -3
  96. package/dist/es2019/index.js +2 -1
  97. package/dist/es2019/{reaction-store → store}/ReactionConsumer.js +0 -0
  98. package/dist/es2019/{reaction-store → store}/ReactionsStore.js +59 -13
  99. package/dist/es2019/{reaction-store → store}/batched.js +0 -0
  100. package/dist/es2019/{reaction-store → store}/index.js +0 -0
  101. package/dist/es2019/{reaction-store → store}/utils.js +0 -0
  102. package/dist/es2019/version.json +1 -1
  103. package/dist/esm/analytics/index.js +2 -0
  104. package/dist/esm/analytics/ufo.js +62 -0
  105. package/dist/esm/components/Counter.js +18 -17
  106. package/dist/esm/components/EmojiButton.js +9 -10
  107. package/dist/esm/components/FlashAnimation.js +16 -14
  108. package/dist/esm/components/Reaction.js +22 -26
  109. package/dist/esm/components/ReactionPicker.js +39 -34
  110. package/dist/esm/components/ReactionTooltip.js +27 -27
  111. package/dist/esm/components/Reactions.js +15 -16
  112. package/dist/esm/components/Selector.js +20 -24
  113. package/dist/esm/components/ShowMore.js +22 -19
  114. package/dist/esm/components/Trigger.js +10 -14
  115. package/dist/esm/components/UfoErrorBoundary.js +54 -0
  116. package/dist/esm/components/index.js +2 -1
  117. package/dist/esm/containers/ConnectedReactionPicker.js +29 -0
  118. package/dist/esm/containers/ConnectedReactionsView.js +108 -0
  119. package/dist/esm/containers/index.js +2 -2
  120. package/dist/esm/i18n/cs.js +4 -3
  121. package/dist/esm/i18n/da.js +4 -3
  122. package/dist/esm/i18n/de.js +4 -3
  123. package/dist/esm/i18n/en_ZZ.js +13 -0
  124. package/dist/esm/i18n/es.js +4 -3
  125. package/dist/esm/i18n/et.js +2 -2
  126. package/dist/esm/i18n/fi.js +4 -3
  127. package/dist/esm/i18n/fr.js +4 -3
  128. package/dist/esm/i18n/hu.js +4 -3
  129. package/dist/esm/i18n/it.js +4 -3
  130. package/dist/esm/i18n/ja.js +4 -3
  131. package/dist/esm/i18n/ko.js +4 -3
  132. package/dist/esm/i18n/nb.js +4 -3
  133. package/dist/esm/i18n/nl.js +4 -3
  134. package/dist/esm/i18n/pl.js +4 -3
  135. package/dist/esm/i18n/pt_BR.js +4 -3
  136. package/dist/esm/i18n/pt_PT.js +2 -2
  137. package/dist/esm/i18n/ru.js +4 -3
  138. package/dist/esm/i18n/sk.js +2 -2
  139. package/dist/esm/i18n/sv.js +4 -3
  140. package/dist/esm/i18n/th.js +4 -3
  141. package/dist/esm/i18n/tr.js +4 -3
  142. package/dist/esm/i18n/uk.js +4 -3
  143. package/dist/esm/i18n/vi.js +4 -3
  144. package/dist/esm/i18n/zh.js +4 -3
  145. package/dist/esm/i18n/zh_TW.js +4 -3
  146. package/dist/esm/index.js +2 -1
  147. package/dist/esm/{reaction-store → store}/ReactionConsumer.js +0 -0
  148. package/dist/esm/{reaction-store → store}/ReactionsStore.js +61 -13
  149. package/dist/esm/{reaction-store → store}/batched.js +0 -0
  150. package/dist/esm/{reaction-store → store}/index.js +0 -0
  151. package/dist/esm/{reaction-store → store}/utils.js +0 -0
  152. package/dist/esm/version.json +1 -1
  153. package/dist/types/analytics/index.d.ts +1 -0
  154. package/dist/types/analytics/ufo.d.ts +26 -0
  155. package/dist/types/components/Counter.d.ts +4 -3
  156. package/dist/types/components/FlashAnimation.d.ts +3 -1
  157. package/dist/types/components/ReactionPicker.d.ts +2 -1
  158. package/dist/types/components/Reactions.d.ts +7 -5
  159. package/dist/types/components/Selector.d.ts +2 -1
  160. package/dist/types/components/ShowMore.d.ts +4 -0
  161. package/dist/types/components/UfoErrorBoundary.d.ts +8 -0
  162. package/dist/types/components/index.d.ts +2 -0
  163. package/dist/types/containers/ConnectedReactionPicker.d.ts +10 -0
  164. package/dist/types/containers/ConnectedReactionsView.d.ts +19 -0
  165. package/dist/types/containers/index.d.ts +2 -2
  166. package/dist/types/i18n/cs.d.ts +2 -1
  167. package/dist/types/i18n/da.d.ts +2 -1
  168. package/dist/types/i18n/de.d.ts +2 -1
  169. package/dist/types/i18n/en_ZZ.d.ts +13 -0
  170. package/dist/types/i18n/es.d.ts +2 -1
  171. package/dist/types/i18n/et.d.ts +1 -1
  172. package/dist/types/i18n/fi.d.ts +2 -1
  173. package/dist/types/i18n/fr.d.ts +2 -1
  174. package/dist/types/i18n/hu.d.ts +2 -1
  175. package/dist/types/i18n/it.d.ts +2 -1
  176. package/dist/types/i18n/ja.d.ts +2 -1
  177. package/dist/types/i18n/ko.d.ts +2 -1
  178. package/dist/types/i18n/nb.d.ts +2 -1
  179. package/dist/types/i18n/nl.d.ts +2 -1
  180. package/dist/types/i18n/pl.d.ts +2 -1
  181. package/dist/types/i18n/pt_BR.d.ts +2 -1
  182. package/dist/types/i18n/pt_PT.d.ts +1 -1
  183. package/dist/types/i18n/ru.d.ts +2 -1
  184. package/dist/types/i18n/sk.d.ts +1 -1
  185. package/dist/types/i18n/sv.d.ts +2 -1
  186. package/dist/types/i18n/th.d.ts +2 -1
  187. package/dist/types/i18n/tr.d.ts +2 -1
  188. package/dist/types/i18n/uk.d.ts +2 -1
  189. package/dist/types/i18n/vi.d.ts +2 -1
  190. package/dist/types/i18n/zh.d.ts +2 -1
  191. package/dist/types/i18n/zh_TW.d.ts +2 -1
  192. package/dist/types/index.d.ts +3 -2
  193. package/dist/types/store/ReactionConsumer.d.ts +29 -0
  194. package/dist/types/{reaction-store → store}/ReactionsStore.d.ts +11 -7
  195. package/dist/types/{reaction-store → store}/batched.d.ts +0 -0
  196. package/dist/types/{reaction-store → store}/index.d.ts +0 -0
  197. package/dist/types/{reaction-store → store}/utils.d.ts +0 -0
  198. package/dist/types/types/Actions.d.ts +6 -0
  199. package/dist/types/types/index.d.ts +1 -1
  200. package/docs/0-intro.tsx +1 -1
  201. package/local-config-example.ts +3 -1
  202. package/package.json +11 -8
  203. package/dist/cjs/containers/ReactionsContainer.js +0 -142
  204. package/dist/cjs/containers/ReactionsPickerContainer.js +0 -76
  205. package/dist/es2019/containers/ReactionsContainer.js +0 -96
  206. package/dist/es2019/containers/ReactionsPickerContainer.js +0 -26
  207. package/dist/esm/containers/ReactionsContainer.js +0 -125
  208. package/dist/esm/containers/ReactionsPickerContainer.js +0 -62
  209. package/dist/types/containers/ReactionsContainer.d.ts +0 -22
  210. package/dist/types/containers/ReactionsPickerContainer.d.ts +0 -18
  211. package/dist/types/reaction-store/ReactionConsumer.d.ts +0 -32
@@ -1,38 +1,38 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
+
3
+ /** @jsx jsx */
4
+ import { jsx, css } from '@emotion/core';
2
5
  import Tooltip from '@atlaskit/tooltip';
3
- import React from 'react';
6
+ import React, { Fragment } from 'react';
4
7
  import { FormattedMessage } from 'react-intl-next';
5
- import { style } from 'typestyle';
6
8
  import { token } from '@atlaskit/tokens';
7
9
  import { N90 } from '@atlaskit/theme/colors';
8
10
  import { messages } from './i18n';
9
11
  var verticalMargin = 5;
10
- var tooltipStyle = style({
12
+ var tooltipStyle = css({
11
13
  maxWidth: '150px',
12
14
  textOverflow: 'ellipsis',
13
15
  whiteSpace: 'nowrap',
14
16
  overflow: 'hidden',
15
17
  marginBottom: verticalMargin,
16
- $nest: {
17
- ul: {
18
- listStyle: 'none',
19
- margin: 0,
20
- padding: 0,
21
- textAlign: 'left'
22
- },
23
- li: {
24
- overflow: 'hidden',
25
- textOverflow: 'ellipsis',
26
- marginTop: verticalMargin
27
- }
18
+ ul: {
19
+ listStyle: 'none',
20
+ margin: 0,
21
+ padding: 0,
22
+ textAlign: 'left'
23
+ },
24
+ li: {
25
+ overflow: 'hidden',
26
+ textOverflow: 'ellipsis',
27
+ marginTop: verticalMargin
28
28
  }
29
29
  });
30
- var emojiNameStyle = style({
30
+ var emojiNameStyle = css({
31
31
  textTransform: 'capitalize',
32
32
  color: token('color.text.inverse', N90),
33
33
  fontWeight: 600
34
34
  });
35
- var footerStyle = style({
35
+ var footerStyle = css({
36
36
  color: token('color.text.inverse', N90),
37
37
  fontWeight: 300
38
38
  });
@@ -43,25 +43,25 @@ export var ReactionTooltip = function ReactionTooltip(_ref) {
43
43
  users = _ref.reaction.users;
44
44
 
45
45
  if (!users || users.length === 0) {
46
- return /*#__PURE__*/React.createElement(React.Fragment, null, React.Children.only(children));
46
+ return jsx(Fragment, null, React.Children.only(children));
47
47
  }
48
48
 
49
- var content = /*#__PURE__*/React.createElement("div", {
50
- className: tooltipStyle
51
- }, /*#__PURE__*/React.createElement("ul", null, emojiName ? /*#__PURE__*/React.createElement("li", {
52
- className: emojiNameStyle
49
+ var content = jsx("div", {
50
+ css: tooltipStyle
51
+ }, jsx("ul", null, emojiName ? jsx("li", {
52
+ css: emojiNameStyle
53
53
  }, emojiName) : null, users.slice(0, TOOLTIP_USERS_LIMIT).map(function (user, index) {
54
- return /*#__PURE__*/React.createElement("li", {
54
+ return jsx("li", {
55
55
  key: index
56
56
  }, user.displayName);
57
- }), users.length > TOOLTIP_USERS_LIMIT ? /*#__PURE__*/React.createElement("li", {
58
- className: footerStyle
59
- }, /*#__PURE__*/React.createElement(FormattedMessage, _extends({}, messages.otherUsers, {
57
+ }), users.length > TOOLTIP_USERS_LIMIT ? jsx("li", {
58
+ css: footerStyle
59
+ }, jsx(FormattedMessage, _extends({}, messages.otherUsers, {
60
60
  values: {
61
61
  count: users.length - TOOLTIP_USERS_LIMIT
62
62
  }
63
63
  }))) : null));
64
- return /*#__PURE__*/React.createElement(Tooltip, {
64
+ return jsx(Tooltip, {
65
65
  content: content,
66
66
  position: "bottom"
67
67
  }, React.Children.only(children));
@@ -10,22 +10,23 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
10
10
 
11
11
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
12
12
 
13
+ /** @jsx jsx */
14
+ import { jsx, css } from '@emotion/core';
13
15
  import { withAnalyticsEvents } from '@atlaskit/analytics-next';
14
16
  import Tooltip from '@atlaskit/tooltip';
15
17
  import React from 'react';
16
18
  import { FormattedMessage } from 'react-intl-next';
17
- import { style } from 'typestyle';
18
19
  import { createAndFireSafe, createPickerButtonClickedEvent, createPickerCancelledEvent, createPickerMoreClickedEvent, createReactionSelectionEvent, createReactionsRenderedEvent } from '../analytics';
19
20
  import { ReactionStatus } from '../types/ReactionStatus';
20
21
  import { messages } from './i18n';
21
22
  import { Reaction } from './Reaction';
22
23
  import { ReactionPicker } from './ReactionPicker';
23
- var reactionStyle = style({
24
+ var reactionStyle = css({
24
25
  display: 'inline-block',
25
26
  // top margin of 2px to allow spacing between rows when wrapped (paired with top margin in reactionsStyle)
26
27
  margin: '2px 4px 0 4px'
27
28
  });
28
- var reactionsStyle = style({
29
+ var reactionsStyle = css({
29
30
  display: 'flex',
30
31
  flexWrap: 'wrap',
31
32
  position: 'relative',
@@ -33,10 +34,8 @@ var reactionsStyle = style({
33
34
  borderRadius: '15px',
34
35
  // To allow to row spacing of 2px on wrap, and 0px on first row
35
36
  marginTop: '-2px',
36
- $nest: {
37
- '& > :first-child': {
38
- marginLeft: 0
39
- }
37
+ '& > :first-of-type': {
38
+ marginLeft: 0
40
39
  }
41
40
  });
42
41
  export var ReactionsWithoutAnalytics = /*#__PURE__*/function (_React$PureComponent) {
@@ -69,11 +68,11 @@ export var ReactionsWithoutAnalytics = /*#__PURE__*/function (_React$PureCompone
69
68
 
70
69
  switch (status) {
71
70
  case ReactionStatus.error:
72
- return errorMessage ? errorMessage : /*#__PURE__*/React.createElement(FormattedMessage, messages.unexpectedError);
71
+ return errorMessage ? errorMessage : jsx(FormattedMessage, messages.unexpectedError);
73
72
 
74
73
  case ReactionStatus.loading:
75
74
  case ReactionStatus.notLoaded:
76
- return /*#__PURE__*/React.createElement(FormattedMessage, messages.loadingReactions);
75
+ return jsx(FormattedMessage, messages.loadingReactions);
77
76
 
78
77
  default:
79
78
  return undefined;
@@ -112,9 +111,9 @@ export var ReactionsWithoutAnalytics = /*#__PURE__*/function (_React$PureCompone
112
111
  });
113
112
 
114
113
  _defineProperty(_assertThisInitialized(_this), "renderReaction", function (reaction) {
115
- return /*#__PURE__*/React.createElement(Reaction, {
114
+ return jsx(Reaction, {
116
115
  key: reaction.emojiId,
117
- className: reactionStyle,
116
+ css: reactionStyle,
118
117
  reaction: reaction,
119
118
  emojiProvider: _this.props.emojiProvider,
120
119
  onClick: _this.props.onReactionClick,
@@ -144,10 +143,10 @@ export var ReactionsWithoutAnalytics = /*#__PURE__*/function (_React$PureCompone
144
143
  emojiProvider = _this$props2.emojiProvider,
145
144
  boundariesElement = _this$props2.boundariesElement,
146
145
  allowAllEmojis = _this$props2.allowAllEmojis;
147
- return /*#__PURE__*/React.createElement(Tooltip, {
146
+ return jsx(Tooltip, {
148
147
  content: this.getTooltip()
149
- }, /*#__PURE__*/React.createElement(ReactionPicker, {
150
- className: reactionStyle,
148
+ }, jsx(ReactionPicker, {
149
+ css: reactionStyle,
151
150
  emojiProvider: emojiProvider,
152
151
  miniMode: true,
153
152
  boundariesElement: boundariesElement,
@@ -162,8 +161,8 @@ export var ReactionsWithoutAnalytics = /*#__PURE__*/function (_React$PureCompone
162
161
  }, {
163
162
  key: "render",
164
163
  value: function render() {
165
- return /*#__PURE__*/React.createElement("div", {
166
- className: reactionsStyle
164
+ return jsx("div", {
165
+ css: reactionsStyle
167
166
  }, this.props.reactions.map(this.renderReaction), this.renderPicker());
168
167
  }
169
168
  }]);
@@ -10,27 +10,26 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
10
10
 
11
11
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
12
12
 
13
+ /** @jsx jsx */
14
+ import { jsx, css, keyframes } from '@emotion/core';
13
15
  import Tooltip from '@atlaskit/tooltip';
14
- import cx from 'classnames';
15
16
  import React from 'react';
16
17
  import { PureComponent } from 'react';
17
- import { keyframes, style } from 'typestyle';
18
18
  import { EmojiButton } from './EmojiButton';
19
19
  import { ShowMore } from './ShowMore';
20
20
  import { equalEmojiId } from './utils';
21
- var selectorStyle = style({
21
+ export var renderEmojiTestId = 'render-emoji';
22
+ var selectorStyle = css({
22
23
  boxSizing: 'border-box',
23
24
  display: 'flex',
24
25
  padding: 0
25
26
  });
26
- var emojiStyle = style({
27
+ var emojiStyle = css({
27
28
  display: 'inline-block',
28
29
  opacity: 0,
29
- $nest: {
30
- '&.selected': {
31
- transition: 'transform 200ms ease-in-out ',
32
- transform: 'translateY(-48px) scale(2.667)'
33
- }
30
+ '&.selected': {
31
+ transition: 'transform 200ms ease-in-out ',
32
+ transform: 'translateY(-48px) scale(2.667)'
34
33
  }
35
34
  });
36
35
  var revealAnimation = keyframes({
@@ -46,7 +45,7 @@ var revealAnimation = keyframes({
46
45
  transform: 'scale(1)'
47
46
  }
48
47
  });
49
- export var revealStyle = style({
48
+ export var revealStyle = css({
50
49
  animation: "".concat(revealAnimation, " 150ms ease-in-out forwards")
51
50
  });
52
51
 
@@ -108,17 +107,16 @@ export var Selector = /*#__PURE__*/function (_PureComponent) {
108
107
  _defineProperty(_assertThisInitialized(_this), "renderEmoji", function (emojiId, index) {
109
108
  var emojiProvider = _this.props.emojiProvider;
110
109
  var key = emojiId.id || emojiId.shortName;
111
- var classNames = cx(emojiStyle, revealStyle, {
112
- selected: emojiId === _this.state.selection
113
- });
114
110
  var style = revealDelay(index);
115
- return /*#__PURE__*/React.createElement("div", {
111
+ return jsx("div", {
116
112
  key: key,
117
- className: classNames,
118
- style: style
119
- }, /*#__PURE__*/React.createElement(Tooltip, {
113
+ className: emojiId === _this.state.selection ? 'selected' : '',
114
+ css: [emojiStyle, revealStyle],
115
+ style: style,
116
+ "data-testid": renderEmojiTestId
117
+ }, jsx(Tooltip, {
120
118
  content: emojiId.shortName
121
- }, /*#__PURE__*/React.createElement(EmojiButton, {
119
+ }, jsx(EmojiButton, {
122
120
  emojiId: emojiId,
123
121
  emojiProvider: emojiProvider,
124
122
  onClick: _this.onEmojiSelected
@@ -126,11 +124,9 @@ export var Selector = /*#__PURE__*/function (_PureComponent) {
126
124
  });
127
125
 
128
126
  _defineProperty(_assertThisInitialized(_this), "renderShowMore", function () {
129
- return /*#__PURE__*/React.createElement(ShowMore, {
127
+ return jsx(ShowMore, {
130
128
  key: "more",
131
- className: {
132
- button: revealStyle
133
- },
129
+ revealStyle: revealStyle,
134
130
  style: {
135
131
  button: revealDelay(defaultReactions.length)
136
132
  },
@@ -154,8 +150,8 @@ export var Selector = /*#__PURE__*/function (_PureComponent) {
154
150
  key: "render",
155
151
  value: function render() {
156
152
  var showMore = this.props.showMore;
157
- return /*#__PURE__*/React.createElement("div", {
158
- className: selectorStyle
153
+ return jsx("div", {
154
+ css: selectorStyle
159
155
  }, defaultReactions.map(this.renderEmoji), showMore ? this.renderShowMore() : null);
160
156
  }
161
157
  }]);
@@ -9,20 +9,21 @@ function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflec
9
9
 
10
10
  function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
11
11
 
12
+ /** @jsx jsx */
13
+ import { jsx, css } from '@emotion/core';
12
14
  import EditorMoreIcon from '@atlaskit/icon/glyph/editor/more';
13
15
  import { borderRadius } from '@atlaskit/theme/constants';
14
16
  import { N30A } from '@atlaskit/theme/colors';
15
17
  import { token } from '@atlaskit/tokens';
16
18
  import Tooltip from '@atlaskit/tooltip';
17
- import cx from 'classnames';
18
19
  import React from 'react';
19
- import { style } from 'typestyle';
20
20
  import { messages } from './i18n';
21
21
  import { FormattedMessage } from 'react-intl-next';
22
- var moreEmojiContainerStyle = style({
22
+ import { revealStyle } from './Selector';
23
+ var moreEmojiContainerStyle = css({
23
24
  display: 'flex'
24
25
  });
25
- var moreButtonStyle = style({
26
+ var moreButtonStyle = css({
26
27
  opacity: 0,
27
28
  outline: 'none',
28
29
  backgroundColor: 'transparent',
@@ -33,19 +34,18 @@ var moreButtonStyle = style({
33
34
  padding: '4px',
34
35
  width: '38px',
35
36
  verticalAlign: 'top',
36
- $nest: {
37
- '&:hover': {
38
- backgroundColor: token('color.background.neutral.subtle.hovered', N30A)
39
- }
37
+ '&:hover': {
38
+ backgroundColor: token('color.background.neutral.subtle.hovered', N30A)
40
39
  }
41
40
  });
42
- var separatorStyle = style({
41
+ var separatorStyle = css({
43
42
  backgroundColor: token('color.border', N30A),
44
43
  margin: '8px 8px 8px 4px',
45
44
  width: '1px',
46
45
  height: '60%',
47
46
  display: 'inline-block'
48
47
  });
48
+ export var showMoreTestId = 'show-more-button';
49
49
  export var ShowMore = /*#__PURE__*/function (_React$PureComponent) {
50
50
  _inherits(ShowMore, _React$PureComponent);
51
51
 
@@ -64,19 +64,22 @@ export var ShowMore = /*#__PURE__*/function (_React$PureComponent) {
64
64
  style = _this$props.style,
65
65
  onClick = _this$props.onClick,
66
66
  classNameProp = _this$props.className;
67
- return /*#__PURE__*/React.createElement("div", {
68
- className: cx(moreEmojiContainerStyle, classNameProp.container),
67
+ return jsx("div", {
68
+ className: classNameProp.container,
69
+ css: moreEmojiContainerStyle,
69
70
  style: style.container
70
- }, /*#__PURE__*/React.createElement("div", {
71
- className: separatorStyle
72
- }), /*#__PURE__*/React.createElement(FormattedMessage, messages.moreEmoji, function (text) {
73
- return /*#__PURE__*/React.createElement(Tooltip, {
71
+ }, jsx("div", {
72
+ css: separatorStyle
73
+ }), jsx(FormattedMessage, messages.moreEmoji, function (text) {
74
+ return jsx(Tooltip, {
74
75
  content: text
75
- }, /*#__PURE__*/React.createElement("button", {
76
- className: cx(moreButtonStyle, classNameProp.button),
76
+ }, jsx("button", {
77
+ className: classNameProp.button,
78
+ css: [moreButtonStyle, revealStyle],
77
79
  style: style.button,
78
- onMouseDown: onClick
79
- }, /*#__PURE__*/React.createElement(EditorMoreIcon, {
80
+ onMouseDown: onClick,
81
+ "data-testid": showMoreTestId
82
+ }, jsx(EditorMoreIcon, {
80
83
  label: "More"
81
84
  })));
82
85
  }));
@@ -1,20 +1,18 @@
1
+ /** @jsx jsx */
2
+ import { jsx, css } from '@emotion/core';
1
3
  import Button from '@atlaskit/button/standard-button';
2
4
  import EmojiAddIcon from '@atlaskit/icon/glyph/emoji-add';
3
- import cx from 'classnames';
4
5
  import React from 'react';
5
- import { style } from 'typestyle';
6
- var triggerStyle = style({
6
+ var triggerStyle = css({
7
7
  width: '32px',
8
8
  height: '32px',
9
9
  display: 'flex',
10
10
  justifyContent: 'center',
11
11
  alignItems: 'center',
12
12
  lineHeight: '16px',
13
- $nest: {
14
- '&.miniMode': {
15
- width: '24px',
16
- height: '24px'
17
- }
13
+ '&.miniMode': {
14
+ width: '24px',
15
+ height: '24px'
18
16
  }
19
17
  });
20
18
  export var Trigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
@@ -28,15 +26,13 @@ export var Trigger = /*#__PURE__*/React.forwardRef(function (props, ref) {
28
26
  }
29
27
  };
30
28
 
31
- var classNames = cx(triggerStyle, {
32
- miniMode: miniMode
33
- });
34
- return /*#__PURE__*/React.createElement(Button, {
35
- className: classNames,
29
+ return jsx(Button, {
30
+ className: miniMode ? 'miniMode' : '',
31
+ css: triggerStyle,
36
32
  appearance: "subtle",
37
33
  onClick: handleMouseDown,
38
34
  isDisabled: disabled,
39
- iconBefore: /*#__PURE__*/React.createElement(EmojiAddIcon, {
35
+ iconBefore: jsx(EmojiAddIcon, {
40
36
  size: "small",
41
37
  label: "Add reaction"
42
38
  }),
@@ -0,0 +1,54 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/createClass";
3
+ import _inherits from "@babel/runtime/helpers/inherits";
4
+ import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
5
+ import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
6
+
7
+ function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
8
+
9
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
10
+
11
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
12
+
13
+ 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); }; }
14
+
15
+ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
16
+
17
+ import React from 'react';
18
+ export var UfoErrorBoundary = /*#__PURE__*/function (_React$Component) {
19
+ _inherits(UfoErrorBoundary, _React$Component);
20
+
21
+ var _super = _createSuper(UfoErrorBoundary);
22
+
23
+ function UfoErrorBoundary() {
24
+ _classCallCheck(this, UfoErrorBoundary);
25
+
26
+ return _super.apply(this, arguments);
27
+ }
28
+
29
+ _createClass(UfoErrorBoundary, [{
30
+ key: "componentDidCatch",
31
+ value: function componentDidCatch() {
32
+ var _iterator = _createForOfIteratorHelper(this.props.experiences),
33
+ _step;
34
+
35
+ try {
36
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
37
+ var e = _step.value;
38
+ e.failure();
39
+ }
40
+ } catch (err) {
41
+ _iterator.e(err);
42
+ } finally {
43
+ _iterator.f();
44
+ }
45
+ }
46
+ }, {
47
+ key: "render",
48
+ value: function render() {
49
+ return this.props.children;
50
+ }
51
+ }]);
52
+
53
+ return UfoErrorBoundary;
54
+ }(React.Component);
@@ -1,3 +1,4 @@
1
1
  export { Reaction } from './Reaction';
2
2
  export { ReactionPicker } from './ReactionPicker';
3
- export { Reactions } from './Reactions';
3
+ export { Reactions } from './Reactions';
4
+ export { UfoErrorBoundary } from './UfoErrorBoundary';
@@ -0,0 +1,29 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React from 'react';
3
+ import { ReactionPicker, UfoErrorBoundary } from '../components';
4
+ import { ReactionConsumer } from '../store/ReactionConsumer';
5
+ import { UFO } from '../analytics';
6
+
7
+ /**
8
+ * UFO Instance for picker
9
+ */
10
+ export var ConnectedReactionPicker = function ConnectedReactionPicker(props) {
11
+ var renderChild = function renderChild(innerProps) {
12
+ return /*#__PURE__*/React.createElement(ReactionPicker, _extends({}, props, innerProps));
13
+ };
14
+
15
+ var actionsMapper = function actionsMapper(actions) {
16
+ return {
17
+ onSelection: function onSelection(emojiId) {
18
+ actions.addReaction(props.containerAri, props.ari, emojiId);
19
+ }
20
+ };
21
+ };
22
+
23
+ return /*#__PURE__*/React.createElement(UfoErrorBoundary, {
24
+ experiences: [UFO.PickerRender]
25
+ }, /*#__PURE__*/React.createElement(ReactionConsumer, {
26
+ store: props.store,
27
+ actionsMapper: actionsMapper
28
+ }, renderChild));
29
+ };
@@ -0,0 +1,108 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import React, { useEffect, useRef } from 'react';
3
+ import { FabricElementsAnalyticsContext } from '@atlaskit/analytics-namespaced-context';
4
+ import { withAnalyticsEvents } from '@atlaskit/analytics-next';
5
+ import { Reactions, UfoErrorBoundary } from '../components';
6
+ import { ReactionConsumer } from '../store/ReactionConsumer';
7
+ import { ReactionStatus } from '../types/ReactionStatus';
8
+ import { ufoExperiences } from '../store/ReactionsStore';
9
+
10
+ var ReactionsView = function ReactionsView(props) {
11
+ // // compose a UFO experience object
12
+ var experienceInstance = useRef();
13
+ var ari = props.ari,
14
+ createAnalyticsEvent = props.createAnalyticsEvent,
15
+ store = props.store;
16
+ useEffect(function () {
17
+ experienceInstance.current = ufoExperiences.render.getInstance(ari);
18
+ }, [ari]);
19
+ useEffect(function () {
20
+ Promise.resolve(store).then(function (_store) {
21
+ if (_store.setCreateAnalyticsEvent && createAnalyticsEvent) {
22
+ _store.setCreateAnalyticsEvent(createAnalyticsEvent);
23
+ }
24
+ });
25
+ }, [createAnalyticsEvent, store]); // abort when component gets unmounted
26
+
27
+ useEffect(function () {
28
+ return function () {
29
+ var _experienceInstance$c;
30
+
31
+ (_experienceInstance$c = experienceInstance.current) === null || _experienceInstance$c === void 0 ? void 0 : _experienceInstance$c.abort();
32
+ };
33
+ }, [experienceInstance]);
34
+
35
+ var renderChildren = function renderChildren(innerProps) {
36
+ var containerAri = props.containerAri,
37
+ ari = props.ari;
38
+ return /*#__PURE__*/React.createElement(FabricElementsAnalyticsContext, {
39
+ data: {
40
+ containerAri: containerAri,
41
+ ari: ari
42
+ }
43
+ }, /*#__PURE__*/React.createElement(Reactions, _extends({
44
+ key: "".concat(props.containerAri, "|").concat(props.ari)
45
+ }, props, innerProps)));
46
+ };
47
+
48
+ var stateMapper = function stateMapper(state) {
49
+ var containerAri = props.containerAri,
50
+ ari = props.ari;
51
+ var reactionsState = state && state.reactions["".concat(containerAri, "|").concat(ari)];
52
+
53
+ if (!state || !reactionsState) {
54
+ return {
55
+ status: ReactionStatus.notLoaded,
56
+ reactions: []
57
+ };
58
+ }
59
+
60
+ switch (reactionsState.status) {
61
+ case ReactionStatus.ready:
62
+ return {
63
+ reactions: reactionsState.reactions,
64
+ status: reactionsState.status,
65
+ flash: state.flash["".concat(containerAri, "|").concat(ari)]
66
+ };
67
+
68
+ case ReactionStatus.error:
69
+ return {
70
+ status: ReactionStatus.error,
71
+ reactions: []
72
+ };
73
+
74
+ default:
75
+ return {
76
+ status: ReactionStatus.loading,
77
+ reactions: []
78
+ };
79
+ }
80
+ };
81
+
82
+ var actionsMapper = function actionsMapper(actions) {
83
+ return {
84
+ loadReaction: function loadReaction() {
85
+ actions.getReactions(props.containerAri, props.ari);
86
+ },
87
+ onReactionClick: function onReactionClick(emojiId) {
88
+ actions.toggleReaction(props.containerAri, props.ari, emojiId);
89
+ },
90
+ onReactionHover: function onReactionHover(emojiId) {
91
+ actions.getDetailedReaction(props.containerAri, props.ari, emojiId);
92
+ },
93
+ onSelection: function onSelection(emojiId) {
94
+ actions.addReaction(props.containerAri, props.ari, emojiId);
95
+ }
96
+ };
97
+ };
98
+
99
+ return /*#__PURE__*/React.createElement(UfoErrorBoundary, {
100
+ experiences: experienceInstance.current ? [experienceInstance.current] : []
101
+ }, /*#__PURE__*/React.createElement(ReactionConsumer, {
102
+ store: props.store,
103
+ actionsMapper: actionsMapper,
104
+ stateMapper: stateMapper
105
+ }, renderChildren));
106
+ };
107
+
108
+ export var ConnectedReactionsView = withAnalyticsEvents()(ReactionsView);
@@ -1,2 +1,2 @@
1
- export { default as ConnectedReactionPicker } from './ReactionsPickerContainer';
2
- export { default as ConnectedReactionsView } from './ReactionsContainer';
1
+ export { ConnectedReactionPicker } from './ConnectedReactionPicker';
2
+ export { ConnectedReactionsView } from './ConnectedReactionsView';
@@ -1,12 +1,13 @@
1
1
  /**
2
2
  * NOTE:
3
3
  *
4
- * This file is automatically generated by i18n-tools.
4
+ * This file is automatically generated by Traduki 2.0.
5
5
  * DO NOT CHANGE IT BY HAND or your changes will be lost.
6
6
  */
7
- // Czech
7
+ //Czech
8
8
  export default {
9
9
  'fabric.reactions.error.unexpected': 'Něco se pokazilo',
10
10
  'fabric.reactions.loading': 'Načítání...',
11
- 'fabric.reactions.more.emoji': 'Více emoji'
11
+ 'fabric.reactions.more.emoji': 'Více emoji',
12
+ 'fabric.reactions.other.reacted.users': '{count, plural, one {a jeden další} few {a {count} další} many {a {count} dalšího} other {a {count} dalších}}'
12
13
  };
@@ -1,12 +1,13 @@
1
1
  /**
2
2
  * NOTE:
3
3
  *
4
- * This file is automatically generated by i18n-tools.
4
+ * This file is automatically generated by Traduki 2.0.
5
5
  * DO NOT CHANGE IT BY HAND or your changes will be lost.
6
6
  */
7
- // Danish
7
+ //Danish (Denmark)
8
8
  export default {
9
9
  'fabric.reactions.error.unexpected': 'Noget gik galt',
10
10
  'fabric.reactions.loading': 'Indlæser ...',
11
- 'fabric.reactions.more.emoji': 'Flere emoji'
11
+ 'fabric.reactions.more.emoji': 'Flere emoji',
12
+ 'fabric.reactions.other.reacted.users': '{count, plural, one {og én anden} other {og {count} andre}}'
12
13
  };