diff --git a/app/soapbox/components/autosuggest-input.tsx b/app/soapbox/components/autosuggest-input.tsx index 9f067c032..122890112 100644 --- a/app/soapbox/components/autosuggest-input.tsx +++ b/app/soapbox/components/autosuggest-input.tsx @@ -2,6 +2,7 @@ import { Portal } from '@reach/portal'; import classNames from 'clsx'; import { List as ImmutableList } from 'immutable'; import React from 'react'; +import ImmutablePureComponent from 'react-immutable-pure-component'; import AutosuggestEmoji, { Emoji } from 'soapbox/components/autosuggest-emoji'; import Icon from 'soapbox/components/icon'; @@ -35,7 +36,7 @@ export interface IAutosuggestInput extends Pick { +export default class AutosuggestInput extends ImmutablePureComponent { static defaultProps = { autoFocus: false, diff --git a/app/soapbox/components/autosuggest-textarea.tsx b/app/soapbox/components/autosuggest-textarea.tsx index 1c576743e..1cdc7fa06 100644 --- a/app/soapbox/components/autosuggest-textarea.tsx +++ b/app/soapbox/components/autosuggest-textarea.tsx @@ -1,6 +1,7 @@ import { Portal } from '@reach/portal'; import classNames from 'clsx'; import React from 'react'; +import ImmutablePureComponent from 'react-immutable-pure-component'; import Textarea from 'react-textarea-autosize'; import { textAtCursorMatchesToken } from 'soapbox/utils/suggestions'; @@ -32,7 +33,7 @@ interface IAutosuggesteTextarea { children: React.ReactNode, } -class AutosuggestTextarea extends React.PureComponent { +class AutosuggestTextarea extends ImmutablePureComponent { textarea: HTMLTextAreaElement | null = null; diff --git a/app/soapbox/components/emoji-selector.tsx b/app/soapbox/components/emoji-selector.tsx index 3e418831c..be0ca3a51 100644 --- a/app/soapbox/components/emoji-selector.tsx +++ b/app/soapbox/components/emoji-selector.tsx @@ -1,6 +1,7 @@ // import classNames from 'clsx'; import React from 'react'; import { HotKeys } from 'react-hotkeys'; +import ImmutablePureComponent from 'react-immutable-pure-component'; import { connect } from 'react-redux'; import { getSoapboxConfig } from 'soapbox/actions/soapbox'; @@ -21,7 +22,7 @@ interface IEmojiSelector { focused?: boolean, } -class EmojiSelector extends React.PureComponent { +class EmojiSelector extends ImmutablePureComponent { static defaultProps: Partial = { onReact: () => { }, diff --git a/package.json b/package.json index 94f7fb753..06f47abdc 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "browserslist": [ "> 0.5%", "last 2 versions", + "not IE 11", "not dead" ], "dependencies": { @@ -148,6 +149,7 @@ "react-helmet": "^6.1.0", "react-hot-toast": "^2.4.0", "react-hotkeys": "^1.1.4", + "react-immutable-pure-component": "^2.2.2", "react-inlinesvg": "^3.0.0", "react-intl": "^5.0.0", "react-motion": "^0.5.2", diff --git a/yarn.lock b/yarn.lock index ed5005b21..a1fb69a9b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9443,6 +9443,11 @@ react-hotkeys@^1.1.4: mousetrap "^1.5.2" prop-types "^15.6.0" +react-immutable-pure-component@^2.2.2: + version "2.2.2" + resolved "https://registry.yarnpkg.com/react-immutable-pure-component/-/react-immutable-pure-component-2.2.2.tgz#3014d3e20cd5a7a4db73b81f1f1464f4d351684b" + integrity sha512-vkgoMJUDqHZfXXnjVlG3keCxSO/U6WeDQ5/Sl0GK2cH8TOxEzQ5jXqDXHEL/jqk6fsNxV05oH5kD7VNMUE2k+A== + react-inlinesvg@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/react-inlinesvg/-/react-inlinesvg-3.0.0.tgz#801c6bac1535334586708cd346f4b1125dcfa8f9"