@atlaskit/editor-plugin-mentions 0.1.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/.eslintrc.js +7 -0
- package/CHANGELOG.md +1 -0
- package/LICENSE.md +13 -0
- package/README.md +9 -0
- package/dist/cjs/analytics.js +157 -0
- package/dist/cjs/index.js +12 -0
- package/dist/cjs/messages.js +29 -0
- package/dist/cjs/nodeviews/mention.js +117 -0
- package/dist/cjs/plugin.js +135 -0
- package/dist/cjs/pm-plugins/key.js +8 -0
- package/dist/cjs/pm-plugins/main.js +156 -0
- package/dist/cjs/pm-plugins/utils.js +23 -0
- package/dist/cjs/type-ahead/index.js +362 -0
- package/dist/cjs/types.js +5 -0
- package/dist/cjs/ui/InviteItem/index.js +76 -0
- package/dist/cjs/ui/InviteItem/styles.js +19 -0
- package/dist/cjs/ui/Mention/index.js +98 -0
- package/dist/cjs/ui/ToolbarMention/index.js +63 -0
- package/dist/cjs/utils.js +32 -0
- package/dist/es2019/analytics.js +147 -0
- package/dist/es2019/index.js +1 -0
- package/dist/es2019/messages.js +23 -0
- package/dist/es2019/nodeviews/mention.js +80 -0
- package/dist/es2019/plugin.js +123 -0
- package/dist/es2019/pm-plugins/key.js +2 -0
- package/dist/es2019/pm-plugins/main.js +143 -0
- package/dist/es2019/pm-plugins/utils.js +14 -0
- package/dist/es2019/type-ahead/index.js +338 -0
- package/dist/es2019/types.js +1 -0
- package/dist/es2019/ui/InviteItem/index.js +67 -0
- package/dist/es2019/ui/InviteItem/styles.js +47 -0
- package/dist/es2019/ui/Mention/index.js +70 -0
- package/dist/es2019/ui/ToolbarMention/index.js +33 -0
- package/dist/es2019/utils.js +20 -0
- package/dist/esm/analytics.js +150 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/messages.js +23 -0
- package/dist/esm/nodeviews/mention.js +107 -0
- package/dist/esm/plugin.js +129 -0
- package/dist/esm/pm-plugins/key.js +2 -0
- package/dist/esm/pm-plugins/main.js +148 -0
- package/dist/esm/pm-plugins/utils.js +16 -0
- package/dist/esm/type-ahead/index.js +350 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/ui/InviteItem/index.js +66 -0
- package/dist/esm/ui/InviteItem/styles.js +12 -0
- package/dist/esm/ui/Mention/index.js +90 -0
- package/dist/esm/ui/ToolbarMention/index.js +53 -0
- package/dist/esm/utils.js +26 -0
- package/dist/types/analytics.d.ts +13 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/messages.d.ts +22 -0
- package/dist/types/nodeviews/mention.d.ts +9 -0
- package/dist/types/plugin.d.ts +3 -0
- package/dist/types/pm-plugins/key.d.ts +3 -0
- package/dist/types/pm-plugins/main.d.ts +6 -0
- package/dist/types/pm-plugins/utils.d.ts +4 -0
- package/dist/types/type-ahead/index.d.ts +17 -0
- package/dist/types/types.d.ts +38 -0
- package/dist/types/ui/InviteItem/index.d.ts +24 -0
- package/dist/types/ui/InviteItem/styles.d.ts +8 -0
- package/dist/types/ui/Mention/index.d.ts +19 -0
- package/dist/types/ui/ToolbarMention/index.d.ts +13 -0
- package/dist/types/utils.d.ts +8 -0
- package/dist/types-ts4.5/analytics.d.ts +13 -0
- package/dist/types-ts4.5/index.d.ts +2 -0
- package/dist/types-ts4.5/messages.d.ts +22 -0
- package/dist/types-ts4.5/nodeviews/mention.d.ts +9 -0
- package/dist/types-ts4.5/plugin.d.ts +3 -0
- package/dist/types-ts4.5/pm-plugins/key.d.ts +3 -0
- package/dist/types-ts4.5/pm-plugins/main.d.ts +6 -0
- package/dist/types-ts4.5/pm-plugins/utils.d.ts +4 -0
- package/dist/types-ts4.5/type-ahead/index.d.ts +17 -0
- package/dist/types-ts4.5/types.d.ts +41 -0
- package/dist/types-ts4.5/ui/InviteItem/index.d.ts +24 -0
- package/dist/types-ts4.5/ui/InviteItem/styles.d.ts +8 -0
- package/dist/types-ts4.5/ui/Mention/index.d.ts +19 -0
- package/dist/types-ts4.5/ui/ToolbarMention/index.d.ts +13 -0
- package/dist/types-ts4.5/utils.d.ts +8 -0
- package/package.json +112 -0
- package/report.api.md +92 -0
- package/tmp/api-report-tmp.d.ts +63 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.canMentionBeCreatedInRange = void 0;
|
|
7
|
+
exports.getMentionPluginState = getMentionPluginState;
|
|
8
|
+
var _utils = require("@atlaskit/editor-prosemirror/utils");
|
|
9
|
+
var _key = require("./key");
|
|
10
|
+
function getMentionPluginState(state) {
|
|
11
|
+
return _key.mentionPluginKey.getState(state);
|
|
12
|
+
}
|
|
13
|
+
var canMentionBeCreatedInRange = exports.canMentionBeCreatedInRange = function canMentionBeCreatedInRange(from, to) {
|
|
14
|
+
return function (state) {
|
|
15
|
+
var $from = state.doc.resolve(from);
|
|
16
|
+
var $to = state.doc.resolve(to);
|
|
17
|
+
var mention = state.schema.nodes.mention.createChecked();
|
|
18
|
+
if ($from.parent === $to.parent && (0, _utils.canInsert)($from, mention)) {
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
};
|
|
23
|
+
};
|
|
@@ -0,0 +1,362 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.createTypeAheadConfig = void 0;
|
|
9
|
+
exports.memoize = memoize;
|
|
10
|
+
exports.mentionToTypeaheadItem = void 0;
|
|
11
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
12
|
+
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
13
|
+
var _react = _interopRequireDefault(require("react"));
|
|
14
|
+
var _uuid = _interopRequireDefault(require("uuid"));
|
|
15
|
+
var _typeAhead = require("@atlaskit/editor-common/type-ahead");
|
|
16
|
+
var _model = require("@atlaskit/editor-prosemirror/model");
|
|
17
|
+
var _item = require("@atlaskit/mention/item");
|
|
18
|
+
var _resource = require("@atlaskit/mention/resource");
|
|
19
|
+
var _analytics = require("../analytics");
|
|
20
|
+
var _utils = require("../pm-plugins/utils");
|
|
21
|
+
var _InviteItem = _interopRequireWildcard(require("../ui/InviteItem"));
|
|
22
|
+
var _utils2 = require("../utils");
|
|
23
|
+
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); }
|
|
24
|
+
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; }
|
|
25
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
|
|
26
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
27
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
28
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
29
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2.default)(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
30
|
+
var createInviteItem = function createInviteItem(_ref) {
|
|
31
|
+
var mentionProvider = _ref.mentionProvider,
|
|
32
|
+
onInviteItemMount = _ref.onInviteItemMount;
|
|
33
|
+
return {
|
|
34
|
+
title: _InviteItem.INVITE_ITEM_DESCRIPTION.id,
|
|
35
|
+
render: function render(_ref2) {
|
|
36
|
+
var isSelected = _ref2.isSelected,
|
|
37
|
+
onClick = _ref2.onClick,
|
|
38
|
+
onHover = _ref2.onHover;
|
|
39
|
+
return /*#__PURE__*/_react.default.createElement(_InviteItem.default, {
|
|
40
|
+
productName: mentionProvider ? mentionProvider.productName : undefined,
|
|
41
|
+
selected: isSelected,
|
|
42
|
+
onMount: onInviteItemMount,
|
|
43
|
+
onMouseEnter: onHover,
|
|
44
|
+
onSelection: onClick,
|
|
45
|
+
userRole: mentionProvider.userRole
|
|
46
|
+
});
|
|
47
|
+
},
|
|
48
|
+
mention: _InviteItem.INVITE_ITEM_DESCRIPTION
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
var withInviteItem = function withInviteItem(_ref3) {
|
|
52
|
+
var mentionProvider = _ref3.mentionProvider,
|
|
53
|
+
firstQueryWithoutResults = _ref3.firstQueryWithoutResults,
|
|
54
|
+
currentQuery = _ref3.currentQuery,
|
|
55
|
+
onInviteItemMount = _ref3.onInviteItemMount;
|
|
56
|
+
return function (mentionItems) {
|
|
57
|
+
var inviteItem = createInviteItem({
|
|
58
|
+
mentionProvider: mentionProvider,
|
|
59
|
+
onInviteItemMount: onInviteItemMount
|
|
60
|
+
});
|
|
61
|
+
var keepInviteItem = (0, _utils2.shouldKeepInviteItem)(currentQuery, firstQueryWithoutResults);
|
|
62
|
+
if (mentionItems.length === 0) {
|
|
63
|
+
return keepInviteItem ? [inviteItem] : [];
|
|
64
|
+
}
|
|
65
|
+
return [].concat((0, _toConsumableArray2.default)(mentionItems), [
|
|
66
|
+
// invite item should be shown at the bottom
|
|
67
|
+
inviteItem]);
|
|
68
|
+
};
|
|
69
|
+
};
|
|
70
|
+
var mentionToTypeaheadItem = exports.mentionToTypeaheadItem = function mentionToTypeaheadItem(mention) {
|
|
71
|
+
return {
|
|
72
|
+
title: mention.id,
|
|
73
|
+
render: function render(_ref4) {
|
|
74
|
+
var isSelected = _ref4.isSelected,
|
|
75
|
+
onClick = _ref4.onClick,
|
|
76
|
+
onHover = _ref4.onHover;
|
|
77
|
+
return /*#__PURE__*/_react.default.createElement(_item.MentionItem, {
|
|
78
|
+
mention: mention,
|
|
79
|
+
selected: isSelected,
|
|
80
|
+
onMouseEnter: onHover,
|
|
81
|
+
onSelection: onClick
|
|
82
|
+
});
|
|
83
|
+
},
|
|
84
|
+
getCustomComponentHeight: function getCustomComponentHeight() {
|
|
85
|
+
return _item.MENTION_ITEM_HEIGHT;
|
|
86
|
+
},
|
|
87
|
+
mention: mention
|
|
88
|
+
};
|
|
89
|
+
};
|
|
90
|
+
function memoize(fn) {
|
|
91
|
+
// Cache results here
|
|
92
|
+
var seen = new Map();
|
|
93
|
+
function memoized(mention) {
|
|
94
|
+
// Check cache for hits
|
|
95
|
+
var hit = seen.get(mention.id);
|
|
96
|
+
if (hit) {
|
|
97
|
+
return hit;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Generate new result and cache it
|
|
101
|
+
var result = fn(mention);
|
|
102
|
+
seen.set(mention.id, result);
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
call: memoized,
|
|
107
|
+
clear: seen.clear.bind(seen)
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
var memoizedToItem = memoize(mentionToTypeaheadItem);
|
|
111
|
+
var buildAndSendElementsTypeAheadAnalytics = function buildAndSendElementsTypeAheadAnalytics(fireEvent) {
|
|
112
|
+
return function (_ref5) {
|
|
113
|
+
var query = _ref5.query,
|
|
114
|
+
mentions = _ref5.mentions,
|
|
115
|
+
stats = _ref5.stats;
|
|
116
|
+
var duration = 0;
|
|
117
|
+
var userOrTeamIds = null;
|
|
118
|
+
var teams = null;
|
|
119
|
+
if (!(0, _utils2.isTeamStats)(stats)) {
|
|
120
|
+
// is from primary mention endpoint which could be just user mentions or user/team mentions
|
|
121
|
+
duration = stats && stats.duration;
|
|
122
|
+
teams = null;
|
|
123
|
+
userOrTeamIds = mentions.map(function (mention) {
|
|
124
|
+
return mention.id;
|
|
125
|
+
});
|
|
126
|
+
} else {
|
|
127
|
+
// is from dedicated team-only mention endpoint
|
|
128
|
+
duration = stats && stats.teamMentionDuration;
|
|
129
|
+
userOrTeamIds = null;
|
|
130
|
+
teams = mentions.map(function (mention) {
|
|
131
|
+
return (0, _utils2.isTeamType)(mention.userType) ? {
|
|
132
|
+
teamId: mention.id,
|
|
133
|
+
includesYou: mention.context.includesYou,
|
|
134
|
+
memberCount: mention.context.memberCount
|
|
135
|
+
} : null;
|
|
136
|
+
}).filter(function (m) {
|
|
137
|
+
return !!m;
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
var payload = (0, _analytics.buildTypeAheadRenderedPayload)(duration, userOrTeamIds, query, teams);
|
|
141
|
+
fireEvent(payload);
|
|
142
|
+
};
|
|
143
|
+
};
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* When a team mention is selected, we render a team link and list of member/user mentions
|
|
147
|
+
* in editor content
|
|
148
|
+
*/
|
|
149
|
+
var buildNodesForTeamMention = function buildNodesForTeamMention(schema, selectedMention, mentionProvider, sanitizePrivateContent) {
|
|
150
|
+
var nodes = schema.nodes,
|
|
151
|
+
marks = schema.marks;
|
|
152
|
+
var name = selectedMention.name,
|
|
153
|
+
teamId = selectedMention.id,
|
|
154
|
+
accessLevel = selectedMention.accessLevel,
|
|
155
|
+
context = selectedMention.context;
|
|
156
|
+
|
|
157
|
+
// build team link
|
|
158
|
+
var defaultTeamLink = "".concat(window.location.origin, "/people/team/").concat(teamId);
|
|
159
|
+
var teamLink = context && context.teamLink ? context.teamLink : defaultTeamLink;
|
|
160
|
+
var teamLinkNode = schema.text(name, [marks.link.create({
|
|
161
|
+
href: teamLink
|
|
162
|
+
})]);
|
|
163
|
+
var openBracketText = schema.text('(');
|
|
164
|
+
var closeBracketText = schema.text(')');
|
|
165
|
+
var emptySpaceText = schema.text(' ');
|
|
166
|
+
var inlineNodes = [teamLinkNode, emptySpaceText, openBracketText];
|
|
167
|
+
var members = context && context.members ? context.members : [];
|
|
168
|
+
members.forEach(function (member, index) {
|
|
169
|
+
var name = member.name,
|
|
170
|
+
id = member.id;
|
|
171
|
+
var mentionName = "@".concat(name);
|
|
172
|
+
var text = sanitizePrivateContent ? '' : mentionName;
|
|
173
|
+
if (sanitizePrivateContent && (0, _resource.isResolvingMentionProvider)(mentionProvider)) {
|
|
174
|
+
mentionProvider.cacheMentionName(id, name);
|
|
175
|
+
}
|
|
176
|
+
var userMentionNode = nodes.mention.createChecked({
|
|
177
|
+
text: text,
|
|
178
|
+
id: member.id,
|
|
179
|
+
accessLevel: accessLevel,
|
|
180
|
+
userType: 'DEFAULT'
|
|
181
|
+
});
|
|
182
|
+
inlineNodes.push(userMentionNode);
|
|
183
|
+
// should not add empty space after the last user mention.
|
|
184
|
+
if (index !== members.length - 1) {
|
|
185
|
+
inlineNodes.push(emptySpaceText);
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
inlineNodes.push(closeBracketText);
|
|
189
|
+
return _model.Fragment.fromArray(inlineNodes);
|
|
190
|
+
};
|
|
191
|
+
var createTypeAheadConfig = exports.createTypeAheadConfig = function createTypeAheadConfig(_ref6) {
|
|
192
|
+
var sanitizePrivateContent = _ref6.sanitizePrivateContent,
|
|
193
|
+
mentionInsertDisplayName = _ref6.mentionInsertDisplayName,
|
|
194
|
+
fireEvent = _ref6.fireEvent,
|
|
195
|
+
HighlightComponent = _ref6.HighlightComponent;
|
|
196
|
+
var sessionId = (0, _uuid.default)();
|
|
197
|
+
var firstQueryWithoutResults = null;
|
|
198
|
+
var subscriptionKeys = new Set();
|
|
199
|
+
var typeAhead = {
|
|
200
|
+
id: _typeAhead.TypeAheadAvailableNodes.MENTION,
|
|
201
|
+
trigger: '@',
|
|
202
|
+
// Custom regex must have a capture group around trigger
|
|
203
|
+
// so it's possible to use it without needing to scan through all triggers again
|
|
204
|
+
customRegex: '\\(?(@)',
|
|
205
|
+
getHighlight: function getHighlight(state) {
|
|
206
|
+
var CustomHighlightComponent = HighlightComponent;
|
|
207
|
+
if (CustomHighlightComponent) {
|
|
208
|
+
return /*#__PURE__*/_react.default.createElement(CustomHighlightComponent, null);
|
|
209
|
+
}
|
|
210
|
+
return null;
|
|
211
|
+
},
|
|
212
|
+
getItems: function getItems(_ref7) {
|
|
213
|
+
var query = _ref7.query,
|
|
214
|
+
editorState = _ref7.editorState;
|
|
215
|
+
var pluginState = (0, _utils.getMentionPluginState)(editorState);
|
|
216
|
+
if (!(pluginState !== null && pluginState !== void 0 && pluginState.mentionProvider)) {
|
|
217
|
+
return Promise.resolve([]);
|
|
218
|
+
}
|
|
219
|
+
var mentionProvider = pluginState.mentionProvider,
|
|
220
|
+
contextIdentifierProvider = pluginState.contextIdentifierProvider;
|
|
221
|
+
return new Promise(function (resolve) {
|
|
222
|
+
var key = "loadingMentionsForTypeAhead_".concat((0, _uuid.default)());
|
|
223
|
+
var mentionsSubscribeCallback = function mentionsSubscribeCallback(mentions) {
|
|
224
|
+
var resultQuery = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
|
|
225
|
+
var stats = arguments.length > 2 ? arguments[2] : undefined;
|
|
226
|
+
if (query !== resultQuery) {
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
mentionProvider.unsubscribe(key);
|
|
230
|
+
subscriptionKeys.delete(key);
|
|
231
|
+
var mentionItems = mentions.map(function (mention) {
|
|
232
|
+
return memoizedToItem.call(mention);
|
|
233
|
+
});
|
|
234
|
+
buildAndSendElementsTypeAheadAnalytics(fireEvent)({
|
|
235
|
+
query: query,
|
|
236
|
+
mentions: mentions,
|
|
237
|
+
stats: stats
|
|
238
|
+
});
|
|
239
|
+
if (mentions.length === 0 && firstQueryWithoutResults === null) {
|
|
240
|
+
firstQueryWithoutResults = query;
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
// Growth (El-dorado) experiment design hard requirement
|
|
244
|
+
if (mentionItems.length <= 2) {
|
|
245
|
+
var inviteExperimentCohort = mentionProvider.inviteExperimentCohort,
|
|
246
|
+
userRole = mentionProvider.userRole;
|
|
247
|
+
fireEvent((0, _analytics.buildTypeAheadInviteExposurePayload)(sessionId, contextIdentifierProvider, inviteExperimentCohort, userRole));
|
|
248
|
+
}
|
|
249
|
+
if (!mentionProvider.shouldEnableInvite || mentionItems.length > 2) {
|
|
250
|
+
resolve(mentionItems);
|
|
251
|
+
} else {
|
|
252
|
+
var items = withInviteItem({
|
|
253
|
+
mentionProvider: mentionProvider,
|
|
254
|
+
firstQueryWithoutResults: firstQueryWithoutResults || '',
|
|
255
|
+
currentQuery: query,
|
|
256
|
+
onInviteItemMount: function onInviteItemMount() {
|
|
257
|
+
fireEvent((0, _analytics.buildTypeAheadInviteItemViewedPayload)(sessionId, contextIdentifierProvider, mentionProvider.userRole));
|
|
258
|
+
}
|
|
259
|
+
})(mentionItems);
|
|
260
|
+
resolve(items);
|
|
261
|
+
}
|
|
262
|
+
};
|
|
263
|
+
subscriptionKeys.add(key);
|
|
264
|
+
mentionProvider.subscribe(key, mentionsSubscribeCallback);
|
|
265
|
+
mentionProvider.filter(query || '', _objectSpread(_objectSpread({}, contextIdentifierProvider), {}, {
|
|
266
|
+
sessionId: sessionId
|
|
267
|
+
}));
|
|
268
|
+
});
|
|
269
|
+
},
|
|
270
|
+
onOpen: function onOpen() {
|
|
271
|
+
firstQueryWithoutResults = null;
|
|
272
|
+
},
|
|
273
|
+
selectItem: function selectItem(state, item, insert, _ref8) {
|
|
274
|
+
var mode = _ref8.mode,
|
|
275
|
+
stats = _ref8.stats,
|
|
276
|
+
query = _ref8.query,
|
|
277
|
+
sourceListItem = _ref8.sourceListItem;
|
|
278
|
+
var schema = state.schema;
|
|
279
|
+
var pluginState = (0, _utils.getMentionPluginState)(state);
|
|
280
|
+
var mentionProvider = pluginState.mentionProvider;
|
|
281
|
+
var _item$mention = item.mention,
|
|
282
|
+
id = _item$mention.id,
|
|
283
|
+
name = _item$mention.name,
|
|
284
|
+
nickname = _item$mention.nickname,
|
|
285
|
+
accessLevel = _item$mention.accessLevel,
|
|
286
|
+
userType = _item$mention.userType;
|
|
287
|
+
var trimmedNickname = nickname && nickname.startsWith('@') ? nickname.slice(1) : nickname;
|
|
288
|
+
var renderName = mentionInsertDisplayName || !trimmedNickname ? name : trimmedNickname;
|
|
289
|
+
var mentionContext = _objectSpread(_objectSpread({}, pluginState.contextIdentifierProvider), {}, {
|
|
290
|
+
sessionId: sessionId
|
|
291
|
+
});
|
|
292
|
+
if (mentionProvider && !(0, _utils2.isInviteItem)(item.mention)) {
|
|
293
|
+
mentionProvider.recordMentionSelection(item.mention, mentionContext);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
// use same timer as StatsModifier
|
|
297
|
+
var pickerElapsedTime = stats.startedAt ? performance.now() - stats.startedAt : 0;
|
|
298
|
+
if (mentionProvider && mentionProvider.shouldEnableInvite && (0, _utils2.isInviteItem)(item.mention)) {
|
|
299
|
+
// Don't fire event and the callback with selection by space press
|
|
300
|
+
if (mode !== 'space') {
|
|
301
|
+
fireEvent((0, _analytics.buildTypeAheadInviteItemClickedPayload)(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, mode, query, pluginState.contextIdentifierProvider, mentionProvider.userRole));
|
|
302
|
+
if (mentionProvider.onInviteItemClick) {
|
|
303
|
+
mentionProvider.onInviteItemClick('mention');
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return state.tr;
|
|
307
|
+
}
|
|
308
|
+
fireEvent((0, _analytics.buildTypeAheadInsertedPayload)(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, mode, item.mention, sourceListItem.map(function (x) {
|
|
309
|
+
return x.mention;
|
|
310
|
+
}), query, pluginState.contextIdentifierProvider));
|
|
311
|
+
sessionId = (0, _uuid.default)();
|
|
312
|
+
if (mentionProvider && (0, _utils2.isTeamType)(userType)) {
|
|
313
|
+
return insert(buildNodesForTeamMention(schema, item.mention, mentionProvider, sanitizePrivateContent));
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
// Don't insert into document if document data is sanitized.
|
|
317
|
+
var text = sanitizePrivateContent ? '' : "@".concat(renderName);
|
|
318
|
+
if (sanitizePrivateContent && (0, _resource.isResolvingMentionProvider)(mentionProvider)) {
|
|
319
|
+
// Cache (locally) for later rendering
|
|
320
|
+
mentionProvider.cacheMentionName(id, renderName);
|
|
321
|
+
}
|
|
322
|
+
var mentionNode = schema.nodes.mention.createChecked({
|
|
323
|
+
text: text,
|
|
324
|
+
id: id,
|
|
325
|
+
accessLevel: accessLevel,
|
|
326
|
+
userType: userType === 'DEFAULT' ? null : userType
|
|
327
|
+
});
|
|
328
|
+
var space = schema.text(' ');
|
|
329
|
+
return insert(_model.Fragment.from([mentionNode, space]));
|
|
330
|
+
},
|
|
331
|
+
dismiss: function dismiss(_ref9) {
|
|
332
|
+
var editorState = _ref9.editorState,
|
|
333
|
+
query = _ref9.query,
|
|
334
|
+
stats = _ref9.stats,
|
|
335
|
+
wasItemInserted = _ref9.wasItemInserted;
|
|
336
|
+
firstQueryWithoutResults = null;
|
|
337
|
+
var pickerElapsedTime = stats.startedAt ? performance.now() - stats.startedAt : 0;
|
|
338
|
+
if (!wasItemInserted) {
|
|
339
|
+
fireEvent((0, _analytics.buildTypeAheadCancelPayload)(pickerElapsedTime, stats.keyCount.arrowUp, stats.keyCount.arrowDown, sessionId, query || ''));
|
|
340
|
+
}
|
|
341
|
+
var pluginState = (0, _utils.getMentionPluginState)(editorState);
|
|
342
|
+
if (pluginState !== null && pluginState !== void 0 && pluginState.mentionProvider) {
|
|
343
|
+
var mentionProvider = pluginState.mentionProvider;
|
|
344
|
+
var _iterator = _createForOfIteratorHelper(subscriptionKeys),
|
|
345
|
+
_step;
|
|
346
|
+
try {
|
|
347
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
348
|
+
var key = _step.value;
|
|
349
|
+
mentionProvider.unsubscribe(key);
|
|
350
|
+
}
|
|
351
|
+
} catch (err) {
|
|
352
|
+
_iterator.e(err);
|
|
353
|
+
} finally {
|
|
354
|
+
_iterator.f();
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
subscriptionKeys.clear();
|
|
358
|
+
sessionId = (0, _uuid.default)();
|
|
359
|
+
}
|
|
360
|
+
};
|
|
361
|
+
return typeAhead;
|
|
362
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = exports.INVITE_ITEM_DESCRIPTION = void 0;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
11
|
+
var _react2 = require("@emotion/react");
|
|
12
|
+
var _reactIntlNext = require("react-intl-next");
|
|
13
|
+
var _add = _interopRequireDefault(require("@atlaskit/icon/glyph/add"));
|
|
14
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
15
|
+
var _messages = require("../../messages");
|
|
16
|
+
var _styles = require("./styles");
|
|
17
|
+
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); }
|
|
18
|
+
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; }
|
|
19
|
+
/** @jsx jsx */
|
|
20
|
+
|
|
21
|
+
var INVITE_ITEM_DESCRIPTION = exports.INVITE_ITEM_DESCRIPTION = {
|
|
22
|
+
id: 'invite-teammate'
|
|
23
|
+
};
|
|
24
|
+
var leftClick = function leftClick(event) {
|
|
25
|
+
return event.button === 0 && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey;
|
|
26
|
+
};
|
|
27
|
+
var InviteItem = function InviteItem(_ref) {
|
|
28
|
+
var productName = _ref.productName,
|
|
29
|
+
onMount = _ref.onMount,
|
|
30
|
+
onMouseEnter = _ref.onMouseEnter,
|
|
31
|
+
onSelection = _ref.onSelection,
|
|
32
|
+
selected = _ref.selected,
|
|
33
|
+
userRole = _ref.userRole,
|
|
34
|
+
intl = _ref.intl;
|
|
35
|
+
var onSelected = (0, _react.useCallback)(function (event) {
|
|
36
|
+
if (leftClick(event) && onSelection) {
|
|
37
|
+
event.preventDefault();
|
|
38
|
+
onSelection(INVITE_ITEM_DESCRIPTION, event);
|
|
39
|
+
}
|
|
40
|
+
}, [onSelection]);
|
|
41
|
+
var onItemMouseEnter = (0, _react.useCallback)(function (event) {
|
|
42
|
+
if (onMouseEnter) {
|
|
43
|
+
onMouseEnter(INVITE_ITEM_DESCRIPTION, event);
|
|
44
|
+
}
|
|
45
|
+
}, [onMouseEnter]);
|
|
46
|
+
(0, _react.useEffect)(function () {
|
|
47
|
+
if (onMount) {
|
|
48
|
+
onMount();
|
|
49
|
+
}
|
|
50
|
+
}, [onMount]);
|
|
51
|
+
return (0, _react2.jsx)("div", {
|
|
52
|
+
css: [_styles.mentionItemStyle, selected && _styles.mentionItemSelectedStyle],
|
|
53
|
+
onMouseDown: onSelected,
|
|
54
|
+
onMouseEnter: onItemMouseEnter,
|
|
55
|
+
"data-id": INVITE_ITEM_DESCRIPTION.id
|
|
56
|
+
}, (0, _react2.jsx)("div", {
|
|
57
|
+
css: _styles.rowStyle
|
|
58
|
+
}, (0, _react2.jsx)("span", {
|
|
59
|
+
css: _styles.avatarStyle
|
|
60
|
+
}, (0, _react2.jsx)(_add.default, {
|
|
61
|
+
label: intl.formatMessage(_messages.messages.mentionsAddLabel),
|
|
62
|
+
primaryColor: "var(--ds-icon-subtle, ".concat(_colors.N300, ")")
|
|
63
|
+
})), (0, _react2.jsx)("div", {
|
|
64
|
+
css: _styles.nameSectionStyle,
|
|
65
|
+
"data-testid": "name-section"
|
|
66
|
+
}, (0, _react2.jsx)(_reactIntlNext.FormattedMessage, (0, _extends2.default)({}, _messages.messages.inviteItemTitle, {
|
|
67
|
+
values: {
|
|
68
|
+
userRole: userRole || 'basic',
|
|
69
|
+
productName: (0, _react2.jsx)("span", {
|
|
70
|
+
css: _styles.capitalizedStyle,
|
|
71
|
+
"data-testid": "capitalized-message"
|
|
72
|
+
}, productName)
|
|
73
|
+
}
|
|
74
|
+
})))));
|
|
75
|
+
};
|
|
76
|
+
var _default = exports.default = (0, _reactIntlNext.injectIntl)(InviteItem);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.rowStyle = exports.nameSectionStyle = exports.mentionItemStyle = exports.mentionItemSelectedStyle = exports.capitalizedStyle = exports.avatarStyle = exports.ROW_SIDE_PADDING = exports.AVATAR_HEIGHT = void 0;
|
|
8
|
+
var _taggedTemplateLiteral2 = _interopRequireDefault(require("@babel/runtime/helpers/taggedTemplateLiteral"));
|
|
9
|
+
var _react = require("@emotion/react");
|
|
10
|
+
var _colors = require("@atlaskit/theme/colors");
|
|
11
|
+
var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6;
|
|
12
|
+
var ROW_SIDE_PADDING = exports.ROW_SIDE_PADDING = 14;
|
|
13
|
+
var rowStyle = exports.rowStyle = (0, _react.css)(_templateObject || (_templateObject = (0, _taggedTemplateLiteral2.default)(["\n align-items: center;\n display: flex;\n flex-direction: row;\n flex-wrap: wrap;\n overflow: hidden;\n padding: ", " ", "px;\n text-overflow: ellipsis;\n vertical-align: middle;\n"])), "var(--ds-space-075, 6px)", ROW_SIDE_PADDING);
|
|
14
|
+
var AVATAR_HEIGHT = exports.AVATAR_HEIGHT = 36;
|
|
15
|
+
var avatarStyle = exports.avatarStyle = (0, _react.css)(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteral2.default)(["\n position: relative;\n flex: initial;\n opacity: inherit;\n width: 36px;\n height: ", "px;\n\n > span {\n width: 24px;\n height: 24px;\n padding: ", ";\n }\n"])), AVATAR_HEIGHT, "var(--ds-space-075, 6px)");
|
|
16
|
+
var nameSectionStyle = exports.nameSectionStyle = (0, _react.css)(_templateObject3 || (_templateObject3 = (0, _taggedTemplateLiteral2.default)(["\n flex: 1;\n min-width: 0;\n margin-left: 14px;\n color: ", ";\n opacity: inherit;\n"])), "var(--ds-text-subtle, ".concat(_colors.N300, ")"));
|
|
17
|
+
var mentionItemStyle = exports.mentionItemStyle = (0, _react.css)(_templateObject4 || (_templateObject4 = (0, _taggedTemplateLiteral2.default)(["\n background-color: transparent;\n display: block;\n overflow: hidden;\n list-style-type: none;\n cursor: pointer;\n"])));
|
|
18
|
+
var mentionItemSelectedStyle = exports.mentionItemSelectedStyle = (0, _react.css)(_templateObject5 || (_templateObject5 = (0, _taggedTemplateLiteral2.default)(["\n background-color: ", ";\n"])), "var(--ds-background-neutral-subtle-hovered, ".concat(_colors.N30, ")"));
|
|
19
|
+
var capitalizedStyle = exports.capitalizedStyle = (0, _react.css)(_templateObject6 || (_templateObject6 = (0, _taggedTemplateLiteral2.default)(["\n text-transform: capitalize;\n"])));
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
13
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
14
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
15
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
16
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
17
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
18
|
+
var _providerFactory = require("@atlaskit/editor-common/provider-factory");
|
|
19
|
+
var _utils = require("@atlaskit/editor-common/utils");
|
|
20
|
+
var _element = require("@atlaskit/mention/element");
|
|
21
|
+
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); }
|
|
22
|
+
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; }
|
|
23
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
24
|
+
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; } }
|
|
25
|
+
// Workaround for a firefox issue where dom selection is off sync
|
|
26
|
+
// https://product-fabric.atlassian.net/browse/ED-12442
|
|
27
|
+
var refreshBrowserSelection = function refreshBrowserSelection() {
|
|
28
|
+
var domSelection = window.getSelection();
|
|
29
|
+
if (domSelection) {
|
|
30
|
+
var domRange = domSelection && domSelection.rangeCount === 1 && domSelection.getRangeAt(0).cloneRange();
|
|
31
|
+
if (domRange) {
|
|
32
|
+
domSelection.removeAllRanges();
|
|
33
|
+
domSelection.addRange(domRange);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
var Mention = exports.default = /*#__PURE__*/function (_PureComponent) {
|
|
38
|
+
(0, _inherits2.default)(Mention, _PureComponent);
|
|
39
|
+
var _super = _createSuper(Mention);
|
|
40
|
+
function Mention(props) {
|
|
41
|
+
var _this;
|
|
42
|
+
(0, _classCallCheck2.default)(this, Mention);
|
|
43
|
+
_this = _super.call(this, props);
|
|
44
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "renderWithProvider", function (providers) {
|
|
45
|
+
var _this$props = _this.props,
|
|
46
|
+
accessLevel = _this$props.accessLevel,
|
|
47
|
+
eventHandlers = _this$props.eventHandlers,
|
|
48
|
+
id = _this$props.id,
|
|
49
|
+
text = _this$props.text;
|
|
50
|
+
var _ref = providers,
|
|
51
|
+
mentionProvider = _ref.mentionProvider;
|
|
52
|
+
var actionHandlers = {};
|
|
53
|
+
['onClick', 'onMouseEnter', 'onMouseLeave'].forEach(function (handler) {
|
|
54
|
+
actionHandlers[handler] = eventHandlers && eventHandlers[handler] || function () {};
|
|
55
|
+
});
|
|
56
|
+
return /*#__PURE__*/_react.default.createElement(_element.ResourcedMention, (0, _extends2.default)({
|
|
57
|
+
id: id,
|
|
58
|
+
text: text,
|
|
59
|
+
accessLevel: accessLevel,
|
|
60
|
+
mentionProvider: mentionProvider
|
|
61
|
+
}, actionHandlers));
|
|
62
|
+
});
|
|
63
|
+
_this.providerFactory = props.providers || new _providerFactory.ProviderFactory();
|
|
64
|
+
return _this;
|
|
65
|
+
}
|
|
66
|
+
(0, _createClass2.default)(Mention, [{
|
|
67
|
+
key: "componentDidMount",
|
|
68
|
+
value: function componentDidMount() {
|
|
69
|
+
// Workaround an issue where the selection is not updated immediately after adding
|
|
70
|
+
// a mention when "sanitizePrivateContent" is enabled in the editor on safari.
|
|
71
|
+
// This affects both insertion and paste behaviour it is applied to the component.
|
|
72
|
+
// https://product-fabric.atlassian.net/browse/ED-14859
|
|
73
|
+
if (_utils.browser.safari) {
|
|
74
|
+
setTimeout(refreshBrowserSelection, 0);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}, {
|
|
78
|
+
key: "componentWillUnmount",
|
|
79
|
+
value: function componentWillUnmount() {
|
|
80
|
+
if (!this.props.providers) {
|
|
81
|
+
// new ProviderFactory is created if no `providers` has been set
|
|
82
|
+
// in this case when component is unmounted it's safe to destroy this providerFactory
|
|
83
|
+
this.providerFactory.destroy();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}, {
|
|
87
|
+
key: "render",
|
|
88
|
+
value: function render() {
|
|
89
|
+
return /*#__PURE__*/_react.default.createElement(_providerFactory.WithProviders, {
|
|
90
|
+
providers: ['mentionProvider', 'profilecardProvider'],
|
|
91
|
+
providerFactory: this.providerFactory,
|
|
92
|
+
renderNode: this.renderWithProvider
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}]);
|
|
96
|
+
return Mention;
|
|
97
|
+
}(_react.PureComponent);
|
|
98
|
+
(0, _defineProperty2.default)(Mention, "displayName", 'Mention');
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.default = void 0;
|
|
9
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
10
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
11
|
+
var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
|
|
12
|
+
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
|
|
13
|
+
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
|
|
14
|
+
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
|
|
15
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
16
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
17
|
+
var _reactIntlNext = require("react-intl-next");
|
|
18
|
+
var _uiMenu = require("@atlaskit/editor-common/ui-menu");
|
|
19
|
+
var _mention = _interopRequireDefault(require("@atlaskit/icon/glyph/editor/mention"));
|
|
20
|
+
var _messages = require("../../messages");
|
|
21
|
+
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); }
|
|
22
|
+
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; }
|
|
23
|
+
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
|
|
24
|
+
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; } }
|
|
25
|
+
var ToolbarMention = /*#__PURE__*/function (_PureComponent) {
|
|
26
|
+
(0, _inherits2.default)(ToolbarMention, _PureComponent);
|
|
27
|
+
var _super = _createSuper(ToolbarMention);
|
|
28
|
+
function ToolbarMention() {
|
|
29
|
+
var _this;
|
|
30
|
+
(0, _classCallCheck2.default)(this, ToolbarMention);
|
|
31
|
+
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
32
|
+
args[_key] = arguments[_key];
|
|
33
|
+
}
|
|
34
|
+
_this = _super.call.apply(_super, [this].concat(args));
|
|
35
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleInsertMention", function () {
|
|
36
|
+
if (!_this.props.editorView) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
_this.props.onInsertMention();
|
|
40
|
+
return true;
|
|
41
|
+
});
|
|
42
|
+
return _this;
|
|
43
|
+
}
|
|
44
|
+
(0, _createClass2.default)(ToolbarMention, [{
|
|
45
|
+
key: "render",
|
|
46
|
+
value: function render() {
|
|
47
|
+
var mentionStringTranslated = this.props.intl.formatMessage(_messages.messages.mentionsIconLabel);
|
|
48
|
+
return /*#__PURE__*/_react.default.createElement(_uiMenu.ToolbarButton, {
|
|
49
|
+
testId: this.props.testId,
|
|
50
|
+
buttonId: _uiMenu.TOOLBAR_BUTTON.MENTION,
|
|
51
|
+
spacing: "none",
|
|
52
|
+
onClick: this.handleInsertMention,
|
|
53
|
+
disabled: this.props.isDisabled,
|
|
54
|
+
title: mentionStringTranslated + '@',
|
|
55
|
+
iconBefore: /*#__PURE__*/_react.default.createElement(_mention.default, {
|
|
56
|
+
label: mentionStringTranslated
|
|
57
|
+
})
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
}]);
|
|
61
|
+
return ToolbarMention;
|
|
62
|
+
}(_react.PureComponent);
|
|
63
|
+
var _default = exports.default = (0, _reactIntlNext.injectIntl)(ToolbarMention);
|