@atlaskit/editor-common
Version:
A package that contains common classes and components for editor and renderer
59 lines • 2.06 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/defineProperty";
/* eslint-disable @repo/internal/react/no-class-components */
import React, { PureComponent } from 'react';
import { fg } from '@atlaskit/platform-feature-flags';
import { ProviderFactory, WithProviders } from '../../provider-factory';
import { MentionWithProviders, MentionWithProvidersOld } from './mention-with-providers';
export default class Mention extends PureComponent {
constructor(props) {
super(props);
_defineProperty(this, "renderWithProvider", providers => {
const {
accessLevel,
eventHandlers,
id,
text,
localId
} = this.props;
const {
mentionProvider,
profilecardProvider
} = providers;
if (fg('platform_editor_react18_mention_with_provider_fix')) {
return /*#__PURE__*/React.createElement(MentionWithProviders, {
id: id,
text: text,
accessLevel: accessLevel,
localId: localId,
eventHandlers: eventHandlers,
mentionProvider: mentionProvider,
profilecardProvider: profilecardProvider
});
}
return /*#__PURE__*/React.createElement(MentionWithProvidersOld, {
id: id,
text: text,
accessLevel: accessLevel,
localId: localId,
eventHandlers: eventHandlers,
mentionProvider: mentionProvider,
profilecardProvider: profilecardProvider
});
});
this.providerFactory = props.providers || new ProviderFactory();
}
componentWillUnmount() {
if (!this.props.providers) {
// new ProviderFactory is created if no `providers` has been set
// in this case when component is unmounted it's safe to destroy this providerFactory
this.providerFactory.destroy();
}
}
render() {
return /*#__PURE__*/React.createElement(WithProviders, {
providers: ['mentionProvider', 'profilecardProvider'],
providerFactory: this.providerFactory,
renderNode: this.renderWithProvider
});
}
}