@atlaskit/mention 20.0.0 → 21.0.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.
- package/CHANGELOG.md +10 -0
- package/dist/cjs/api/analytics.js +2 -15
- package/dist/cjs/i18n/cs.js +2 -2
- package/dist/cjs/i18n/da.js +2 -2
- package/dist/cjs/i18n/de.js +2 -2
- package/dist/cjs/i18n/en_ZZ.js +32 -0
- package/dist/cjs/i18n/es.js +2 -2
- package/dist/cjs/i18n/et.js +2 -2
- package/dist/cjs/i18n/fi.js +2 -2
- package/dist/cjs/i18n/fr.js +2 -2
- package/dist/cjs/i18n/hu.js +2 -2
- package/dist/cjs/i18n/it.js +2 -2
- package/dist/cjs/i18n/ja.js +2 -2
- package/dist/cjs/i18n/ko.js +2 -2
- package/dist/cjs/i18n/nb.js +2 -2
- package/dist/cjs/i18n/nl.js +2 -2
- package/dist/cjs/i18n/pl.js +2 -2
- package/dist/cjs/i18n/pt_BR.js +2 -2
- package/dist/cjs/i18n/pt_PT.js +2 -2
- package/dist/cjs/i18n/ru.js +2 -2
- package/dist/cjs/i18n/sk.js +2 -2
- package/dist/cjs/i18n/sv.js +2 -2
- package/dist/cjs/i18n/th.js +2 -2
- package/dist/cjs/i18n/tr.js +2 -2
- package/dist/cjs/i18n/uk.js +2 -2
- package/dist/cjs/i18n/vi.js +2 -2
- package/dist/cjs/i18n/zh.js +2 -2
- package/dist/cjs/i18n/zh_TW.js +2 -2
- package/dist/cjs/index.js +12 -8
- package/dist/cjs/version.json +1 -1
- package/dist/es2019/api/analytics.js +0 -9
- package/dist/es2019/i18n/cs.js +2 -2
- package/dist/es2019/i18n/da.js +2 -2
- package/dist/es2019/i18n/de.js +2 -2
- package/dist/es2019/i18n/en_ZZ.js +24 -0
- package/dist/es2019/i18n/es.js +2 -2
- package/dist/es2019/i18n/et.js +2 -2
- package/dist/es2019/i18n/fi.js +2 -2
- package/dist/es2019/i18n/fr.js +2 -2
- package/dist/es2019/i18n/hu.js +2 -2
- package/dist/es2019/i18n/it.js +2 -2
- package/dist/es2019/i18n/ja.js +2 -2
- package/dist/es2019/i18n/ko.js +2 -2
- package/dist/es2019/i18n/nb.js +2 -2
- package/dist/es2019/i18n/nl.js +2 -2
- package/dist/es2019/i18n/pl.js +2 -2
- package/dist/es2019/i18n/pt_BR.js +2 -2
- package/dist/es2019/i18n/pt_PT.js +2 -2
- package/dist/es2019/i18n/ru.js +2 -2
- package/dist/es2019/i18n/sk.js +2 -2
- package/dist/es2019/i18n/sv.js +2 -2
- package/dist/es2019/i18n/th.js +2 -2
- package/dist/es2019/i18n/tr.js +2 -2
- package/dist/es2019/i18n/uk.js +2 -2
- package/dist/es2019/i18n/vi.js +2 -2
- package/dist/es2019/i18n/zh.js +2 -2
- package/dist/es2019/i18n/zh_TW.js +2 -2
- package/dist/es2019/index.js +3 -4
- package/dist/es2019/version.json +1 -1
- package/dist/esm/api/analytics.js +0 -10
- package/dist/esm/i18n/cs.js +2 -2
- package/dist/esm/i18n/da.js +2 -2
- package/dist/esm/i18n/de.js +2 -2
- package/dist/esm/i18n/en_ZZ.js +24 -0
- package/dist/esm/i18n/es.js +2 -2
- package/dist/esm/i18n/et.js +2 -2
- package/dist/esm/i18n/fi.js +2 -2
- package/dist/esm/i18n/fr.js +2 -2
- package/dist/esm/i18n/hu.js +2 -2
- package/dist/esm/i18n/it.js +2 -2
- package/dist/esm/i18n/ja.js +2 -2
- package/dist/esm/i18n/ko.js +2 -2
- package/dist/esm/i18n/nb.js +2 -2
- package/dist/esm/i18n/nl.js +2 -2
- package/dist/esm/i18n/pl.js +2 -2
- package/dist/esm/i18n/pt_BR.js +2 -2
- package/dist/esm/i18n/pt_PT.js +2 -2
- package/dist/esm/i18n/ru.js +2 -2
- package/dist/esm/i18n/sk.js +2 -2
- package/dist/esm/i18n/sv.js +2 -2
- package/dist/esm/i18n/th.js +2 -2
- package/dist/esm/i18n/tr.js +2 -2
- package/dist/esm/i18n/uk.js +2 -2
- package/dist/esm/i18n/vi.js +2 -2
- package/dist/esm/i18n/zh.js +2 -2
- package/dist/esm/i18n/zh_TW.js +2 -2
- package/dist/esm/index.js +3 -4
- package/dist/esm/version.json +1 -1
- package/dist/types/api/analytics.d.ts +0 -5
- package/dist/types/i18n/cs.d.ts +1 -1
- package/dist/types/i18n/da.d.ts +1 -1
- package/dist/types/i18n/de.d.ts +1 -1
- package/dist/types/i18n/en_ZZ.d.ts +24 -0
- package/dist/types/i18n/es.d.ts +1 -1
- package/dist/types/i18n/et.d.ts +1 -1
- package/dist/types/i18n/fi.d.ts +1 -1
- package/dist/types/i18n/fr.d.ts +1 -1
- package/dist/types/i18n/hu.d.ts +1 -1
- package/dist/types/i18n/it.d.ts +1 -1
- package/dist/types/i18n/ja.d.ts +1 -1
- package/dist/types/i18n/ko.d.ts +1 -1
- package/dist/types/i18n/nb.d.ts +1 -1
- package/dist/types/i18n/nl.d.ts +1 -1
- package/dist/types/i18n/pl.d.ts +1 -1
- package/dist/types/i18n/pt_BR.d.ts +1 -1
- package/dist/types/i18n/pt_PT.d.ts +1 -1
- package/dist/types/i18n/ru.d.ts +1 -1
- package/dist/types/i18n/sk.d.ts +1 -1
- package/dist/types/i18n/sv.d.ts +1 -1
- package/dist/types/i18n/th.d.ts +1 -1
- package/dist/types/i18n/tr.d.ts +1 -1
- package/dist/types/i18n/uk.d.ts +1 -1
- package/dist/types/i18n/vi.d.ts +1 -1
- package/dist/types/i18n/zh.d.ts +1 -1
- package/dist/types/i18n/zh_TW.d.ts +1 -1
- package/dist/types/index.d.ts +3 -4
- package/docs/1-in-editor.tsx +4 -36
- package/package.json +4 -4
- package/tsconfig.json +1 -2
- package/dist/cjs/api/SmartMentionResource.js +0 -338
- package/dist/cjs/api/SmartMentionTypes.js +0 -15
- package/dist/cjs/api/extract-react-types/smart-config-props.js +0 -15
- package/dist/cjs/api/recommendationClient.js +0 -57
- package/dist/cjs/default-mention-name-resolver/default-mention-name-resolver.js +0 -136
- package/dist/cjs/default-mention-name-resolver/graphqlUtils.js +0 -48
- package/dist/es2019/api/SmartMentionResource.js +0 -219
- package/dist/es2019/api/SmartMentionTypes.js +0 -7
- package/dist/es2019/api/extract-react-types/smart-config-props.js +0 -8
- package/dist/es2019/api/recommendationClient.js +0 -46
- package/dist/es2019/default-mention-name-resolver/default-mention-name-resolver.js +0 -64
- package/dist/es2019/default-mention-name-resolver/graphqlUtils.js +0 -39
- package/dist/esm/api/SmartMentionResource.js +0 -317
- package/dist/esm/api/SmartMentionTypes.js +0 -7
- package/dist/esm/api/extract-react-types/smart-config-props.js +0 -8
- package/dist/esm/api/recommendationClient.js +0 -48
- package/dist/esm/default-mention-name-resolver/default-mention-name-resolver.js +0 -121
- package/dist/esm/default-mention-name-resolver/graphqlUtils.js +0 -41
- package/dist/types/api/SmartMentionResource.d.ts +0 -63
- package/dist/types/api/SmartMentionTypes.d.ts +0 -81
- package/dist/types/api/extract-react-types/smart-config-props.d.ts +0 -7
- package/dist/types/api/recommendationClient.d.ts +0 -3
- package/dist/types/default-mention-name-resolver/default-mention-name-resolver.d.ts +0 -16
- package/dist/types/default-mention-name-resolver/graphqlUtils.d.ts +0 -14
|
@@ -1,317 +0,0 @@
|
|
|
1
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
2
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
3
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
4
|
-
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
5
|
-
import _createClass from "@babel/runtime/helpers/createClass";
|
|
6
|
-
import _inherits from "@babel/runtime/helpers/inherits";
|
|
7
|
-
import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
|
|
8
|
-
import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
|
|
9
|
-
|
|
10
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
11
|
-
|
|
12
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
13
|
-
|
|
14
|
-
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); }; }
|
|
15
|
-
|
|
16
|
-
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; } }
|
|
17
|
-
|
|
18
|
-
import { SMART_EVENT_TYPE, Actions, getUsersForAnalytics, defaultAttributes } from './analytics';
|
|
19
|
-
import getUserRecommendations from './recommendationClient';
|
|
20
|
-
import { EntityType } from './SmartMentionTypes';
|
|
21
|
-
import { UserAccessLevel, UserType as MentionUserType } from '../types';
|
|
22
|
-
import { AbstractMentionResource } from '../resource';
|
|
23
|
-
import { DefaultMentionNameResolver } from '../default-mention-name-resolver/default-mention-name-resolver';
|
|
24
|
-
var CONTEXT_TYPE = 'Mentions';
|
|
25
|
-
|
|
26
|
-
var isSmartMentionConfigWithMentionNameResolver = function isSmartMentionConfigWithMentionNameResolver(smartMentionConfig) {
|
|
27
|
-
return !!smartMentionConfig.mentionNameResolver;
|
|
28
|
-
};
|
|
29
|
-
/*
|
|
30
|
-
* This is a provider implementation which calls URS to provide a list of recommended users/teams to mention.
|
|
31
|
-
* The entryPoint hierarchy is : Editor -> editor-core -> plugins -> mentions -> typeAhead -> getItems -> pluginState.pluginProvider.filter
|
|
32
|
-
* The results are then mapped to mentionItems which have a render prop mentionToTypeaheadItem -> MentionItem
|
|
33
|
-
* https://bitbucket.org/atlassian/atlassian-frontend/src/0884032d85f11f43c13532cd21f13f696b0d28a7/packages/editor/editor-core/src/plugins/mentions/index.tsx#lines-219
|
|
34
|
-
*
|
|
35
|
-
*/
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
var SmartMentionResource = /*#__PURE__*/function (_AbstractMentionResou) {
|
|
39
|
-
_inherits(SmartMentionResource, _AbstractMentionResou);
|
|
40
|
-
|
|
41
|
-
var _super = _createSuper(SmartMentionResource);
|
|
42
|
-
|
|
43
|
-
function SmartMentionResource(smartMentionConfig) {
|
|
44
|
-
var _this;
|
|
45
|
-
|
|
46
|
-
_classCallCheck(this, SmartMentionResource);
|
|
47
|
-
|
|
48
|
-
_this = _super.call(this); // If the product doesn't provide a mention name resolve, use the default resolver so that
|
|
49
|
-
// mention names can be looked up from PRS without configuration.
|
|
50
|
-
|
|
51
|
-
_this.smartMentionConfig = isSmartMentionConfigWithMentionNameResolver(smartMentionConfig) ? smartMentionConfig : _objectSpread(_objectSpread({}, smartMentionConfig), {}, {
|
|
52
|
-
mentionNameResolver: new DefaultMentionNameResolver(smartMentionConfig.baseUrl)
|
|
53
|
-
});
|
|
54
|
-
_this.lastReturnedSearch = 0;
|
|
55
|
-
return _this;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
_createClass(SmartMentionResource, [{
|
|
59
|
-
key: "shouldHighlightMention",
|
|
60
|
-
value: function shouldHighlightMention(mention) {
|
|
61
|
-
if (this.smartMentionConfig.shouldHighlightMention) {
|
|
62
|
-
return this.smartMentionConfig.shouldHighlightMention(mention);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
}, {
|
|
68
|
-
key: "notify",
|
|
69
|
-
value: function notify(searchTime, mentionResult, query) {
|
|
70
|
-
if (searchTime > this.lastReturnedSearch) {
|
|
71
|
-
this.lastReturnedSearch = searchTime;
|
|
72
|
-
|
|
73
|
-
this._notifyListeners(mentionResult, {
|
|
74
|
-
duration: Date.now() - searchTime
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
this._notifyAllResultsListeners(mentionResult);
|
|
79
|
-
}
|
|
80
|
-
}, {
|
|
81
|
-
key: "notifyError",
|
|
82
|
-
value: function notifyError(error, query) {
|
|
83
|
-
this._notifyErrorListeners(error, query);
|
|
84
|
-
}
|
|
85
|
-
}, {
|
|
86
|
-
key: "filter",
|
|
87
|
-
value: function () {
|
|
88
|
-
var _filter = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(query, contextIdentifier) {
|
|
89
|
-
var searchTime, results;
|
|
90
|
-
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
91
|
-
while (1) {
|
|
92
|
-
switch (_context.prev = _context.next) {
|
|
93
|
-
case 0:
|
|
94
|
-
this.contextIdentifier = contextIdentifier;
|
|
95
|
-
searchTime = Date.now();
|
|
96
|
-
_context.prev = 2;
|
|
97
|
-
_context.next = 5;
|
|
98
|
-
return this.getRecommendedMentions(query ? query : '', contextIdentifier);
|
|
99
|
-
|
|
100
|
-
case 5:
|
|
101
|
-
results = _context.sent;
|
|
102
|
-
this.notify(searchTime, results, query);
|
|
103
|
-
_context.next = 12;
|
|
104
|
-
break;
|
|
105
|
-
|
|
106
|
-
case 9:
|
|
107
|
-
_context.prev = 9;
|
|
108
|
-
_context.t0 = _context["catch"](2);
|
|
109
|
-
this.notifyError(_context.t0, query);
|
|
110
|
-
|
|
111
|
-
case 12:
|
|
112
|
-
case "end":
|
|
113
|
-
return _context.stop();
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}, _callee, this, [[2, 9]]);
|
|
117
|
-
}));
|
|
118
|
-
|
|
119
|
-
function filter(_x, _x2) {
|
|
120
|
-
return _filter.apply(this, arguments);
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
return filter;
|
|
124
|
-
}()
|
|
125
|
-
}, {
|
|
126
|
-
key: "getRecommendedMentions",
|
|
127
|
-
value: function () {
|
|
128
|
-
var _getRecommendedMentions = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(query, contextIdentifier) {
|
|
129
|
-
var startTime, conf, maxNumberOfResults, request, users, elapsedTimeMilli, usersForAnalytics, mentions, _elapsedTimeMilli;
|
|
130
|
-
|
|
131
|
-
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
132
|
-
while (1) {
|
|
133
|
-
switch (_context2.prev = _context2.next) {
|
|
134
|
-
case 0:
|
|
135
|
-
startTime = window.performance.now();
|
|
136
|
-
conf = this.smartMentionConfig;
|
|
137
|
-
maxNumberOfResults = conf.maxNumberOfResults || 100;
|
|
138
|
-
request = {
|
|
139
|
-
baseUrl: conf.baseUrl,
|
|
140
|
-
context: {
|
|
141
|
-
productKey: conf.productKey,
|
|
142
|
-
contextType: CONTEXT_TYPE,
|
|
143
|
-
principalId: conf.principalId || 'context',
|
|
144
|
-
containerId: contextIdentifier && contextIdentifier.containerId,
|
|
145
|
-
siteId: conf.siteId,
|
|
146
|
-
objectId: contextIdentifier && contextIdentifier.objectId || 'undefined',
|
|
147
|
-
childObjectId: contextIdentifier && contextIdentifier.childObjectId || 'undefined',
|
|
148
|
-
mentionsSessionId: contextIdentifier && contextIdentifier.sessionId || 'undefined',
|
|
149
|
-
sessionId: contextIdentifier && contextIdentifier.sessionId || 'undefined'
|
|
150
|
-
},
|
|
151
|
-
includeGroups: conf.includeGroups,
|
|
152
|
-
includeTeams: conf.includeTeams,
|
|
153
|
-
includeUsers: typeof conf.includeUsers === 'undefined' ? true : conf.includeUsers,
|
|
154
|
-
maxNumberOfResults: maxNumberOfResults,
|
|
155
|
-
searchQueryFilter: conf.searchQueryFilter,
|
|
156
|
-
query: query
|
|
157
|
-
};
|
|
158
|
-
_context2.prev = 4;
|
|
159
|
-
|
|
160
|
-
this._notifyAnalyticsListeners(SMART_EVENT_TYPE, 'users', Actions.REQUESTED, defaultAttributes(contextIdentifier));
|
|
161
|
-
|
|
162
|
-
_context2.next = 8;
|
|
163
|
-
return getUserRecommendations(request);
|
|
164
|
-
|
|
165
|
-
case 8:
|
|
166
|
-
users = _context2.sent;
|
|
167
|
-
elapsedTimeMilli = window.performance.now() - startTime;
|
|
168
|
-
usersForAnalytics = getUsersForAnalytics(users);
|
|
169
|
-
|
|
170
|
-
this._notifyAnalyticsListeners(SMART_EVENT_TYPE, 'usersRequest', Actions.SUCCESSFUL, _objectSpread({
|
|
171
|
-
elapsedTimeMilli: elapsedTimeMilli,
|
|
172
|
-
users: usersForAnalytics,
|
|
173
|
-
displayedUsers: usersForAnalytics
|
|
174
|
-
}, defaultAttributes(contextIdentifier)));
|
|
175
|
-
|
|
176
|
-
mentions = this.transformUsersToMentions(users);
|
|
177
|
-
return _context2.abrupt("return", {
|
|
178
|
-
mentions: mentions,
|
|
179
|
-
query: query
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
case 16:
|
|
183
|
-
_context2.prev = 16;
|
|
184
|
-
_context2.t0 = _context2["catch"](4);
|
|
185
|
-
_elapsedTimeMilli = window.performance.now() - startTime;
|
|
186
|
-
|
|
187
|
-
this._notifyAnalyticsListeners(SMART_EVENT_TYPE, 'usersRequest', Actions.FAILED, _objectSpread({
|
|
188
|
-
elapsedTimeMilli: _elapsedTimeMilli
|
|
189
|
-
}, defaultAttributes(contextIdentifier)));
|
|
190
|
-
|
|
191
|
-
throw new Error(_context2.t0);
|
|
192
|
-
|
|
193
|
-
case 21:
|
|
194
|
-
case "end":
|
|
195
|
-
return _context2.stop();
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
}, _callee2, this, [[4, 16]]);
|
|
199
|
-
}));
|
|
200
|
-
|
|
201
|
-
function getRecommendedMentions(_x3, _x4) {
|
|
202
|
-
return _getRecommendedMentions.apply(this, arguments);
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
return getRecommendedMentions;
|
|
206
|
-
}()
|
|
207
|
-
}, {
|
|
208
|
-
key: "transformTeamMember",
|
|
209
|
-
value: function transformTeamMember(member) {
|
|
210
|
-
return {
|
|
211
|
-
id: member.id,
|
|
212
|
-
name: member.name
|
|
213
|
-
};
|
|
214
|
-
}
|
|
215
|
-
}, {
|
|
216
|
-
key: "transformUserToMention",
|
|
217
|
-
value: function transformUserToMention(item) {
|
|
218
|
-
var type = item.entityType;
|
|
219
|
-
var defaultVals = {
|
|
220
|
-
source: 'smarts'
|
|
221
|
-
};
|
|
222
|
-
|
|
223
|
-
if (type === EntityType.USER) {
|
|
224
|
-
var user = item;
|
|
225
|
-
return _objectSpread(_objectSpread({}, defaultVals), {}, {
|
|
226
|
-
id: user.id,
|
|
227
|
-
accessLevel: user.accessLevel,
|
|
228
|
-
avatarUrl: user.avatarUrl,
|
|
229
|
-
mentionName: user.nickname || '',
|
|
230
|
-
name: user.name,
|
|
231
|
-
userType: user.userType
|
|
232
|
-
});
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
if (type === EntityType.TEAM) {
|
|
236
|
-
var team = item;
|
|
237
|
-
var teamLink = '';
|
|
238
|
-
var defaultTeamLink = "".concat(window.location.origin, "/people/team/").concat(team.id);
|
|
239
|
-
|
|
240
|
-
if (typeof this.smartMentionConfig.teamLinkResolver === 'function') {
|
|
241
|
-
teamLink = this.smartMentionConfig.teamLinkResolver(item.id);
|
|
242
|
-
}
|
|
243
|
-
|
|
244
|
-
return _objectSpread(_objectSpread({}, defaultVals), {}, {
|
|
245
|
-
id: team.id,
|
|
246
|
-
name: team.displayName || '',
|
|
247
|
-
mentionName: team.displayName,
|
|
248
|
-
avatarUrl: team.smallAvatarImageUrl,
|
|
249
|
-
accessLevel: UserAccessLevel[UserAccessLevel.CONTAINER],
|
|
250
|
-
userType: MentionUserType[MentionUserType.TEAM],
|
|
251
|
-
lozenge: MentionUserType[MentionUserType.TEAM],
|
|
252
|
-
context: {
|
|
253
|
-
members: team.members ? team.members.map(this.transformTeamMember) : [],
|
|
254
|
-
includesYou: team.includesYou || false,
|
|
255
|
-
memberCount: team.memberCount || 0,
|
|
256
|
-
teamLink: teamLink || defaultTeamLink //OOH HERE Do we pass in resolver or add in provider?
|
|
257
|
-
|
|
258
|
-
},
|
|
259
|
-
source: 'smarts'
|
|
260
|
-
});
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
if (type === EntityType.GROUP) {
|
|
264
|
-
var group = item;
|
|
265
|
-
return _objectSpread(_objectSpread({}, defaultVals), {}, {
|
|
266
|
-
id: group.id,
|
|
267
|
-
userType: type.toLowerCase(),
|
|
268
|
-
name: group.name || '',
|
|
269
|
-
lozenge: type.toLowerCase()
|
|
270
|
-
});
|
|
271
|
-
}
|
|
272
|
-
|
|
273
|
-
return {
|
|
274
|
-
id: item.id,
|
|
275
|
-
userType: EntityType.USER.toLowerCase(),
|
|
276
|
-
avatarUrl: item.avatarUrl,
|
|
277
|
-
name: item.name,
|
|
278
|
-
lozenge: EntityType.USER.toLowerCase()
|
|
279
|
-
};
|
|
280
|
-
}
|
|
281
|
-
}, {
|
|
282
|
-
key: "transformUsersToMentions",
|
|
283
|
-
value: function transformUsersToMentions(recommendationItems) {
|
|
284
|
-
return (recommendationItems || []).map(this.transformUserToMention, this).filter(function (user) {
|
|
285
|
-
return !!user;
|
|
286
|
-
}).map(function (user) {
|
|
287
|
-
return user;
|
|
288
|
-
});
|
|
289
|
-
}
|
|
290
|
-
}, {
|
|
291
|
-
key: "cacheMentionName",
|
|
292
|
-
value: function cacheMentionName(id, mentionName) {
|
|
293
|
-
this.smartMentionConfig.mentionNameResolver.cacheName(id, mentionName);
|
|
294
|
-
}
|
|
295
|
-
}, {
|
|
296
|
-
key: "resolveMentionName",
|
|
297
|
-
value: function resolveMentionName(id) {
|
|
298
|
-
return this.smartMentionConfig.mentionNameResolver.lookupName(id);
|
|
299
|
-
}
|
|
300
|
-
}, {
|
|
301
|
-
key: "supportsMentionNameResolving",
|
|
302
|
-
value: function supportsMentionNameResolving() {
|
|
303
|
-
return true;
|
|
304
|
-
}
|
|
305
|
-
}, {
|
|
306
|
-
key: "recordMentionSelection",
|
|
307
|
-
value: function recordMentionSelection(_mention) {
|
|
308
|
-
this._notifyAnalyticsListeners(SMART_EVENT_TYPE, 'usersRequest', Actions.SELECTED, _objectSpread({
|
|
309
|
-
selectedOption: _mention.id
|
|
310
|
-
}, defaultAttributes(this.contextIdentifier)));
|
|
311
|
-
}
|
|
312
|
-
}]);
|
|
313
|
-
|
|
314
|
-
return SmartMentionResource;
|
|
315
|
-
}(AbstractMentionResource);
|
|
316
|
-
|
|
317
|
-
export default SmartMentionResource;
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
import { config } from '../config';
|
|
2
|
-
|
|
3
|
-
var getUserRecommendations = function getUserRecommendations(request) {
|
|
4
|
-
var url = config.getRecommendationServiceUrl(request.baseUrl);
|
|
5
|
-
return fetch(url, {
|
|
6
|
-
method: 'POST',
|
|
7
|
-
credentials: 'include',
|
|
8
|
-
headers: {
|
|
9
|
-
'content-type': 'application/json'
|
|
10
|
-
},
|
|
11
|
-
body: JSON.stringify({
|
|
12
|
-
context: request.context,
|
|
13
|
-
includeUsers: request.includeUsers,
|
|
14
|
-
includeGroups: request.includeGroups,
|
|
15
|
-
includeTeams: request.includeTeams,
|
|
16
|
-
maxNumberOfResults: request.maxNumberOfResults,
|
|
17
|
-
performSearchQueryOnly: false,
|
|
18
|
-
searchQuery: {
|
|
19
|
-
cpusQueryHighlights: {
|
|
20
|
-
query: '',
|
|
21
|
-
field: ''
|
|
22
|
-
},
|
|
23
|
-
customQuery: '',
|
|
24
|
-
customerDirectoryId: '',
|
|
25
|
-
filter: request.searchQueryFilter || '',
|
|
26
|
-
minimumAccessLevel: 'APPLICATION',
|
|
27
|
-
queryString: request.query,
|
|
28
|
-
restrictTo: {
|
|
29
|
-
userIds: [],
|
|
30
|
-
groupIds: []
|
|
31
|
-
},
|
|
32
|
-
searchUserbase: false
|
|
33
|
-
}
|
|
34
|
-
})
|
|
35
|
-
}).then(function (response) {
|
|
36
|
-
if (response.status === 200) {
|
|
37
|
-
return response.json();
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
return Promise.reject({
|
|
41
|
-
message: "error calling smart service, statusCode=".concat(response.status, ", statusText=").concat(response.statusText)
|
|
42
|
-
});
|
|
43
|
-
}).then(function (response) {
|
|
44
|
-
return response.recommendedUsers;
|
|
45
|
-
});
|
|
46
|
-
};
|
|
47
|
-
|
|
48
|
-
export default getUserRecommendations;
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
|
|
2
|
-
import _createClass from "@babel/runtime/helpers/createClass";
|
|
3
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
4
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
5
|
-
import { MentionNameStatus } from '../types';
|
|
6
|
-
import { graphqlQuery } from './graphqlUtils';
|
|
7
|
-
import { config } from '../config';
|
|
8
|
-
|
|
9
|
-
var buildUsersQuery = function buildUsersQuery(accountIds) {
|
|
10
|
-
return {
|
|
11
|
-
query: "query usersQuery($accountIds: [ID!]!) {\n users(accountIds: $accountIds) {\n name\n accountId\n }\n }",
|
|
12
|
-
variables: {
|
|
13
|
-
accountIds: accountIds
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
var makeRequest = /*#__PURE__*/function () {
|
|
19
|
-
var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(url, accountIds) {
|
|
20
|
-
var query;
|
|
21
|
-
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
22
|
-
while (1) {
|
|
23
|
-
switch (_context.prev = _context.next) {
|
|
24
|
-
case 0:
|
|
25
|
-
query = buildUsersQuery(accountIds);
|
|
26
|
-
return _context.abrupt("return", graphqlQuery(url, query));
|
|
27
|
-
|
|
28
|
-
case 2:
|
|
29
|
-
case "end":
|
|
30
|
-
return _context.stop();
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
}, _callee);
|
|
34
|
-
}));
|
|
35
|
-
|
|
36
|
-
return function makeRequest(_x, _x2) {
|
|
37
|
-
return _ref.apply(this, arguments);
|
|
38
|
-
};
|
|
39
|
-
}();
|
|
40
|
-
|
|
41
|
-
export var DefaultMentionNameResolver = /*#__PURE__*/function () {
|
|
42
|
-
function DefaultMentionNameResolver(baseUrl) {
|
|
43
|
-
_classCallCheck(this, DefaultMentionNameResolver);
|
|
44
|
-
|
|
45
|
-
this.baseUrl = baseUrl;
|
|
46
|
-
this.cache = new Map();
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
_createClass(DefaultMentionNameResolver, [{
|
|
50
|
-
key: "lookupName",
|
|
51
|
-
value: function () {
|
|
52
|
-
var _lookupName = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee2(id) {
|
|
53
|
-
var _data$users, url, data, userInfo;
|
|
54
|
-
|
|
55
|
-
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
56
|
-
while (1) {
|
|
57
|
-
switch (_context2.prev = _context2.next) {
|
|
58
|
-
case 0:
|
|
59
|
-
_context2.prev = 0;
|
|
60
|
-
|
|
61
|
-
if (!this.cache.has(id)) {
|
|
62
|
-
_context2.next = 3;
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
return _context2.abrupt("return", {
|
|
67
|
-
id: id,
|
|
68
|
-
name: this.cache.get(id),
|
|
69
|
-
status: MentionNameStatus.OK
|
|
70
|
-
});
|
|
71
|
-
|
|
72
|
-
case 3:
|
|
73
|
-
url = config.getGraphQLUrl(this.baseUrl);
|
|
74
|
-
_context2.next = 6;
|
|
75
|
-
return makeRequest(url, [id]);
|
|
76
|
-
|
|
77
|
-
case 6:
|
|
78
|
-
data = _context2.sent;
|
|
79
|
-
userInfo = (_data$users = data.users) === null || _data$users === void 0 ? void 0 : _data$users.find(function (user) {
|
|
80
|
-
return user.accountId === id;
|
|
81
|
-
});
|
|
82
|
-
return _context2.abrupt("return", userInfo ? {
|
|
83
|
-
id: id,
|
|
84
|
-
name: userInfo.name,
|
|
85
|
-
status: MentionNameStatus.OK
|
|
86
|
-
} : {
|
|
87
|
-
id: id,
|
|
88
|
-
status: MentionNameStatus.UNKNOWN
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
case 11:
|
|
92
|
-
_context2.prev = 11;
|
|
93
|
-
_context2.t0 = _context2["catch"](0);
|
|
94
|
-
return _context2.abrupt("return", {
|
|
95
|
-
id: id,
|
|
96
|
-
status: MentionNameStatus.UNKNOWN
|
|
97
|
-
});
|
|
98
|
-
|
|
99
|
-
case 14:
|
|
100
|
-
case "end":
|
|
101
|
-
return _context2.stop();
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}, _callee2, this, [[0, 11]]);
|
|
105
|
-
}));
|
|
106
|
-
|
|
107
|
-
function lookupName(_x3) {
|
|
108
|
-
return _lookupName.apply(this, arguments);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
return lookupName;
|
|
112
|
-
}()
|
|
113
|
-
}, {
|
|
114
|
-
key: "cacheName",
|
|
115
|
-
value: function cacheName(id, name) {
|
|
116
|
-
this.cache.set(id, name);
|
|
117
|
-
}
|
|
118
|
-
}]);
|
|
119
|
-
|
|
120
|
-
return DefaultMentionNameResolver;
|
|
121
|
-
}();
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
var buildHeaders = function buildHeaders() {
|
|
2
|
-
var headers = new Headers();
|
|
3
|
-
headers.append('Content-Type', 'application/json');
|
|
4
|
-
return headers;
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @param {string} serviceUrl - GraphQL service endpoint
|
|
9
|
-
* @param {Query} query - GraphQL query
|
|
10
|
-
*/
|
|
11
|
-
export function graphqlQuery(serviceUrl, query) {
|
|
12
|
-
var headers = buildHeaders();
|
|
13
|
-
return fetch(new Request("".concat(serviceUrl), {
|
|
14
|
-
method: 'POST',
|
|
15
|
-
credentials: 'include',
|
|
16
|
-
mode: 'cors',
|
|
17
|
-
headers: headers,
|
|
18
|
-
body: JSON.stringify(query)
|
|
19
|
-
})).then(function (response) {
|
|
20
|
-
if (!response.ok) {
|
|
21
|
-
return Promise.reject({
|
|
22
|
-
code: response.status,
|
|
23
|
-
reason: response.statusText
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
return response;
|
|
28
|
-
}).then(function (response) {
|
|
29
|
-
return response.json();
|
|
30
|
-
}).then(function (json) {
|
|
31
|
-
if (json.errors) {
|
|
32
|
-
var _json$errors$;
|
|
33
|
-
|
|
34
|
-
return Promise.reject({
|
|
35
|
-
reason: ((_json$errors$ = json.errors[0]) === null || _json$errors$ === void 0 ? void 0 : _json$errors$.category) || 'default'
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
return json.data;
|
|
40
|
-
});
|
|
41
|
-
}
|
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { MentionContextIdentifier, MentionsResult, MentionDescription, MentionNameDetails, MentionNameResolver } from '../types';
|
|
2
|
-
import { AbstractMentionResource, ResolvingMentionProvider } from '../resource';
|
|
3
|
-
export interface SmartMentionConfig {
|
|
4
|
-
baseUrl?: string;
|
|
5
|
-
/**
|
|
6
|
-
* Use 'prod' for setting the env to a Stargate-supported endpoint
|
|
7
|
-
*/
|
|
8
|
-
env?: 'prod' | 'local';
|
|
9
|
-
/**
|
|
10
|
-
* Defaults to 'Context', which will extract the principalId from the
|
|
11
|
-
* JWT header.
|
|
12
|
-
*/
|
|
13
|
-
principalId?: string;
|
|
14
|
-
/**
|
|
15
|
-
* Platform search is only available for certain products. Please
|
|
16
|
-
* reach out to #help-smart-experiences to check.
|
|
17
|
-
* Use productKey='people' if you are waiting for a product scope.
|
|
18
|
-
*/
|
|
19
|
-
productKey: string;
|
|
20
|
-
/**
|
|
21
|
-
* Lucene-type query to proxy onto the search service.
|
|
22
|
-
*/
|
|
23
|
-
searchQueryFilter?: string;
|
|
24
|
-
/**
|
|
25
|
-
* AKA tenantId/cloudId.
|
|
26
|
-
*/
|
|
27
|
-
siteId: string;
|
|
28
|
-
/**
|
|
29
|
-
* Resolves a team's ID to the team name.
|
|
30
|
-
*/
|
|
31
|
-
teamLinkResolver?: (teamId: string) => string;
|
|
32
|
-
includeUsers?: boolean;
|
|
33
|
-
includeTeams?: boolean;
|
|
34
|
-
includeGroups?: boolean;
|
|
35
|
-
mentionNameResolver?: MentionNameResolver;
|
|
36
|
-
/**
|
|
37
|
-
* Function to determine whether to highlight the mention result.
|
|
38
|
-
*/
|
|
39
|
-
shouldHighlightMention?: (mention: MentionDescription) => boolean;
|
|
40
|
-
/**
|
|
41
|
-
* Max number of results to show in the suggestions list.
|
|
42
|
-
*/
|
|
43
|
-
maxNumberOfResults?: number;
|
|
44
|
-
}
|
|
45
|
-
declare class SmartMentionResource extends AbstractMentionResource implements ResolvingMentionProvider {
|
|
46
|
-
private smartMentionConfig;
|
|
47
|
-
private lastReturnedSearch;
|
|
48
|
-
private contextIdentifier?;
|
|
49
|
-
constructor(smartMentionConfig: SmartMentionConfig);
|
|
50
|
-
shouldHighlightMention(mention: MentionDescription): boolean;
|
|
51
|
-
notify(searchTime: number, mentionResult: MentionsResult, query?: string): void;
|
|
52
|
-
notifyError(error: Error, query?: string): void;
|
|
53
|
-
filter(query?: string, contextIdentifier?: MentionContextIdentifier): Promise<void>;
|
|
54
|
-
getRecommendedMentions(query: string, contextIdentifier?: MentionContextIdentifier): Promise<MentionsResult>;
|
|
55
|
-
private transformTeamMember;
|
|
56
|
-
private transformUserToMention;
|
|
57
|
-
private transformUsersToMentions;
|
|
58
|
-
cacheMentionName(id: string, mentionName: string): void;
|
|
59
|
-
resolveMentionName(id: string): Promise<MentionNameDetails> | MentionNameDetails;
|
|
60
|
-
supportsMentionNameResolving(): boolean;
|
|
61
|
-
recordMentionSelection(_mention: MentionDescription): void;
|
|
62
|
-
}
|
|
63
|
-
export default SmartMentionResource;
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
export interface RecommendationRequest {
|
|
2
|
-
baseUrl?: string;
|
|
3
|
-
context: Context;
|
|
4
|
-
maxNumberOfResults: number;
|
|
5
|
-
query?: string;
|
|
6
|
-
searchQueryFilter?: string;
|
|
7
|
-
includeUsers?: boolean;
|
|
8
|
-
includeGroups?: boolean;
|
|
9
|
-
includeTeams?: boolean;
|
|
10
|
-
fireAnalytics?: boolean;
|
|
11
|
-
}
|
|
12
|
-
export interface RecommendationResponse {
|
|
13
|
-
errors?: any[];
|
|
14
|
-
recommendedUsers: RecommendationItem[];
|
|
15
|
-
}
|
|
16
|
-
export interface Context {
|
|
17
|
-
containerId?: string;
|
|
18
|
-
contextType: string;
|
|
19
|
-
objectId?: string;
|
|
20
|
-
sessionId?: string;
|
|
21
|
-
principalId: string;
|
|
22
|
-
childObjectId?: string;
|
|
23
|
-
productKey: string;
|
|
24
|
-
siteId: string;
|
|
25
|
-
productAttributes?: ProductAttributes;
|
|
26
|
-
}
|
|
27
|
-
export interface BitbucketAttributes {
|
|
28
|
-
/**
|
|
29
|
-
* Identifies whether this is a public repository or not.
|
|
30
|
-
*/
|
|
31
|
-
isPublicRepo?: boolean;
|
|
32
|
-
/**
|
|
33
|
-
* A list of bitbucket workspace Ids used within container result set and noted in analytics.
|
|
34
|
-
*/
|
|
35
|
-
workspaceIds?: string[];
|
|
36
|
-
/**
|
|
37
|
-
* The users current email domain which may be used to boost the results for relevant users.
|
|
38
|
-
*/
|
|
39
|
-
emailDomain?: string;
|
|
40
|
-
}
|
|
41
|
-
export declare type ProductAttributes = BitbucketAttributes;
|
|
42
|
-
export declare enum EntityType {
|
|
43
|
-
USER = "USER",
|
|
44
|
-
TEAM = "TEAM",
|
|
45
|
-
GROUP = "GROUP"
|
|
46
|
-
}
|
|
47
|
-
export interface RecommendationItem {
|
|
48
|
-
id: string;
|
|
49
|
-
name?: string;
|
|
50
|
-
entityType: EntityType;
|
|
51
|
-
avatarUrl: string;
|
|
52
|
-
description?: string;
|
|
53
|
-
teamAri?: string;
|
|
54
|
-
displayName?: string;
|
|
55
|
-
}
|
|
56
|
-
export interface UserRecommendation extends RecommendationItem {
|
|
57
|
-
name: string;
|
|
58
|
-
nickname?: string;
|
|
59
|
-
entityType: EntityType.USER;
|
|
60
|
-
email?: string;
|
|
61
|
-
attributes?: Record<string, string>;
|
|
62
|
-
accessLevel?: string;
|
|
63
|
-
userType?: string;
|
|
64
|
-
}
|
|
65
|
-
export interface MemberItem {
|
|
66
|
-
id: string;
|
|
67
|
-
name: string;
|
|
68
|
-
}
|
|
69
|
-
export interface TeamRecommendation extends RecommendationItem {
|
|
70
|
-
displayName?: string;
|
|
71
|
-
entityType: EntityType.TEAM;
|
|
72
|
-
description?: string;
|
|
73
|
-
largeAvatarImageUrl?: string;
|
|
74
|
-
smallAvatarImageUrl?: string;
|
|
75
|
-
memberCount?: number;
|
|
76
|
-
includesYou?: boolean;
|
|
77
|
-
members: MemberItem[];
|
|
78
|
-
}
|
|
79
|
-
export interface GroupRecommendation extends RecommendationItem {
|
|
80
|
-
entityType: EntityType.GROUP;
|
|
81
|
-
}
|