import Component from 'flarum/Component'; import LoadingIndicator from 'flarum/components/LoadingIndicator'; import TextEditor from 'flarum/components/TextEditor'; import avatar from 'flarum/helpers/avatar'; import listItems from 'flarum/helpers/listItems'; import ItemList from 'flarum/utils/ItemList'; /** * The `ComposerBody` component handles the body, or the content, of the * composer. Subclasses should implement the `onsubmit` method and override * `headerTimes`. * * ### Props * * - `originalContent` * - `submitLabel` * - `placeholder` * - `user` * - `confirmExit` * - `disabled` * * @abstract */ export default class ComposerBody extends Component { constructor(props) { super(props); /** * Whether or not the component is loading. * * @type {Boolean} */ this.loading = false; /** * The content of the text editor. * * @type {Function} */ this.content = m.prop(this.props.originalContent); /** * The text editor component instance. * * @type {TextEditor} */ this.editor = new TextEditor({ submitLabel: this.props.submitLabel, placeholder: this.props.placeholder, onchange: this.content, onsubmit: this.onsubmit.bind(this), value: this.content() }); } view() { // If the component is loading, we should disable the text editor. this.editor.props.disabled = this.loading; return (