@atlaskit/editor-plugin-tasks-and-decisions
Version:
Tasks and decisions plugin for @atlaskit/editor-core
66 lines (65 loc) • 2.69 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import React, { PureComponent } from 'react';
import { injectIntl } from 'react-intl';
import { tasksAndDecisionsMessages } from '@atlaskit/editor-common/messages';
import { ProviderFactory, WithProviders } from '@atlaskit/editor-common/provider-factory';
import { useSharedPluginStateSelector } from '@atlaskit/editor-common/use-shared-plugin-state-selector';
import TaskItemWithProviders from './task-item-with-providers';
// eslint-disable-next-line @repo/internal/react/no-class-components
export class TaskItem extends PureComponent {
constructor(props) {
super(props);
_defineProperty(this, "renderWithProvider", providers => {
const {
providers: _providerFactory,
intl: {
formatMessage
},
taskDecisionProvider,
api,
placeholder,
...otherProps
} = this.props;
const {
contextIdentifierProvider
} = providers;
return /*#__PURE__*/React.createElement(TaskItemWithProviders
// Ignored via go/ees005
// eslint-disable-next-line react/jsx-props-no-spreading
, _extends({}, otherProps, {
placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : formatMessage(tasksAndDecisionsMessages.taskPlaceholder),
taskDecisionProvider: taskDecisionProvider ? Promise.resolve(taskDecisionProvider) : undefined,
contextIdentifierProvider: contextIdentifierProvider
}));
});
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() {
const providers = ['contextIdentifierProvider'];
return /*#__PURE__*/React.createElement(WithProviders, {
providers: providers,
providerFactory: this.providerFactory,
renderNode: this.renderWithProvider
});
}
}
_defineProperty(TaskItem, "displayName", 'TaskItem');
const TaskItemWrapper = props => {
const provider = useSharedPluginStateSelector(props.api, 'taskDecision.taskDecisionProvider');
// Ignored via go/ees005
// eslint-disable-next-line react/jsx-props-no-spreading
return /*#__PURE__*/React.createElement(TaskItem, _extends({
taskDecisionProvider: provider
}, props));
};
// eslint-disable-next-line @typescript-eslint/ban-types
const _default_1 = injectIntl(TaskItemWrapper);
export default _default_1;