@atlaskit/editor-core
Version:
A package contains Atlassian editor core functionality
67 lines • 3.41 kB
JavaScript
import * as tslib_1 from "tslib";
import * as React from 'react';
import { PureComponent } from 'react';
import { ResourcedMention, } from '@atlaskit/mention';
import ResourcedMentionWithProfilecard from './mention-with-profilecard';
var GENERIC_USER_IDS = ['HipChat', 'all', 'here'];
var noop = function () { };
var MentionWithProviders = (function (_super) {
tslib_1.__extends(MentionWithProviders, _super);
function MentionWithProviders() {
var _this = _super !== null && _super.apply(this, arguments) || this;
_this.state = { profilecardProvider: null };
return _this;
}
MentionWithProviders.prototype.componentWillMount = function () {
this.updateProfilecardProvider(this.props);
};
MentionWithProviders.prototype.componentWillReceiveProps = function (nextProps) {
if (nextProps.profilecardProvider !== this.props.profilecardProvider) {
this.updateProfilecardProvider(nextProps);
}
};
MentionWithProviders.prototype.updateProfilecardProvider = function (props) {
return tslib_1.__awaiter(this, void 0, void 0, function () {
var resolvedProfilecardProvider, err_1;
return tslib_1.__generator(this, function (_a) {
switch (_a.label) {
case 0:
if (!props.profilecardProvider) return [3 /*break*/, 5];
_a.label = 1;
case 1:
_a.trys.push([1, 3, , 4]);
return [4 /*yield*/, props.profilecardProvider];
case 2:
resolvedProfilecardProvider = _a.sent();
this.setState({ profilecardProvider: resolvedProfilecardProvider });
return [3 /*break*/, 4];
case 3:
err_1 = _a.sent();
this.setState({ profilecardProvider: null });
return [3 /*break*/, 4];
case 4: return [3 /*break*/, 6];
case 5:
this.setState({ profilecardProvider: null });
_a.label = 6;
case 6: return [2 /*return*/];
}
});
});
};
MentionWithProviders.prototype.render = function () {
var _a = this.props, accessLevel = _a.accessLevel, eventHandlers = _a.eventHandlers, id = _a.id, mentionProvider = _a.mentionProvider, portal = _a.portal, text = _a.text;
var profilecardProvider = this.state.profilecardProvider;
var actionHandlers = {};
['onClick', 'onMouseEnter', 'onMouseLeave'].forEach(function (handler) {
actionHandlers[handler] = eventHandlers && eventHandlers[handler] || noop;
});
// tslint:disable-next-line:variable-name
var MentionComponent = (profilecardProvider && GENERIC_USER_IDS.indexOf(id) === -1)
? ResourcedMentionWithProfilecard
: ResourcedMention;
return (React.createElement(MentionComponent, tslib_1.__assign({ id: id, text: text, accessLevel: accessLevel, mentionProvider: mentionProvider, profilecardProvider: profilecardProvider, portal: portal }, actionHandlers)));
};
return MentionWithProviders;
}(PureComponent));
export default MentionWithProviders;
//# sourceMappingURL=mention-with-providers.js.map