@atlaskit/reactions 21.0.5 → 21.2.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 (105) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/dist/cjs/analytics/index.js +11 -1
  3. package/dist/cjs/analytics/ufo.js +71 -0
  4. package/dist/cjs/components/Counter.js +20 -20
  5. package/dist/cjs/components/EmojiButton.js +9 -11
  6. package/dist/cjs/components/FlashAnimation.js +19 -17
  7. package/dist/cjs/components/Reaction.js +22 -28
  8. package/dist/cjs/components/ReactionPicker.js +43 -37
  9. package/dist/cjs/components/ReactionTooltip.js +33 -29
  10. package/dist/cjs/components/Reactions.js +15 -17
  11. package/dist/cjs/components/Selector.js +23 -28
  12. package/dist/cjs/components/ShowMore.js +25 -22
  13. package/dist/cjs/components/Trigger.js +11 -16
  14. package/dist/cjs/components/UfoErrorBoundary.js +68 -0
  15. package/dist/cjs/components/index.js +9 -1
  16. package/dist/cjs/containers/ConnectedReactionPicker.js +44 -0
  17. package/dist/cjs/containers/ConnectedReactionsView.js +131 -0
  18. package/dist/cjs/containers/index.js +4 -6
  19. package/dist/cjs/index.js +11 -3
  20. package/dist/cjs/{reaction-store → store}/ReactionConsumer.js +0 -0
  21. package/dist/cjs/{reaction-store → store}/ReactionsStore.js +63 -14
  22. package/dist/cjs/{reaction-store → store}/batched.js +0 -0
  23. package/dist/cjs/{reaction-store → store}/index.js +0 -0
  24. package/dist/cjs/{reaction-store → store}/utils.js +0 -0
  25. package/dist/cjs/version.json +1 -1
  26. package/dist/es2019/analytics/index.js +2 -0
  27. package/dist/es2019/analytics/ufo.js +62 -0
  28. package/dist/es2019/components/Counter.js +18 -18
  29. package/dist/es2019/components/EmojiButton.js +10 -10
  30. package/dist/es2019/components/FlashAnimation.js +16 -15
  31. package/dist/es2019/components/Reaction.js +23 -28
  32. package/dist/es2019/components/ReactionPicker.js +39 -34
  33. package/dist/es2019/components/ReactionTooltip.js +27 -27
  34. package/dist/es2019/components/Reactions.js +16 -16
  35. package/dist/es2019/components/Selector.js +21 -24
  36. package/dist/es2019/components/ShowMore.js +22 -18
  37. package/dist/es2019/components/Trigger.js +10 -14
  38. package/dist/es2019/components/UfoErrorBoundary.js +13 -0
  39. package/dist/es2019/components/index.js +2 -1
  40. package/dist/es2019/containers/ConnectedReactionPicker.js +27 -0
  41. package/dist/es2019/containers/ConnectedReactionsView.js +112 -0
  42. package/dist/es2019/containers/index.js +2 -2
  43. package/dist/es2019/index.js +2 -1
  44. package/dist/es2019/{reaction-store → store}/ReactionConsumer.js +0 -0
  45. package/dist/es2019/{reaction-store → store}/ReactionsStore.js +59 -13
  46. package/dist/es2019/{reaction-store → store}/batched.js +0 -0
  47. package/dist/es2019/{reaction-store → store}/index.js +0 -0
  48. package/dist/es2019/{reaction-store → store}/utils.js +0 -0
  49. package/dist/es2019/version.json +1 -1
  50. package/dist/esm/analytics/index.js +2 -0
  51. package/dist/esm/analytics/ufo.js +62 -0
  52. package/dist/esm/components/Counter.js +18 -17
  53. package/dist/esm/components/EmojiButton.js +9 -10
  54. package/dist/esm/components/FlashAnimation.js +16 -14
  55. package/dist/esm/components/Reaction.js +22 -26
  56. package/dist/esm/components/ReactionPicker.js +39 -34
  57. package/dist/esm/components/ReactionTooltip.js +27 -27
  58. package/dist/esm/components/Reactions.js +15 -16
  59. package/dist/esm/components/Selector.js +20 -24
  60. package/dist/esm/components/ShowMore.js +22 -19
  61. package/dist/esm/components/Trigger.js +10 -14
  62. package/dist/esm/components/UfoErrorBoundary.js +54 -0
  63. package/dist/esm/components/index.js +2 -1
  64. package/dist/esm/containers/ConnectedReactionPicker.js +29 -0
  65. package/dist/esm/containers/ConnectedReactionsView.js +108 -0
  66. package/dist/esm/containers/index.js +2 -2
  67. package/dist/esm/index.js +2 -1
  68. package/dist/esm/{reaction-store → store}/ReactionConsumer.js +0 -0
  69. package/dist/esm/{reaction-store → store}/ReactionsStore.js +61 -13
  70. package/dist/esm/{reaction-store → store}/batched.js +0 -0
  71. package/dist/esm/{reaction-store → store}/index.js +0 -0
  72. package/dist/esm/{reaction-store → store}/utils.js +0 -0
  73. package/dist/esm/version.json +1 -1
  74. package/dist/types/analytics/index.d.ts +1 -0
  75. package/dist/types/analytics/ufo.d.ts +26 -0
  76. package/dist/types/components/Counter.d.ts +4 -3
  77. package/dist/types/components/FlashAnimation.d.ts +3 -1
  78. package/dist/types/components/ReactionPicker.d.ts +2 -1
  79. package/dist/types/components/Reactions.d.ts +7 -5
  80. package/dist/types/components/Selector.d.ts +2 -1
  81. package/dist/types/components/ShowMore.d.ts +4 -0
  82. package/dist/types/components/UfoErrorBoundary.d.ts +8 -0
  83. package/dist/types/components/index.d.ts +2 -0
  84. package/dist/types/containers/ConnectedReactionPicker.d.ts +10 -0
  85. package/dist/types/containers/ConnectedReactionsView.d.ts +19 -0
  86. package/dist/types/containers/index.d.ts +2 -2
  87. package/dist/types/index.d.ts +3 -2
  88. package/dist/types/store/ReactionConsumer.d.ts +29 -0
  89. package/dist/types/{reaction-store → store}/ReactionsStore.d.ts +11 -7
  90. package/dist/types/{reaction-store → store}/batched.d.ts +0 -0
  91. package/dist/types/{reaction-store → store}/index.d.ts +0 -0
  92. package/dist/types/{reaction-store → store}/utils.d.ts +0 -0
  93. package/dist/types/types/Actions.d.ts +6 -0
  94. package/dist/types/types/index.d.ts +1 -1
  95. package/docs/0-intro.tsx +1 -1
  96. package/package.json +7 -6
  97. package/dist/cjs/containers/ReactionsContainer.js +0 -142
  98. package/dist/cjs/containers/ReactionsPickerContainer.js +0 -76
  99. package/dist/es2019/containers/ReactionsContainer.js +0 -96
  100. package/dist/es2019/containers/ReactionsPickerContainer.js +0 -26
  101. package/dist/esm/containers/ReactionsContainer.js +0 -125
  102. package/dist/esm/containers/ReactionsPickerContainer.js +0 -62
  103. package/dist/types/containers/ReactionsContainer.d.ts +0 -22
  104. package/dist/types/containers/ReactionsPickerContainer.d.ts +0 -18
  105. package/dist/types/reaction-store/ReactionConsumer.d.ts +0 -32
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.ConnectedReactionsView = void 0;
11
+
12
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _analyticsNamespacedContext = require("@atlaskit/analytics-namespaced-context");
17
+
18
+ var _analyticsNext = require("@atlaskit/analytics-next");
19
+
20
+ var _components = require("../components");
21
+
22
+ var _ReactionConsumer = require("../store/ReactionConsumer");
23
+
24
+ var _ReactionStatus = require("../types/ReactionStatus");
25
+
26
+ var _ReactionsStore = require("../store/ReactionsStore");
27
+
28
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
29
+
30
+ 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; }
31
+
32
+ var ReactionsView = function ReactionsView(props) {
33
+ // // compose a UFO experience object
34
+ var experienceInstance = (0, _react.useRef)();
35
+ var ari = props.ari,
36
+ createAnalyticsEvent = props.createAnalyticsEvent,
37
+ store = props.store;
38
+ (0, _react.useEffect)(function () {
39
+ experienceInstance.current = _ReactionsStore.ufoExperiences.render.getInstance(ari);
40
+ }, [ari]);
41
+ (0, _react.useEffect)(function () {
42
+ Promise.resolve(store).then(function (_store) {
43
+ if (_store.setCreateAnalyticsEvent && createAnalyticsEvent) {
44
+ _store.setCreateAnalyticsEvent(createAnalyticsEvent);
45
+ }
46
+ });
47
+ }, [createAnalyticsEvent, store]); // abort when component gets unmounted
48
+
49
+ (0, _react.useEffect)(function () {
50
+ return function () {
51
+ var _experienceInstance$c;
52
+
53
+ (_experienceInstance$c = experienceInstance.current) === null || _experienceInstance$c === void 0 ? void 0 : _experienceInstance$c.abort();
54
+ };
55
+ }, [experienceInstance]);
56
+
57
+ var renderChildren = function renderChildren(innerProps) {
58
+ var containerAri = props.containerAri,
59
+ ari = props.ari;
60
+ return /*#__PURE__*/_react.default.createElement(_analyticsNamespacedContext.FabricElementsAnalyticsContext, {
61
+ data: {
62
+ containerAri: containerAri,
63
+ ari: ari
64
+ }
65
+ }, /*#__PURE__*/_react.default.createElement(_components.Reactions, (0, _extends2.default)({
66
+ key: "".concat(props.containerAri, "|").concat(props.ari)
67
+ }, props, innerProps)));
68
+ };
69
+
70
+ var stateMapper = function stateMapper(state) {
71
+ var containerAri = props.containerAri,
72
+ ari = props.ari;
73
+ var reactionsState = state && state.reactions["".concat(containerAri, "|").concat(ari)];
74
+
75
+ if (!state || !reactionsState) {
76
+ return {
77
+ status: _ReactionStatus.ReactionStatus.notLoaded,
78
+ reactions: []
79
+ };
80
+ }
81
+
82
+ switch (reactionsState.status) {
83
+ case _ReactionStatus.ReactionStatus.ready:
84
+ return {
85
+ reactions: reactionsState.reactions,
86
+ status: reactionsState.status,
87
+ flash: state.flash["".concat(containerAri, "|").concat(ari)]
88
+ };
89
+
90
+ case _ReactionStatus.ReactionStatus.error:
91
+ return {
92
+ status: _ReactionStatus.ReactionStatus.error,
93
+ reactions: []
94
+ };
95
+
96
+ default:
97
+ return {
98
+ status: _ReactionStatus.ReactionStatus.loading,
99
+ reactions: []
100
+ };
101
+ }
102
+ };
103
+
104
+ var actionsMapper = function actionsMapper(actions) {
105
+ return {
106
+ loadReaction: function loadReaction() {
107
+ actions.getReactions(props.containerAri, props.ari);
108
+ },
109
+ onReactionClick: function onReactionClick(emojiId) {
110
+ actions.toggleReaction(props.containerAri, props.ari, emojiId);
111
+ },
112
+ onReactionHover: function onReactionHover(emojiId) {
113
+ actions.getDetailedReaction(props.containerAri, props.ari, emojiId);
114
+ },
115
+ onSelection: function onSelection(emojiId) {
116
+ actions.addReaction(props.containerAri, props.ari, emojiId);
117
+ }
118
+ };
119
+ };
120
+
121
+ return /*#__PURE__*/_react.default.createElement(_components.UfoErrorBoundary, {
122
+ experiences: experienceInstance.current ? [experienceInstance.current] : []
123
+ }, /*#__PURE__*/_react.default.createElement(_ReactionConsumer.ReactionConsumer, {
124
+ store: props.store,
125
+ actionsMapper: actionsMapper,
126
+ stateMapper: stateMapper
127
+ }, renderChildren));
128
+ };
129
+
130
+ var ConnectedReactionsView = (0, _analyticsNext.withAnalyticsEvents)()(ReactionsView);
131
+ exports.ConnectedReactionsView = ConnectedReactionsView;
@@ -1,23 +1,21 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
3
  Object.defineProperty(exports, "__esModule", {
6
4
  value: true
7
5
  });
8
6
  Object.defineProperty(exports, "ConnectedReactionPicker", {
9
7
  enumerable: true,
10
8
  get: function get() {
11
- return _ReactionsPickerContainer.default;
9
+ return _ConnectedReactionPicker.ConnectedReactionPicker;
12
10
  }
13
11
  });
14
12
  Object.defineProperty(exports, "ConnectedReactionsView", {
15
13
  enumerable: true,
16
14
  get: function get() {
17
- return _ReactionsContainer.default;
15
+ return _ConnectedReactionsView.ConnectedReactionsView;
18
16
  }
19
17
  });
20
18
 
21
- var _ReactionsPickerContainer = _interopRequireDefault(require("./ReactionsPickerContainer"));
19
+ var _ConnectedReactionPicker = require("./ConnectedReactionPicker");
22
20
 
23
- var _ReactionsContainer = _interopRequireDefault(require("./ReactionsContainer"));
21
+ var _ConnectedReactionsView = require("./ConnectedReactionsView");
package/dist/cjs/index.js CHANGED
@@ -18,7 +18,7 @@ Object.defineProperty(exports, "ConnectedReactionsView", {
18
18
  Object.defineProperty(exports, "MemoryReactionsStore", {
19
19
  enumerable: true,
20
20
  get: function get() {
21
- return _reactionStore.MemoryReactionsStore;
21
+ return _store.MemoryReactionsStore;
22
22
  }
23
23
  });
24
24
  Object.defineProperty(exports, "Reaction", {
@@ -30,7 +30,7 @@ Object.defineProperty(exports, "Reaction", {
30
30
  Object.defineProperty(exports, "ReactionConsumer", {
31
31
  enumerable: true,
32
32
  get: function get() {
33
- return _reactionStore.ReactionConsumer;
33
+ return _store.ReactionConsumer;
34
34
  }
35
35
  });
36
36
  Object.defineProperty(exports, "ReactionPicker", {
@@ -51,6 +51,14 @@ Object.defineProperty(exports, "Reactions", {
51
51
  return _components.Reactions;
52
52
  }
53
53
  });
54
+ Object.defineProperty(exports, "UFO", {
55
+ enumerable: true,
56
+ get: function get() {
57
+ return _analytics.UFO;
58
+ }
59
+ });
60
+
61
+ var _analytics = require("./analytics");
54
62
 
55
63
  var _client = require("./client");
56
64
 
@@ -58,4 +66,4 @@ var _components = require("./components");
58
66
 
59
67
  var _containers = require("./containers");
60
68
 
61
- var _reactionStore = require("./reaction-store");
69
+ var _store = require("./store");
@@ -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.MemoryReactionsStore = void 0;
10
+ exports.ufoExperiences = exports.MemoryReactionsStore = void 0;
11
11
 
12
12
  var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
13
13
 
@@ -15,9 +15,9 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
15
15
 
16
16
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
17
17
 
18
- var _analytics = require("../analytics");
18
+ var Analytics = _interopRequireWildcard(require("../analytics"));
19
19
 
20
- var _types = require("../types");
20
+ var Types = _interopRequireWildcard(require("../types"));
21
21
 
22
22
  var _batched = require("./batched");
23
23
 
@@ -31,6 +31,16 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
31
31
 
32
32
  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; }
33
33
 
34
+ /**
35
+ * Set of all available UFO experiences relating to reaction element
36
+ */
37
+ var ufoExperiences = {
38
+ add: Analytics.UFO.ReactionsAdd,
39
+ remove: Analytics.UFO.ReactionsRemove,
40
+ render: Analytics.UFO.ReactionsRendered
41
+ };
42
+ exports.ufoExperiences = ufoExperiences;
43
+
34
44
  var MemoryReactionsStore = /*#__PURE__*/function () {
35
45
  function MemoryReactionsStore(client) {
36
46
  var _this = this;
@@ -123,13 +133,26 @@ var MemoryReactionsStore = /*#__PURE__*/function () {
123
133
 
124
134
  _this.flash(reaction);
125
135
 
136
+ var exp = ufoExperiences.add.getInstance("".concat(ari, "|").concat(emojiId)); // ufo start reaction experience
137
+
138
+ exp.start();
139
+
126
140
  _this.client.addReaction(containerAri, ari, emojiId, _this.metadata).then(function (_) {
127
141
  if (_this.createAnalyticsEvent) {
128
- (0, _analytics.createAndFireSafe)(_this.createAnalyticsEvent, _analytics.createRestSucceededEvent, 'addReaction');
129
- }
142
+ Analytics.createAndFireSafe(_this.createAnalyticsEvent, Analytics.createRestSucceededEvent, 'addReaction');
143
+ } // ufo add reaction success
144
+
145
+
146
+ exp.success();
130
147
  }).catch(function (error) {
131
148
  if (_this.createAnalyticsEvent && (0, utils.isRealErrorFromService)(error.code)) {
132
- (0, _analytics.createAndFireSafe)(_this.createAnalyticsEvent, _analytics.createRestFailedEvent, 'addReaction', error.code);
149
+ _this.createAnalyticsEvent && Analytics.createAndFireSafe(_this.createAnalyticsEvent, Analytics.createRestFailedEvent, 'addReaction', error.code); // ufo add reaction failure
150
+
151
+ exp.failure({
152
+ metadata: {
153
+ error: error
154
+ }
155
+ });
133
156
  }
134
157
 
135
158
  return Promise.reject(error);
@@ -139,33 +162,59 @@ var MemoryReactionsStore = /*#__PURE__*/function () {
139
162
  var containerAri = reaction.containerAri,
140
163
  ari = reaction.ari,
141
164
  emojiId = reaction.emojiId;
165
+ var exp = ufoExperiences.remove.getInstance("".concat(ari, "|").concat(emojiId)); // ufo start reaction experience
166
+
167
+ exp.start();
142
168
 
143
169
  _this.optmisticUpdate(containerAri, ari, emojiId)(utils.removeOne);
144
170
 
145
- _this.client.deleteReaction(containerAri, ari, emojiId, _this.metadata);
171
+ _this.client.deleteReaction(containerAri, ari, emojiId, _this.metadata).then(function (_) {
172
+ // ufo add reaction success
173
+ exp.success();
174
+ }).catch(function (error) {
175
+ // ufo add reaction failure
176
+ exp.failure({
177
+ metadata: {
178
+ error: error
179
+ }
180
+ });
181
+ });
146
182
  });
147
183
  (0, _defineProperty2.default)(this, "setCreateAnalyticsEvent", function (createAnalyticsEvent) {
148
184
  _this.createAnalyticsEvent = createAnalyticsEvent;
149
185
  });
150
186
  (0, _defineProperty2.default)(this, "getReactions", (0, _batched.batchByKey)(function (containerAri, aris) {
187
+ /**
188
+ * TODO:
189
+ * All reactions are usually fetched in a single call to reactions-service. Need to check why "getReactions" gets called randomly 1-2 times everytime on each fetch request despite using same containerAri.
190
+ */
191
+ var exp = ufoExperiences.render.getInstance(containerAri); // ufo start reaction experience
192
+
193
+ exp.start();
194
+
151
195
  _this.client.getReactions(containerAri, aris.reduce(utils.flattenAris)).then(function (value) {
152
196
  Object.keys(value).map(function (ari) {
153
197
  var reactionsState = _this.getReactionsState(containerAri, ari);
154
198
 
155
- var reactions = reactionsState && reactionsState.status === _types.ReactionStatus.ready ? reactionsState.reactions : undefined;
199
+ var reactions = reactionsState && reactionsState.status === Types.ReactionStatus.ready ? reactionsState.reactions : undefined;
156
200
 
157
201
  _this.setReactions(containerAri, ari, utils.readyState(value[ari].sort(utils.getReactionsSortFunction(reactions))));
158
202
  });
159
203
  }).then(function () {
160
204
  if (_this.createAnalyticsEvent) {
161
- (0, _analytics.createAndFireSafe)(_this.createAnalyticsEvent, _analytics.createRestSucceededEvent, 'getReactions');
205
+ Analytics.createAndFireSafe(_this.createAnalyticsEvent, Analytics.createRestSucceededEvent, 'getReactions');
162
206
  }
207
+
208
+ exp.success();
163
209
  }).catch(function (error) {
164
- if (_this.createAnalyticsEvent && (0, utils.isRealErrorFromService)(error.code)) {
165
- (0, _analytics.createAndFireSafe)(_this.createAnalyticsEvent, _analytics.createRestFailedEvent, 'getReactions', error.code);
166
- }
210
+ if ((0, utils.isRealErrorFromService)(error.code)) {
211
+ if (_this.createAnalyticsEvent) {
212
+ Analytics.createAndFireSafe(_this.createAnalyticsEvent, Analytics.createRestFailedEvent, 'getReactions', error.code);
213
+ }
167
214
 
168
- return Promise.reject(error);
215
+ exp.failure();
216
+ return Promise.reject(error);
217
+ }
169
218
  });
170
219
  }));
171
220
  (0, _defineProperty2.default)(this, "toggleReaction", this.withReaction(this.doRemoveReaction, this.doAddReaction));
@@ -221,7 +270,7 @@ var MemoryReactionsStore = /*#__PURE__*/function () {
221
270
  return function (updater) {
222
271
  var reactionsState = _this2.getReactionsState(containerAri, ari);
223
272
 
224
- if (reactionsState.status === _types.ReactionStatus.ready) {
273
+ if (reactionsState.status === Types.ReactionStatus.ready) {
225
274
  var updated = updater(reactionsState);
226
275
 
227
276
  if (updated) {
File without changes
File without changes
File without changes
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "name": "@atlaskit/reactions",
3
- "version": "21.0.5"
3
+ "version": "21.2.1"
4
4
  }
@@ -1,6 +1,8 @@
1
1
  import { createAndFireEvent } from '@atlaskit/analytics-next';
2
2
  import { UI_EVENT_TYPE, OPERATIONAL_EVENT_TYPE } from '@atlaskit/analytics-gas-types';
3
3
  import { name as packageName, version as packageVersion } from '../version.json';
4
+ import * as _UFO from './ufo';
5
+ export { _UFO as UFO };
4
6
  export const createAndFireEventInElementsChannel = createAndFireEvent('fabric-elements');
5
7
  export const createAndFireSafe = (createAnalyticsEvent, creator, ...args) => {
6
8
  if (createAnalyticsEvent) {
@@ -0,0 +1,62 @@
1
+ import { ConcurrentExperience, UFOExperience, ExperiencePerformanceTypes, ExperienceTypes } from '@atlaskit/ufo';
2
+ /**
3
+ * Initial experience config object (deferred from @atlaskit/ufo inner types)
4
+ * TODO: Check if possible to add this to exported types from @atlaskit/ufo
5
+ */
6
+
7
+ /**
8
+ * Helper method for create the config type for an individual/Concurrent experience
9
+ * @param componentName
10
+ */
11
+ const createExperienceConfig = (componentName, type, performanceType) => {
12
+ return {
13
+ platform: {
14
+ component: componentName
15
+ },
16
+ type,
17
+ performanceType
18
+ };
19
+ };
20
+ /**
21
+ * Types of experiences
22
+ */
23
+
24
+
25
+ export let ExperienceName;
26
+ /**
27
+ * UFO types of components been instrumented
28
+ */
29
+
30
+ (function (ExperienceName) {
31
+ ExperienceName["REACTIONS_RENDERED"] = "reactions-rendered";
32
+ ExperienceName["PICKER_OPENED"] = "reactions-picker-opened";
33
+ ExperienceName["REACTION_ADDED"] = "reaction-added";
34
+ ExperienceName["REACTION_REMOVED"] = "reaction-removed";
35
+ })(ExperienceName || (ExperienceName = {}));
36
+
37
+ var ComponentName;
38
+ /**
39
+ * Experience when the emoji picker is opened
40
+ */
41
+
42
+ (function (ComponentName) {
43
+ ComponentName["PICKER_RENDERED"] = "reactions-picker";
44
+ ComponentName["REACTIONS"] = "reactions-list";
45
+ })(ComponentName || (ComponentName = {}));
46
+
47
+ export const PickerRender = new UFOExperience(ExperienceName.PICKER_OPENED, createExperienceConfig(ComponentName.PICKER_RENDERED, ExperienceTypes.Experience, ExperiencePerformanceTypes.InlineResult));
48
+ /**
49
+ * Experience when the list of reactions gets rendered
50
+ */
51
+
52
+ export const ReactionsRendered = new ConcurrentExperience(ExperienceName.REACTIONS_RENDERED, createExperienceConfig(ComponentName.REACTIONS, ExperienceTypes.Load, ExperiencePerformanceTypes.PageSegmentLoad));
53
+ /**
54
+ * Experience when a reaction emoji gets added
55
+ */
56
+
57
+ export const ReactionsAdd = new ConcurrentExperience(ExperienceName.REACTION_ADDED, createExperienceConfig(ComponentName.REACTIONS, ExperienceTypes.Experience, ExperiencePerformanceTypes.InlineResult));
58
+ /**
59
+ * Experience when a reaction emoji gets removed/decrement
60
+ */
61
+
62
+ export const ReactionsRemove = new ConcurrentExperience(ExperienceName.REACTION_REMOVED, createExperienceConfig(ComponentName.REACTIONS, ExperienceTypes.Experience, ExperiencePerformanceTypes.InlineResult));
@@ -1,11 +1,12 @@
1
+ /** @jsx jsx */
2
+ import { jsx, css } from '@emotion/core';
1
3
  import { N90, B400 } from '@atlaskit/theme/colors';
2
4
  import { token } from '@atlaskit/tokens';
3
- import cx from 'classnames';
4
5
  import React, { memo } from 'react';
5
6
  import { SlideIn, ExitingPersistence, mediumDurationMs } from '@atlaskit/motion';
6
- import { style } from 'typestyle';
7
7
  import usePreviousValue from '@atlaskit/ds-lib/use-previous-value';
8
- export const countStyle = style({
8
+ export const counterTestId = 'counter-container';
9
+ export const countStyle = css({
9
10
  fontSize: 11,
10
11
  // TODO: nice to have a theme level token for fontSize
11
12
  color: token('color.text.subtlest', N90),
@@ -14,11 +15,11 @@ export const countStyle = style({
14
15
  padding: '4px 8px 4px 0',
15
16
  lineHeight: '14px'
16
17
  });
17
- export const highlightStyle = style({
18
- color: token('color.text.brand', B400),
18
+ export const highlightStyle = css({
19
+ color: token('color.text.selected', B400),
19
20
  fontWeight: 600
20
21
  });
21
- export const containerStyle = style({
22
+ export const containerStyle = css({
22
23
  display: 'flex',
23
24
  flexDirection: 'column'
24
25
  });
@@ -45,26 +46,25 @@ export const Counter = /*#__PURE__*/memo(({
45
46
  const previousValue = usePreviousValue(value);
46
47
  const label = getLabel(value);
47
48
  const increase = previousValue ? previousValue < value : false;
48
- const rootClassName = cx(countStyle, className);
49
- const currentClassName = cx({
50
- [highlightStyle]: highlight
51
- });
52
- return /*#__PURE__*/React.createElement("div", {
53
- className: rootClassName,
49
+ return jsx("div", {
50
+ className: className,
51
+ css: countStyle,
54
52
  style: {
55
53
  width: label.length * 7
56
54
  }
57
- }, /*#__PURE__*/React.createElement(ExitingPersistence, null, /*#__PURE__*/React.createElement(SlideIn, {
55
+ }, jsx(ExitingPersistence, null, jsx(SlideIn, {
58
56
  enterFrom: increase ? 'bottom' : 'top',
59
57
  key: value,
60
58
  duration: animationDuration
61
- }, (motion, direction) => /*#__PURE__*/React.createElement("div", {
59
+ }, (motion, direction) => jsx("div", {
62
60
  ref: motion.ref,
63
- className: cx(containerStyle, motion.className, style({
61
+ css: [containerStyle, css({
64
62
  position: direction === 'exiting' ? 'absolute' : undefined
65
- }))
66
- }, /*#__PURE__*/React.createElement("div", {
67
- className: currentClassName,
63
+ })],
64
+ className: motion.className,
65
+ "data-testid": counterTestId
66
+ }, jsx("div", {
67
+ css: highlight && highlightStyle,
68
68
  key: value
69
69
  }, label)))));
70
70
  });
@@ -1,10 +1,12 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
+
3
+ /** @jsx jsx */
4
+ import { jsx, css } from '@emotion/core';
2
5
  import { ResourcedEmoji } from '@atlaskit/emoji/element';
3
6
  import React from 'react';
4
7
  import { PureComponent } from 'react';
5
- import { style } from 'typestyle';
6
8
  import { isLeftClick } from './utils';
7
- const emojiButtonStyle = style({
9
+ const emojiButtonStyle = css({
8
10
  outline: 'none',
9
11
  display: 'flex',
10
12
  backgroundColor: 'transparent',
@@ -13,11 +15,9 @@ const emojiButtonStyle = style({
13
15
  cursor: 'pointer',
14
16
  margin: '0',
15
17
  padding: '10px 8px',
16
- $nest: {
17
- '&:hover > span': {
18
- transition: 'transform cubic-bezier(0.23, 1, 0.32, 1) 200ms',
19
- transform: 'scale(1.33)'
20
- }
18
+ '&:hover > span': {
19
+ transition: 'transform cubic-bezier(0.23, 1, 0.32, 1) 200ms',
20
+ transform: 'scale(1.33)'
21
21
  }
22
22
  });
23
23
  export class EmojiButton extends PureComponent {
@@ -38,10 +38,10 @@ export class EmojiButton extends PureComponent {
38
38
  emojiId,
39
39
  emojiProvider
40
40
  } = this.props;
41
- return /*#__PURE__*/React.createElement("button", {
41
+ return jsx("button", {
42
42
  onMouseUp: this.handleMouseDown,
43
- className: emojiButtonStyle
44
- }, /*#__PURE__*/React.createElement(ResourcedEmoji, {
43
+ css: emojiButtonStyle
44
+ }, jsx(ResourcedEmoji, {
45
45
  emojiProvider: emojiProvider,
46
46
  emojiId: emojiId
47
47
  }));
@@ -1,39 +1,40 @@
1
+ /** @jsx jsx */
2
+ import { jsx, css, keyframes } from '@emotion/core';
1
3
  import { B75, B300 } from '@atlaskit/theme/colors';
2
4
  import { token } from '@atlaskit/tokens';
3
- import cx from 'classnames';
4
5
  import React from 'react';
5
- import { keyframes, style } from 'typestyle';
6
- const containerStyle = style({
6
+ export const flashAnimationTestId = 'flash-animation';
7
+ const containerStyle = css({
7
8
  width: '100%',
8
9
  height: '100%'
9
10
  });
10
11
  const flashTime = 700;
11
- const flashAnimation = keyframes({
12
+ export const flashAnimation = keyframes({
12
13
  '0%': {
13
14
  backgroundColor: 'transparent'
14
15
  },
15
16
  '20%': {
16
- backgroundColor: token('color.background.brand.pressed', B75),
17
- borderColor: token('color.icon.brand', B300)
17
+ backgroundColor: token('color.background.selected.pressed', B75),
18
+ borderColor: token('color.border.selected', B300)
18
19
  },
19
20
  '75%': {
20
- backgroundColor: token('color.background.brand.pressed', B75),
21
- borderColor: token('color.icon.brand', B300)
21
+ backgroundColor: token('color.background.selected.pressed', B75),
22
+ borderColor: token('color.border.selected', B300)
22
23
  },
23
24
  '100%': {
24
- backgroundColor: token('color.background.brand.pressed', B75),
25
- borderColor: token('color.icon.brand', B300)
25
+ backgroundColor: token('color.background.selected.pressed', B75),
26
+ borderColor: token('color.border.selected', B300)
26
27
  }
27
28
  });
28
- export const flashStyle = style({
29
+ export const flashStyle = css({
29
30
  animation: `${flashAnimation} ${flashTime}ms ease-in-out`
30
31
  });
31
32
  /**
32
33
  * Flash animation background component. See Reaction component for usage.
33
34
  */
34
35
 
35
- export const FlashAnimation = props => /*#__PURE__*/React.createElement("div", {
36
- className: cx(containerStyle, props.className, {
37
- [flashStyle]: props.flash
38
- })
36
+ export const FlashAnimation = props => jsx("div", {
37
+ className: props.className,
38
+ css: [containerStyle, props.flash && flashStyle],
39
+ "data-testid": flashAnimationTestId
39
40
  }, props.children);