@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.
- package/CHANGELOG.md +24 -0
- package/dist/cjs/analytics/index.js +11 -1
- package/dist/cjs/analytics/ufo.js +71 -0
- package/dist/cjs/components/Counter.js +20 -20
- package/dist/cjs/components/EmojiButton.js +9 -11
- package/dist/cjs/components/FlashAnimation.js +19 -17
- package/dist/cjs/components/Reaction.js +22 -28
- package/dist/cjs/components/ReactionPicker.js +43 -37
- package/dist/cjs/components/ReactionTooltip.js +33 -29
- package/dist/cjs/components/Reactions.js +15 -17
- package/dist/cjs/components/Selector.js +23 -28
- package/dist/cjs/components/ShowMore.js +25 -22
- package/dist/cjs/components/Trigger.js +11 -16
- package/dist/cjs/components/UfoErrorBoundary.js +68 -0
- package/dist/cjs/components/index.js +9 -1
- package/dist/cjs/containers/ConnectedReactionPicker.js +44 -0
- package/dist/cjs/containers/ConnectedReactionsView.js +131 -0
- package/dist/cjs/containers/index.js +4 -6
- package/dist/cjs/index.js +11 -3
- package/dist/cjs/{reaction-store → store}/ReactionConsumer.js +0 -0
- package/dist/cjs/{reaction-store → store}/ReactionsStore.js +63 -14
- package/dist/cjs/{reaction-store → store}/batched.js +0 -0
- package/dist/cjs/{reaction-store → store}/index.js +0 -0
- package/dist/cjs/{reaction-store → store}/utils.js +0 -0
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/analytics/index.js +2 -0
- package/dist/es2019/analytics/ufo.js +62 -0
- package/dist/es2019/components/Counter.js +18 -18
- package/dist/es2019/components/EmojiButton.js +10 -10
- package/dist/es2019/components/FlashAnimation.js +16 -15
- package/dist/es2019/components/Reaction.js +23 -28
- package/dist/es2019/components/ReactionPicker.js +39 -34
- package/dist/es2019/components/ReactionTooltip.js +27 -27
- package/dist/es2019/components/Reactions.js +16 -16
- package/dist/es2019/components/Selector.js +21 -24
- package/dist/es2019/components/ShowMore.js +22 -18
- package/dist/es2019/components/Trigger.js +10 -14
- package/dist/es2019/components/UfoErrorBoundary.js +13 -0
- package/dist/es2019/components/index.js +2 -1
- package/dist/es2019/containers/ConnectedReactionPicker.js +27 -0
- package/dist/es2019/containers/ConnectedReactionsView.js +112 -0
- package/dist/es2019/containers/index.js +2 -2
- package/dist/es2019/index.js +2 -1
- package/dist/es2019/{reaction-store → store}/ReactionConsumer.js +0 -0
- package/dist/es2019/{reaction-store → store}/ReactionsStore.js +59 -13
- package/dist/es2019/{reaction-store → store}/batched.js +0 -0
- package/dist/es2019/{reaction-store → store}/index.js +0 -0
- package/dist/es2019/{reaction-store → store}/utils.js +0 -0
- package/dist/es2019/version.json +1 -1
- package/dist/esm/analytics/index.js +2 -0
- package/dist/esm/analytics/ufo.js +62 -0
- package/dist/esm/components/Counter.js +18 -17
- package/dist/esm/components/EmojiButton.js +9 -10
- package/dist/esm/components/FlashAnimation.js +16 -14
- package/dist/esm/components/Reaction.js +22 -26
- package/dist/esm/components/ReactionPicker.js +39 -34
- package/dist/esm/components/ReactionTooltip.js +27 -27
- package/dist/esm/components/Reactions.js +15 -16
- package/dist/esm/components/Selector.js +20 -24
- package/dist/esm/components/ShowMore.js +22 -19
- package/dist/esm/components/Trigger.js +10 -14
- package/dist/esm/components/UfoErrorBoundary.js +54 -0
- package/dist/esm/components/index.js +2 -1
- package/dist/esm/containers/ConnectedReactionPicker.js +29 -0
- package/dist/esm/containers/ConnectedReactionsView.js +108 -0
- package/dist/esm/containers/index.js +2 -2
- package/dist/esm/index.js +2 -1
- package/dist/esm/{reaction-store → store}/ReactionConsumer.js +0 -0
- package/dist/esm/{reaction-store → store}/ReactionsStore.js +61 -13
- package/dist/esm/{reaction-store → store}/batched.js +0 -0
- package/dist/esm/{reaction-store → store}/index.js +0 -0
- package/dist/esm/{reaction-store → store}/utils.js +0 -0
- package/dist/esm/version.json +1 -1
- package/dist/types/analytics/index.d.ts +1 -0
- package/dist/types/analytics/ufo.d.ts +26 -0
- package/dist/types/components/Counter.d.ts +4 -3
- package/dist/types/components/FlashAnimation.d.ts +3 -1
- package/dist/types/components/ReactionPicker.d.ts +2 -1
- package/dist/types/components/Reactions.d.ts +7 -5
- package/dist/types/components/Selector.d.ts +2 -1
- package/dist/types/components/ShowMore.d.ts +4 -0
- package/dist/types/components/UfoErrorBoundary.d.ts +8 -0
- package/dist/types/components/index.d.ts +2 -0
- package/dist/types/containers/ConnectedReactionPicker.d.ts +10 -0
- package/dist/types/containers/ConnectedReactionsView.d.ts +19 -0
- package/dist/types/containers/index.d.ts +2 -2
- package/dist/types/index.d.ts +3 -2
- package/dist/types/store/ReactionConsumer.d.ts +29 -0
- package/dist/types/{reaction-store → store}/ReactionsStore.d.ts +11 -7
- package/dist/types/{reaction-store → store}/batched.d.ts +0 -0
- package/dist/types/{reaction-store → store}/index.d.ts +0 -0
- package/dist/types/{reaction-store → store}/utils.d.ts +0 -0
- package/dist/types/types/Actions.d.ts +6 -0
- package/dist/types/types/index.d.ts +1 -1
- package/docs/0-intro.tsx +1 -1
- package/package.json +7 -6
- package/dist/cjs/containers/ReactionsContainer.js +0 -142
- package/dist/cjs/containers/ReactionsPickerContainer.js +0 -76
- package/dist/es2019/containers/ReactionsContainer.js +0 -96
- package/dist/es2019/containers/ReactionsPickerContainer.js +0 -26
- package/dist/esm/containers/ReactionsContainer.js +0 -125
- package/dist/esm/containers/ReactionsPickerContainer.js +0 -62
- package/dist/types/containers/ReactionsContainer.d.ts +0 -22
- package/dist/types/containers/ReactionsPickerContainer.d.ts +0 -18
- 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
|
|
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
|
|
15
|
+
return _ConnectedReactionsView.ConnectedReactionsView;
|
|
18
16
|
}
|
|
19
17
|
});
|
|
20
18
|
|
|
21
|
-
var
|
|
19
|
+
var _ConnectedReactionPicker = require("./ConnectedReactionPicker");
|
|
22
20
|
|
|
23
|
-
var
|
|
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
|
|
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
|
|
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
|
|
69
|
+
var _store = require("./store");
|
|
File without changes
|
|
@@ -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
|
|
18
|
+
var Analytics = _interopRequireWildcard(require("../analytics"));
|
|
19
19
|
|
|
20
|
-
var
|
|
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
|
-
|
|
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
|
-
|
|
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 ===
|
|
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
|
-
|
|
205
|
+
Analytics.createAndFireSafe(_this.createAnalyticsEvent, Analytics.createRestSucceededEvent, 'getReactions');
|
|
162
206
|
}
|
|
207
|
+
|
|
208
|
+
exp.success();
|
|
163
209
|
}).catch(function (error) {
|
|
164
|
-
if (
|
|
165
|
-
|
|
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
|
-
|
|
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 ===
|
|
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
|
package/dist/cjs/version.json
CHANGED
|
@@ -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
|
|
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 =
|
|
18
|
-
color: token('color.text.
|
|
18
|
+
export const highlightStyle = css({
|
|
19
|
+
color: token('color.text.selected', B400),
|
|
19
20
|
fontWeight: 600
|
|
20
21
|
});
|
|
21
|
-
export const containerStyle =
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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
|
-
},
|
|
55
|
+
}, jsx(ExitingPersistence, null, jsx(SlideIn, {
|
|
58
56
|
enterFrom: increase ? 'bottom' : 'top',
|
|
59
57
|
key: value,
|
|
60
58
|
duration: animationDuration
|
|
61
|
-
}, (motion, direction) =>
|
|
59
|
+
}, (motion, direction) => jsx("div", {
|
|
62
60
|
ref: motion.ref,
|
|
63
|
-
|
|
61
|
+
css: [containerStyle, css({
|
|
64
62
|
position: direction === 'exiting' ? 'absolute' : undefined
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
|
|
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 =
|
|
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
|
-
|
|
17
|
-
'
|
|
18
|
-
|
|
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
|
|
41
|
+
return jsx("button", {
|
|
42
42
|
onMouseUp: this.handleMouseDown,
|
|
43
|
-
|
|
44
|
-
},
|
|
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
|
-
|
|
6
|
-
const containerStyle =
|
|
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.
|
|
17
|
-
borderColor: token('color.
|
|
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.
|
|
21
|
-
borderColor: token('color.
|
|
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.
|
|
25
|
-
borderColor: token('color.
|
|
25
|
+
backgroundColor: token('color.background.selected.pressed', B75),
|
|
26
|
+
borderColor: token('color.border.selected', B300)
|
|
26
27
|
}
|
|
27
28
|
});
|
|
28
|
-
export const flashStyle =
|
|
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 =>
|
|
36
|
-
className:
|
|
37
|
-
|
|
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);
|