UNPKG

@atlaskit/editor-plugin-tasks-and-decisions

Version:

Tasks and decisions plugin for @atlaskit/editor-core

66 lines (65 loc) 2.69 kB
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;