diff --git a/app/javascript/mastodon/components/account.js b/app/javascript/mastodon/components/account.js
index 7aebb124c..7706c3f88 100644
--- a/app/javascript/mastodon/components/account.js
+++ b/app/javascript/mastodon/components/account.js
@@ -47,27 +47,27 @@ class Account extends ImmutablePureComponent {
handleFollow = () => {
this.props.onFollow(this.props.account);
- }
+ };
handleBlock = () => {
this.props.onBlock(this.props.account);
- }
+ };
handleMute = () => {
this.props.onMute(this.props.account);
- }
+ };
handleMuteNotifications = () => {
this.props.onMuteNotifications(this.props.account, true);
- }
+ };
handleUnmuteNotifications = () => {
this.props.onMuteNotifications(this.props.account, false);
- }
+ };
handleAction = () => {
this.props.onActionClick(this.props.account);
- }
+ };
render () {
const { account, intl, hidden, onActionClick, actionIcon, actionTitle, defaultAction, size } = this.props;
diff --git a/app/javascript/mastodon/components/animated_number.js b/app/javascript/mastodon/components/animated_number.js
index b1aebc73e..ce688f04f 100644
--- a/app/javascript/mastodon/components/animated_number.js
+++ b/app/javascript/mastodon/components/animated_number.js
@@ -38,13 +38,13 @@ export default class AnimatedNumber extends React.PureComponent {
const { direction } = this.state;
return { y: -1 * direction };
- }
+ };
willLeave = () => {
const { direction } = this.state;
return { y: spring(1 * direction, { damping: 35, stiffness: 400 }) };
- }
+ };
render () {
const { value, obfuscate } = this.props;
diff --git a/app/javascript/mastodon/components/autosuggest_input.js b/app/javascript/mastodon/components/autosuggest_input.js
index b8f8c6f45..817a41b93 100644
--- a/app/javascript/mastodon/components/autosuggest_input.js
+++ b/app/javascript/mastodon/components/autosuggest_input.js
@@ -78,7 +78,7 @@ export default class AutosuggestInput extends ImmutablePureComponent {
}
this.props.onChange(e);
- }
+ };
onKeyDown = (e) => {
const { suggestions, disabled } = this.props;
@@ -136,22 +136,22 @@ export default class AutosuggestInput extends ImmutablePureComponent {
}
this.props.onKeyDown(e);
- }
+ };
onBlur = () => {
this.setState({ suggestionsHidden: true, focused: false });
- }
+ };
onFocus = () => {
this.setState({ focused: true });
- }
+ };
onSuggestionClick = (e) => {
const suggestion = this.props.suggestions.get(e.currentTarget.getAttribute('data-index'));
e.preventDefault();
this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestion);
this.input.focus();
- }
+ };
componentWillReceiveProps (nextProps) {
if (nextProps.suggestions !== this.props.suggestions && nextProps.suggestions.size > 0 && this.state.suggestionsHidden && this.state.focused) {
@@ -161,7 +161,7 @@ export default class AutosuggestInput extends ImmutablePureComponent {
setInput = (c) => {
this.input = c;
- }
+ };
renderSuggestion = (suggestion, i) => {
const { selectedSuggestion } = this.state;
@@ -183,7 +183,7 @@ export default class AutosuggestInput extends ImmutablePureComponent {
{inner}
);
- }
+ };
render () {
const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, className, id, maxLength, lang } = this.props;
diff --git a/app/javascript/mastodon/components/autosuggest_textarea.js b/app/javascript/mastodon/components/autosuggest_textarea.js
index b6c590916..c04491298 100644
--- a/app/javascript/mastodon/components/autosuggest_textarea.js
+++ b/app/javascript/mastodon/components/autosuggest_textarea.js
@@ -75,7 +75,7 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
}
this.props.onChange(e);
- }
+ };
onKeyDown = (e) => {
const { suggestions, disabled } = this.props;
@@ -133,25 +133,25 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
}
this.props.onKeyDown(e);
- }
+ };
onBlur = () => {
this.setState({ suggestionsHidden: true, focused: false });
- }
+ };
onFocus = (e) => {
this.setState({ focused: true });
if (this.props.onFocus) {
this.props.onFocus(e);
}
- }
+ };
onSuggestionClick = (e) => {
const suggestion = this.props.suggestions.get(e.currentTarget.getAttribute('data-index'));
e.preventDefault();
this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestion);
this.textarea.focus();
- }
+ };
componentWillReceiveProps (nextProps) {
if (nextProps.suggestions !== this.props.suggestions && nextProps.suggestions.size > 0 && this.state.suggestionsHidden && this.state.focused) {
@@ -161,14 +161,14 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
setTextarea = (c) => {
this.textarea = c;
- }
+ };
onPaste = (e) => {
if (e.clipboardData && e.clipboardData.files.length === 1) {
this.props.onPaste(e.clipboardData.files);
e.preventDefault();
}
- }
+ };
renderSuggestion = (suggestion, i) => {
const { selectedSuggestion } = this.state;
@@ -190,7 +190,7 @@ export default class AutosuggestTextarea extends ImmutablePureComponent {
{inner}
);
- }
+ };
render () {
const { value, suggestions, disabled, placeholder, onKeyUp, autoFocus, lang, children } = this.props;
diff --git a/app/javascript/mastodon/components/avatar.js b/app/javascript/mastodon/components/avatar.js
index e617c2889..013454ccf 100644
--- a/app/javascript/mastodon/components/avatar.js
+++ b/app/javascript/mastodon/components/avatar.js
@@ -27,12 +27,12 @@ export default class Avatar extends React.PureComponent {
handleMouseEnter = () => {
if (this.props.animate) return;
this.setState({ hovering: true });
- }
+ };
handleMouseLeave = () => {
if (this.props.animate) return;
this.setState({ hovering: false });
- }
+ };
render () {
const { account, size, animate, inline } = this.props;
diff --git a/app/javascript/mastodon/components/avatar_overlay.js b/app/javascript/mastodon/components/avatar_overlay.js
index 8d5d44ea5..034e8ba56 100644
--- a/app/javascript/mastodon/components/avatar_overlay.js
+++ b/app/javascript/mastodon/components/avatar_overlay.js
@@ -29,12 +29,12 @@ export default class AvatarOverlay extends React.PureComponent {
handleMouseEnter = () => {
if (this.props.animate) return;
this.setState({ hovering: true });
- }
+ };
handleMouseLeave = () => {
if (this.props.animate) return;
this.setState({ hovering: false });
- }
+ };
render() {
const { account, friend, animate, size, baseSize, overlaySize } = this.props;
diff --git a/app/javascript/mastodon/components/button.js b/app/javascript/mastodon/components/button.js
index 42ce01f38..a05a75e89 100644
--- a/app/javascript/mastodon/components/button.js
+++ b/app/javascript/mastodon/components/button.js
@@ -24,11 +24,11 @@ export default class Button extends React.PureComponent {
if (!this.props.disabled && this.props.onClick) {
this.props.onClick(e);
}
- }
+ };
setRef = (c) => {
this.node = c;
- }
+ };
focus() {
this.node.focus();
diff --git a/app/javascript/mastodon/components/column.js b/app/javascript/mastodon/components/column.js
index 239824a4f..5780a1397 100644
--- a/app/javascript/mastodon/components/column.js
+++ b/app/javascript/mastodon/components/column.js
@@ -27,11 +27,11 @@ export default class Column extends React.PureComponent {
}
this._interruptScrollAnimation();
- }
+ };
setRef = c => {
this.node = c;
- }
+ };
componentDidMount () {
if (this.props.bindToDocument) {
diff --git a/app/javascript/mastodon/components/column_back_button.js b/app/javascript/mastodon/components/column_back_button.js
index d97622705..5bbf11652 100644
--- a/app/javascript/mastodon/components/column_back_button.js
+++ b/app/javascript/mastodon/components/column_back_button.js
@@ -20,7 +20,7 @@ export default class ColumnBackButton extends React.PureComponent {
} else {
this.context.router.history.goBack();
}
- }
+ };
render () {
const { multiColumn } = this.props;
diff --git a/app/javascript/mastodon/components/column_header.js b/app/javascript/mastodon/components/column_header.js
index 7850a93ec..38f6ad60f 100644
--- a/app/javascript/mastodon/components/column_header.js
+++ b/app/javascript/mastodon/components/column_header.js
@@ -49,32 +49,32 @@ class ColumnHeader extends React.PureComponent {
} else {
this.context.router.history.goBack();
}
- }
+ };
handleToggleClick = (e) => {
e.stopPropagation();
this.setState({ collapsed: !this.state.collapsed, animating: true });
- }
+ };
handleTitleClick = () => {
this.props.onClick?.();
- }
+ };
handleMoveLeft = () => {
this.props.onMove(-1);
- }
+ };
handleMoveRight = () => {
this.props.onMove(1);
- }
+ };
handleBackClick = () => {
this.historyBack();
- }
+ };
handleTransitionEnd = () => {
this.setState({ animating: false });
- }
+ };
handlePin = () => {
if (!this.props.pinned) {
@@ -82,7 +82,7 @@ class ColumnHeader extends React.PureComponent {
}
this.props.onPin();
- }
+ };
render () {
const { title, icon, active, children, pinned, multiColumn, extraButton, showBackButton, intl: { formatMessage }, placeholder, appendContent, collapseIssues } = this.props;
diff --git a/app/javascript/mastodon/components/dismissable_banner.js b/app/javascript/mastodon/components/dismissable_banner.js
index 1ee032056..47ca7e4bc 100644
--- a/app/javascript/mastodon/components/dismissable_banner.js
+++ b/app/javascript/mastodon/components/dismissable_banner.js
@@ -24,7 +24,7 @@ class DismissableBanner extends React.PureComponent {
handleDismiss = () => {
const { id } = this.props;
this.setState({ visible: false }, () => bannerSettings.set(id, true));
- }
+ };
render () {
const { visible } = this.state;
diff --git a/app/javascript/mastodon/components/display_name.js b/app/javascript/mastodon/components/display_name.js
index e9139ab0f..1dd9fb1d6 100644
--- a/app/javascript/mastodon/components/display_name.js
+++ b/app/javascript/mastodon/components/display_name.js
@@ -23,7 +23,7 @@ export default class DisplayName extends React.PureComponent {
let emoji = emojis[i];
emoji.src = emoji.getAttribute('data-original');
}
- }
+ };
handleMouseLeave = ({ currentTarget }) => {
if (autoPlayGif) {
@@ -36,7 +36,7 @@ export default class DisplayName extends React.PureComponent {
let emoji = emojis[i];
emoji.src = emoji.getAttribute('data-static');
}
- }
+ };
render () {
const { others, localDomain } = this.props;
diff --git a/app/javascript/mastodon/components/domain.js b/app/javascript/mastodon/components/domain.js
index 697065d87..e09fa4591 100644
--- a/app/javascript/mastodon/components/domain.js
+++ b/app/javascript/mastodon/components/domain.js
@@ -19,7 +19,7 @@ class Account extends ImmutablePureComponent {
handleDomainUnblock = () => {
this.props.onUnblockDomain(this.props.domain);
- }
+ };
render () {
const { domain, intl } = this.props;
diff --git a/app/javascript/mastodon/components/dropdown_menu.js b/app/javascript/mastodon/components/dropdown_menu.js
index 5897aada8..c04c513fb 100644
--- a/app/javascript/mastodon/components/dropdown_menu.js
+++ b/app/javascript/mastodon/components/dropdown_menu.js
@@ -36,7 +36,7 @@ class DropdownMenu extends React.PureComponent {
if (this.node && !this.node.contains(e.target)) {
this.props.onClose();
}
- }
+ };
componentDidMount () {
document.addEventListener('click', this.handleDocumentClick, false);
@@ -56,11 +56,11 @@ class DropdownMenu extends React.PureComponent {
setRef = c => {
this.node = c;
- }
+ };
setFocusRef = c => {
this.focusedItem = c;
- }
+ };
handleKeyDown = e => {
const items = Array.from(this.node.querySelectorAll('a, button'));
@@ -97,18 +97,18 @@ class DropdownMenu extends React.PureComponent {
e.preventDefault();
e.stopPropagation();
}
- }
+ };
handleItemKeyPress = e => {
if (e.key === 'Enter' || e.key === ' ') {
this.handleClick(e);
}
- }
+ };
handleClick = e => {
const { onItemClick } = this.props;
onItemClick(e);
- }
+ };
renderItem = (option, i) => {
if (option === null) {
@@ -124,7 +124,7 @@ class DropdownMenu extends React.PureComponent {
);
- }
+ };
render () {
const { items, scrollable, renderHeader, loading } = this.props;
@@ -194,7 +194,7 @@ export default class Dropdown extends React.PureComponent {
} else {
this.props.onOpen(this.state.id, this.handleItemClick, type !== 'click');
}
- }
+ };
handleClose = () => {
if (this.activeElement) {
@@ -202,13 +202,13 @@ export default class Dropdown extends React.PureComponent {
this.activeElement = null;
}
this.props.onClose(this.state.id);
- }
+ };
handleMouseDown = () => {
if (!this.state.open) {
this.activeElement = document.activeElement;
}
- }
+ };
handleButtonKeyDown = (e) => {
switch(e.key) {
@@ -217,7 +217,7 @@ export default class Dropdown extends React.PureComponent {
this.handleMouseDown();
break;
}
- }
+ };
handleKeyPress = (e) => {
switch(e.key) {
@@ -228,7 +228,7 @@ export default class Dropdown extends React.PureComponent {
e.preventDefault();
break;
}
- }
+ };
handleItemClick = e => {
const { onItemClick } = this.props;
@@ -247,25 +247,25 @@ export default class Dropdown extends React.PureComponent {
e.preventDefault();
this.context.router.history.push(item.to);
}
- }
+ };
setTargetRef = c => {
this.target = c;
- }
+ };
findTarget = () => {
return this.target;
- }
+ };
componentWillUnmount = () => {
if (this.state.id === this.props.openDropdownId) {
this.handleClose();
}
- }
+ };
close = () => {
this.handleClose();
- }
+ };
render () {
const {
diff --git a/app/javascript/mastodon/components/edited_timestamp/index.js b/app/javascript/mastodon/components/edited_timestamp/index.js
index bebf93886..b30d88572 100644
--- a/app/javascript/mastodon/components/edited_timestamp/index.js
+++ b/app/javascript/mastodon/components/edited_timestamp/index.js
@@ -36,7 +36,7 @@ class EditedTimestamp extends React.PureComponent {
return (
);
- }
+ };
renderItem = (item, index, { onClick, onKeyPress }) => {
const formattedDate = ;
@@ -53,7 +53,7 @@ class EditedTimestamp extends React.PureComponent {
);
- }
+ };
render () {
const { timestamp, intl, statusId } = this.props;
diff --git a/app/javascript/mastodon/components/error_boundary.js b/app/javascript/mastodon/components/error_boundary.js
index 02d5616d6..b711f1e46 100644
--- a/app/javascript/mastodon/components/error_boundary.js
+++ b/app/javascript/mastodon/components/error_boundary.js
@@ -64,7 +64,7 @@ export default class ErrorBoundary extends React.PureComponent {
this.setState({ copied: true });
setTimeout(() => this.setState({ copied: false }), 700);
- }
+ };
render() {
const { hasError, copied, errorMessage } = this.state;
diff --git a/app/javascript/mastodon/components/gifv.js b/app/javascript/mastodon/components/gifv.js
index b775e5200..1f0f99b46 100644
--- a/app/javascript/mastodon/components/gifv.js
+++ b/app/javascript/mastodon/components/gifv.js
@@ -17,7 +17,7 @@ export default class GIFV extends React.PureComponent {
handleLoadedData = () => {
this.setState({ loading: false });
- }
+ };
componentWillReceiveProps (nextProps) {
if (nextProps.src !== this.props.src) {
@@ -32,7 +32,7 @@ export default class GIFV extends React.PureComponent {
e.stopPropagation();
onClick();
}
- }
+ };
render () {
const { src, width, height, alt } = this.props;
diff --git a/app/javascript/mastodon/components/icon_button.js b/app/javascript/mastodon/components/icon_button.js
index b7daf82a4..003692373 100644
--- a/app/javascript/mastodon/components/icon_button.js
+++ b/app/javascript/mastodon/components/icon_button.js
@@ -43,7 +43,7 @@ export default class IconButton extends React.PureComponent {
state = {
activate: false,
deactivate: false,
- }
+ };
componentWillReceiveProps (nextProps) {
if (!nextProps.animate) return;
@@ -61,25 +61,25 @@ export default class IconButton extends React.PureComponent {
if (!this.props.disabled) {
this.props.onClick(e);
}
- }
+ };
handleKeyPress = (e) => {
if (this.props.onKeyPress && !this.props.disabled) {
this.props.onKeyPress(e);
}
- }
+ };
handleMouseDown = (e) => {
if (!this.props.disabled && this.props.onMouseDown) {
this.props.onMouseDown(e);
}
- }
+ };
handleKeyDown = (e) => {
if (!this.props.disabled && this.props.onKeyDown) {
this.props.onKeyDown(e);
}
- }
+ };
render () {
const style = {
diff --git a/app/javascript/mastodon/components/intersection_observer_article.js b/app/javascript/mastodon/components/intersection_observer_article.js
index 26f85fa40..c2feb003a 100644
--- a/app/javascript/mastodon/components/intersection_observer_article.js
+++ b/app/javascript/mastodon/components/intersection_observer_article.js
@@ -21,7 +21,7 @@ export default class IntersectionObserverArticle extends React.Component {
state = {
isHidden: false, // set to true in requestIdleCallback to trigger un-render
- }
+ };
shouldComponentUpdate (nextProps, nextState) {
const isUnrendered = !this.state.isIntersecting && (this.state.isHidden || this.props.cachedHeight);
@@ -62,7 +62,7 @@ export default class IntersectionObserverArticle extends React.Component {
scheduleIdleTask(this.calculateHeight);
this.setState(this.updateStateAfterIntersection);
- }
+ };
updateStateAfterIntersection = (prevState) => {
if (prevState.isIntersecting !== false && !this.entry.isIntersecting) {
@@ -72,7 +72,7 @@ export default class IntersectionObserverArticle extends React.Component {
isIntersecting: this.entry.isIntersecting,
isHidden: false,
};
- }
+ };
calculateHeight = () => {
const { onHeightChange, saveHeightKey, id } = this.props;
@@ -83,7 +83,7 @@ export default class IntersectionObserverArticle extends React.Component {
if (onHeightChange && saveHeightKey) {
onHeightChange(saveHeightKey, id, this.height);
}
- }
+ };
hideIfNotIntersecting = () => {
if (!this.componentMounted) {
@@ -95,11 +95,11 @@ export default class IntersectionObserverArticle extends React.Component {
// this is to save DOM nodes and avoid using up too much memory.
// See: https://github.com/mastodon/mastodon/issues/2900
this.setState((prevState) => ({ isHidden: !prevState.isIntersecting }));
- }
+ };
handleRef = (node) => {
this.node = node;
- }
+ };
render () {
const { children, id, index, listLength, cachedHeight } = this.props;
diff --git a/app/javascript/mastodon/components/load_gap.js b/app/javascript/mastodon/components/load_gap.js
index a44d55d09..c50b245fc 100644
--- a/app/javascript/mastodon/components/load_gap.js
+++ b/app/javascript/mastodon/components/load_gap.js
@@ -19,7 +19,7 @@ class LoadGap extends React.PureComponent {
handleClick = () => {
this.props.onClick(this.props.maxId);
- }
+ };
render () {
const { disabled, intl } = this.props;
diff --git a/app/javascript/mastodon/components/load_more.js b/app/javascript/mastodon/components/load_more.js
index 00e023ca2..150525214 100644
--- a/app/javascript/mastodon/components/load_more.js
+++ b/app/javascript/mastodon/components/load_more.js
@@ -8,11 +8,11 @@ export default class LoadMore extends React.PureComponent {
onClick: PropTypes.func,
disabled: PropTypes.bool,
visible: PropTypes.bool,
- }
+ };
static defaultProps = {
visible: true,
- }
+ };
render() {
const { disabled, visible } = this.props;
diff --git a/app/javascript/mastodon/components/load_pending.js b/app/javascript/mastodon/components/load_pending.js
index 7e2702403..a75259146 100644
--- a/app/javascript/mastodon/components/load_pending.js
+++ b/app/javascript/mastodon/components/load_pending.js
@@ -7,7 +7,7 @@ export default class LoadPending extends React.PureComponent {
static propTypes = {
onClick: PropTypes.func,
count: PropTypes.number,
- }
+ };
render() {
const { count } = this.props;
diff --git a/app/javascript/mastodon/components/media_attachments.js b/app/javascript/mastodon/components/media_attachments.js
index d27720de4..565a30330 100644
--- a/app/javascript/mastodon/components/media_attachments.js
+++ b/app/javascript/mastodon/components/media_attachments.js
@@ -29,7 +29,7 @@ export default class MediaAttachments extends ImmutablePureComponent {
return (
);
- }
+ };
renderLoadingVideoPlayer = () => {
const { height, width } = this.props;
@@ -37,7 +37,7 @@ export default class MediaAttachments extends ImmutablePureComponent {
return (
);
- }
+ };
renderLoadingAudioPlayer = () => {
const { height, width } = this.props;
@@ -45,7 +45,7 @@ export default class MediaAttachments extends ImmutablePureComponent {
return (
);
- }
+ };
render () {
const { status, width, height } = this.props;
diff --git a/app/javascript/mastodon/components/media_gallery.js b/app/javascript/mastodon/components/media_gallery.js
index e4a8be338..659a83375 100644
--- a/app/javascript/mastodon/components/media_gallery.js
+++ b/app/javascript/mastodon/components/media_gallery.js
@@ -40,14 +40,14 @@ class Item extends React.PureComponent {
if (this.hoverToPlay()) {
e.target.play();
}
- }
+ };
handleMouseLeave = (e) => {
if (this.hoverToPlay()) {
e.target.pause();
e.target.currentTime = 0;
}
- }
+ };
getAutoPlay() {
return this.props.autoplay || autoPlayGif;
@@ -71,11 +71,11 @@ class Item extends React.PureComponent {
}
e.stopPropagation();
- }
+ };
handleImageLoad = () => {
this.setState({ loaded: true });
- }
+ };
render () {
const { attachment, index, size, standalone, displayWidth, visible } = this.props;
@@ -277,11 +277,11 @@ class MediaGallery extends React.PureComponent {
} else {
this.setState({ visible: !this.state.visible });
}
- }
+ };
handleClick = (index) => {
this.props.onOpenMedia(this.props.media, index);
- }
+ };
handleRef = c => {
this.node = c;
@@ -289,7 +289,7 @@ class MediaGallery extends React.PureComponent {
if (this.node) {
this._setDimensions();
}
- }
+ };
_setDimensions () {
const width = this.node.offsetWidth;
diff --git a/app/javascript/mastodon/components/modal_root.js b/app/javascript/mastodon/components/modal_root.js
index b894aeaf9..c0525c221 100644
--- a/app/javascript/mastodon/components/modal_root.js
+++ b/app/javascript/mastodon/components/modal_root.js
@@ -28,7 +28,7 @@ export default class ModalRoot extends React.PureComponent {
&& !!this.props.children) {
this.props.onClose();
}
- }
+ };
handleKeyDown = (e) => {
if (e.key === 'Tab') {
@@ -49,7 +49,7 @@ export default class ModalRoot extends React.PureComponent {
e.preventDefault();
}
}
- }
+ };
componentDidMount () {
window.addEventListener('keyup', this.handleKeyUp, false);
@@ -122,11 +122,11 @@ export default class ModalRoot extends React.PureComponent {
getSiblings = () => {
return Array(...this.node.parentElement.childNodes).filter(node => node !== this.node);
- }
+ };
setRef = ref => {
this.node = ref;
- }
+ };
render () {
const { children, onClose } = this.props;
diff --git a/app/javascript/mastodon/components/picture_in_picture_placeholder.js b/app/javascript/mastodon/components/picture_in_picture_placeholder.js
index 19d15c18b..0effddef9 100644
--- a/app/javascript/mastodon/components/picture_in_picture_placeholder.js
+++ b/app/javascript/mastodon/components/picture_in_picture_placeholder.js
@@ -22,7 +22,7 @@ class PictureInPicturePlaceholder extends React.PureComponent {
handleClick = () => {
const { dispatch } = this.props;
dispatch(removePictureInPicture());
- }
+ };
setRef = c => {
this.node = c;
@@ -30,7 +30,7 @@ class PictureInPicturePlaceholder extends React.PureComponent {
if (this.node) {
this._setDimensions();
}
- }
+ };
_setDimensions () {
const width = this.node.offsetWidth;
diff --git a/app/javascript/mastodon/components/poll.js b/app/javascript/mastodon/components/poll.js
index 3e643168e..95a900c49 100644
--- a/app/javascript/mastodon/components/poll.js
+++ b/app/javascript/mastodon/components/poll.js
@@ -95,7 +95,7 @@ class Poll extends ImmutablePureComponent {
tmp[value] = true;
this.setState({ selected: tmp });
}
- }
+ };
handleOptionChange = ({ target: { value } }) => {
this._toggleOption(value);
@@ -107,7 +107,7 @@ class Poll extends ImmutablePureComponent {
e.stopPropagation();
e.preventDefault();
}
- }
+ };
handleVote = () => {
if (this.props.disabled) {
diff --git a/app/javascript/mastodon/components/scrollable_list.js b/app/javascript/mastodon/components/scrollable_list.js
index 91d04bf4d..4a6ffb149 100644
--- a/app/javascript/mastodon/components/scrollable_list.js
+++ b/app/javascript/mastodon/components/scrollable_list.js
@@ -97,7 +97,7 @@ class ScrollableList extends PureComponent {
} else {
return this.node;
}
- }
+ };
setScrollTop = newScrollTop => {
if (this.getScrollTop() !== newScrollTop) {
@@ -143,7 +143,7 @@ class ScrollableList extends PureComponent {
this.mouseMovedRecently = false;
this.scrollToTopOnMouseIdle = false;
- }
+ };
componentDidMount () {
this.attachScrollListener();
@@ -161,25 +161,25 @@ class ScrollableList extends PureComponent {
} else {
return null;
}
- }
+ };
getScrollTop = () => {
return this._getScrollingElement().scrollTop;
- }
+ };
getScrollHeight = () => {
return this._getScrollingElement().scrollHeight;
- }
+ };
getClientHeight = () => {
return this._getScrollingElement().clientHeight;
- }
+ };
updateScrollBottom = (snapshot) => {
const newScrollTop = this.getScrollHeight() - snapshot;
this.setScrollTop(newScrollTop);
- }
+ };
getSnapshotBeforeUpdate (prevProps) {
const someItemInserted = React.Children.count(prevProps.children) > 0 &&
@@ -206,7 +206,7 @@ class ScrollableList extends PureComponent {
if (width && this.state.cachedMediaWidth !== width) {
this.setState({ cachedMediaWidth: width });
}
- }
+ };
componentWillUnmount () {
this.clearMouseIdleTimer();
@@ -218,7 +218,7 @@ class ScrollableList extends PureComponent {
onFullScreenChange = () => {
this.setState({ fullscreen: isFullscreen() });
- }
+ };
attachIntersectionObserver () {
let nodeOptions = {
@@ -269,12 +269,12 @@ class ScrollableList extends PureComponent {
setRef = (c) => {
this.node = c;
- }
+ };
handleLoadMore = e => {
e.preventDefault();
this.props.onLoadMore();
- }
+ };
handleLoadPending = e => {
e.preventDefault();
@@ -286,7 +286,7 @@ class ScrollableList extends PureComponent {
this.clearMouseIdleTimer();
this.mouseIdleTimer = setTimeout(this.handleMouseIdle, MOUSE_IDLE_DELAY);
this.mouseMovedRecently = true;
- }
+ };
render () {
const { children, scrollKey, trackScroll, showLoading, isLoading, hasMore, numPending, prepend, alwaysPrepend, append, emptyMessage, onLoadMore } = this.props;
diff --git a/app/javascript/mastodon/components/status.js b/app/javascript/mastodon/components/status.js
index a1384ba58..6b8922608 100644
--- a/app/javascript/mastodon/components/status.js
+++ b/app/javascript/mastodon/components/status.js
@@ -135,7 +135,7 @@ class Status extends ImmutablePureComponent {
handleToggleMediaVisibility = () => {
this.setState({ showMedia: !this.state.showMedia });
- }
+ };
handleClick = e => {
if (e && (e.button !== 0 || e.ctrlKey || e.metaKey)) {
@@ -147,11 +147,11 @@ class Status extends ImmutablePureComponent {
}
this.handleHotkeyOpen();
- }
+ };
handlePrependAccountClick = e => {
this.handleAccountClick(e, false);
- }
+ };
handleAccountClick = (e, proper = true) => {
if (e && (e.button !== 0 || e.ctrlKey || e.metaKey)) {
@@ -163,19 +163,19 @@ class Status extends ImmutablePureComponent {
}
this._openProfile(proper);
- }
+ };
handleExpandedToggle = () => {
this.props.onToggleHidden(this._properStatus());
- }
+ };
handleCollapsedToggle = isCollapsed => {
this.props.onToggleCollapsed(this._properStatus(), isCollapsed);
- }
+ };
handleTranslate = () => {
this.props.onTranslate(this._properStatus());
- }
+ };
renderLoadingMediaGallery () {
return ;
@@ -192,11 +192,11 @@ class Status extends ImmutablePureComponent {
handleOpenVideo = (options) => {
const status = this._properStatus();
this.props.onOpenVideo(status.get('id'), status.getIn(['media_attachments', 0]), options);
- }
+ };
handleOpenMedia = (media, index) => {
this.props.onOpenMedia(this._properStatus().get('id'), media, index);
- }
+ };
handleHotkeyOpenMedia = e => {
const { onOpenMedia, onOpenVideo } = this.props;
@@ -211,32 +211,32 @@ class Status extends ImmutablePureComponent {
onOpenMedia(status.get('id'), status.get('media_attachments'), 0);
}
}
- }
+ };
handleDeployPictureInPicture = (type, mediaProps) => {
const { deployPictureInPicture } = this.props;
const status = this._properStatus();
deployPictureInPicture(status, type, mediaProps);
- }
+ };
handleHotkeyReply = e => {
e.preventDefault();
this.props.onReply(this._properStatus(), this.context.router.history);
- }
+ };
handleHotkeyFavourite = () => {
this.props.onFavourite(this._properStatus());
- }
+ };
handleHotkeyBoost = e => {
this.props.onReblog(this._properStatus(), e);
- }
+ };
handleHotkeyMention = e => {
e.preventDefault();
this.props.onMention(this._properStatus().get('account'), this.context.router.history);
- }
+ };
handleHotkeyOpen = () => {
if (this.props.onClick) {
@@ -252,11 +252,11 @@ class Status extends ImmutablePureComponent {
}
router.history.push(`/@${status.getIn(['account', 'acct'])}/${status.get('id')}`);
- }
+ };
handleHotkeyOpenProfile = () => {
this._openProfile();
- }
+ };
_openProfile = (proper = true) => {
const { router } = this.context;
@@ -267,32 +267,32 @@ class Status extends ImmutablePureComponent {
}
router.history.push(`/@${status.getIn(['account', 'acct'])}`);
- }
+ };
handleHotkeyMoveUp = e => {
this.props.onMoveUp(this.props.status.get('id'), e.target.getAttribute('data-featured'));
- }
+ };
handleHotkeyMoveDown = e => {
this.props.onMoveDown(this.props.status.get('id'), e.target.getAttribute('data-featured'));
- }
+ };
handleHotkeyToggleHidden = () => {
this.props.onToggleHidden(this._properStatus());
- }
+ };
handleHotkeyToggleSensitive = () => {
this.handleToggleMediaVisibility();
- }
+ };
handleUnfilterClick = e => {
this.setState({ forceFilter: false });
e.preventDefault();
- }
+ };
handleFilterClick = () => {
this.setState({ forceFilter: true });
- }
+ };
_properStatus () {
const { status } = this.props;
@@ -306,7 +306,7 @@ class Status extends ImmutablePureComponent {
handleRef = c => {
this.node = c;
- }
+ };
render () {
let media = null;
diff --git a/app/javascript/mastodon/components/status_action_bar.js b/app/javascript/mastodon/components/status_action_bar.js
index 00fc94358..eeb376561 100644
--- a/app/javascript/mastodon/components/status_action_bar.js
+++ b/app/javascript/mastodon/components/status_action_bar.js
@@ -97,7 +97,7 @@ class StatusActionBar extends ImmutablePureComponent {
'status',
'relationship',
'withDismiss',
- ]
+ ];
handleReplyClick = () => {
const { signedIn } = this.context.identity;
@@ -107,7 +107,7 @@ class StatusActionBar extends ImmutablePureComponent {
} else {
this.props.onInteractionModal('reply', this.props.status);
}
- }
+ };
handleShareClick = () => {
navigator.share({
@@ -116,7 +116,7 @@ class StatusActionBar extends ImmutablePureComponent {
}).catch((e) => {
if (e.name !== 'AbortError') console.error(e);
});
- }
+ };
handleFavouriteClick = () => {
const { signedIn } = this.context.identity;
@@ -126,7 +126,7 @@ class StatusActionBar extends ImmutablePureComponent {
} else {
this.props.onInteractionModal('favourite', this.props.status);
}
- }
+ };
handleReblogClick = e => {
const { signedIn } = this.context.identity;
@@ -136,35 +136,35 @@ class StatusActionBar extends ImmutablePureComponent {
} else {
this.props.onInteractionModal('reblog', this.props.status);
}
- }
+ };
handleBookmarkClick = () => {
this.props.onBookmark(this.props.status);
- }
+ };
handleDeleteClick = () => {
this.props.onDelete(this.props.status, this.context.router.history);
- }
+ };
handleRedraftClick = () => {
this.props.onDelete(this.props.status, this.context.router.history, true);
- }
+ };
handleEditClick = () => {
this.props.onEdit(this.props.status, this.context.router.history);
- }
+ };
handlePinClick = () => {
this.props.onPin(this.props.status);
- }
+ };
handleMentionClick = () => {
this.props.onMention(this.props.status.get('account'), this.context.router.history);
- }
+ };
handleDirectClick = () => {
this.props.onDirect(this.props.status.get('account'), this.context.router.history);
- }
+ };
handleMuteClick = () => {
const { status, relationship, onMute, onUnmute } = this.props;
@@ -175,7 +175,7 @@ class StatusActionBar extends ImmutablePureComponent {
} else {
onMute(account);
}
- }
+ };
handleBlockClick = () => {
const { status, relationship, onBlock, onUnblock } = this.props;
@@ -186,50 +186,50 @@ class StatusActionBar extends ImmutablePureComponent {
} else {
onBlock(status);
}
- }
+ };
handleBlockDomain = () => {
const { status, onBlockDomain } = this.props;
const account = status.get('account');
onBlockDomain(account.get('acct').split('@')[1]);
- }
+ };
handleUnblockDomain = () => {
const { status, onUnblockDomain } = this.props;
const account = status.get('account');
onUnblockDomain(account.get('acct').split('@')[1]);
- }
+ };
handleOpen = () => {
this.context.router.history.push(`/@${this.props.status.getIn(['account', 'acct'])}/${this.props.status.get('id')}`);
- }
+ };
handleEmbed = () => {
this.props.onEmbed(this.props.status);
- }
+ };
handleReport = () => {
this.props.onReport(this.props.status);
- }
+ };
handleConversationMuteClick = () => {
this.props.onMuteConversation(this.props.status);
- }
+ };
handleFilterClick = () => {
this.props.onAddFilter(this.props.status);
- }
+ };
handleCopy = () => {
const url = this.props.status.get('url');
navigator.clipboard.writeText(url);
- }
+ };
handleHideClick = () => {
this.props.onFilter();
- }
+ };
render () {
const { status, relationship, intl, withDismiss, withCounters, scrollKey } = this.props;
diff --git a/app/javascript/mastodon/components/status_content.js b/app/javascript/mastodon/components/status_content.js
index 6f3093d63..ece54621f 100644
--- a/app/javascript/mastodon/components/status_content.js
+++ b/app/javascript/mastodon/components/status_content.js
@@ -130,7 +130,7 @@ class StatusContent extends React.PureComponent {
let emoji = emojis[i];
emoji.src = emoji.getAttribute('data-original');
}
- }
+ };
handleMouseLeave = ({ currentTarget }) => {
if (autoPlayGif) {
@@ -143,7 +143,7 @@ class StatusContent extends React.PureComponent {
let emoji = emojis[i];
emoji.src = emoji.getAttribute('data-static');
}
- }
+ };
componentDidMount () {
this._updateStatusLinks();
@@ -158,7 +158,7 @@ class StatusContent extends React.PureComponent {
e.preventDefault();
this.context.router.history.push(`/@${mention.get('acct')}`);
}
- }
+ };
onHashtagClick = (hashtag, e) => {
hashtag = hashtag.replace(/^#/, '');
@@ -167,11 +167,11 @@ class StatusContent extends React.PureComponent {
e.preventDefault();
this.context.router.history.push(`/tags/${hashtag}`);
}
- }
+ };
handleMouseDown = (e) => {
this.startXY = [e.clientX, e.clientY];
- }
+ };
handleMouseUp = (e) => {
if (!this.startXY) {
@@ -194,7 +194,7 @@ class StatusContent extends React.PureComponent {
}
this.startXY = null;
- }
+ };
handleSpoilerClick = (e) => {
e.preventDefault();
@@ -205,15 +205,15 @@ class StatusContent extends React.PureComponent {
} else {
this.setState({ hidden: !this.state.hidden });
}
- }
+ };
handleTranslate = () => {
this.props.onTranslate();
- }
+ };
setRef = (c) => {
this.node = c;
- }
+ };
render () {
const { status, intl } = this.props;
diff --git a/app/javascript/mastodon/components/status_list.js b/app/javascript/mastodon/components/status_list.js
index 35e5749a3..3d513bbf8 100644
--- a/app/javascript/mastodon/components/status_list.js
+++ b/app/javascript/mastodon/components/status_list.js
@@ -34,7 +34,7 @@ export default class StatusList extends ImmutablePureComponent {
getFeaturedStatusCount = () => {
return this.props.featuredStatusIds ? this.props.featuredStatusIds.size : 0;
- }
+ };
getCurrentStatusIndex = (id, featured) => {
if (featured) {
@@ -42,21 +42,21 @@ export default class StatusList extends ImmutablePureComponent {
} else {
return this.props.statusIds.indexOf(id) + this.getFeaturedStatusCount();
}
- }
+ };
handleMoveUp = (id, featured) => {
const elementIndex = this.getCurrentStatusIndex(id, featured) - 1;
this._selectChild(elementIndex, true);
- }
+ };
handleMoveDown = (id, featured) => {
const elementIndex = this.getCurrentStatusIndex(id, featured) + 1;
this._selectChild(elementIndex, false);
- }
+ };
handleLoadOlder = debounce(() => {
this.props.onLoadMore(this.props.statusIds.size > 0 ? this.props.statusIds.last() : undefined);
- }, 300, { leading: true })
+ }, 300, { leading: true });
_selectChild (index, align_top) {
const container = this.node.node;
@@ -74,7 +74,7 @@ export default class StatusList extends ImmutablePureComponent {
setRef = c => {
this.node = c;
- }
+ };
render () {
const { statusIds, featuredStatusIds, onLoadMore, timelineId, ...other } = this.props;
diff --git a/app/javascript/mastodon/containers/media_container.js b/app/javascript/mastodon/containers/media_container.js
index 6ee1f0bd8..25dc17444 100644
--- a/app/javascript/mastodon/containers/media_container.js
+++ b/app/javascript/mastodon/containers/media_container.js
@@ -39,7 +39,7 @@ export default class MediaContainer extends PureComponent {
document.documentElement.style.marginRight = `${getScrollbarWidth()}px`;
this.setState({ media, index });
- }
+ };
handleOpenVideo = (options) => {
const { components } = this.props;
@@ -50,7 +50,7 @@ export default class MediaContainer extends PureComponent {
document.documentElement.style.marginRight = `${getScrollbarWidth()}px`;
this.setState({ media: mediaList, options });
- }
+ };
handleCloseMedia = () => {
document.body.classList.remove('with-modals--active');
@@ -63,11 +63,11 @@ export default class MediaContainer extends PureComponent {
backgroundColor: null,
options: null,
});
- }
+ };
setBackgroundColor = color => {
this.setState({ backgroundColor: color });
- }
+ };
render () {
const { locale, components } = this.props;
diff --git a/app/javascript/mastodon/features/about/index.js b/app/javascript/mastodon/features/about/index.js
index e59f73738..dc1942c63 100644
--- a/app/javascript/mastodon/features/about/index.js
+++ b/app/javascript/mastodon/features/about/index.js
@@ -59,7 +59,7 @@ class Section extends React.PureComponent {
const { collapsed } = this.state;
this.setState({ collapsed: !collapsed }, () => onOpen && onOpen());
- }
+ };
render () {
const { title, children } = this.props;
@@ -106,7 +106,7 @@ class About extends React.PureComponent {
handleDomainBlocksOpen = () => {
const { dispatch } = this.props;
dispatch(fetchDomainBlocks());
- }
+ };
render () {
const { multiColumn, intl, server, extendedDescription, domainBlocks } = this.props;
diff --git a/app/javascript/mastodon/features/account/components/account_note.js b/app/javascript/mastodon/features/account/components/account_note.js
index 1787ce1ab..fdacc7583 100644
--- a/app/javascript/mastodon/features/account/components/account_note.js
+++ b/app/javascript/mastodon/features/account/components/account_note.js
@@ -90,7 +90,7 @@ class AccountNote extends ImmutablePureComponent {
setTextareaRef = c => {
this.textarea = c;
- }
+ };
handleChange = e => {
this.setState({ value: e.target.value, saving: false });
@@ -114,13 +114,13 @@ class AccountNote extends ImmutablePureComponent {
}
});
}
- }
+ };
handleBlur = () => {
if (this._isDirty()) {
this._save();
}
- }
+ };
_save (showMessage = true) {
this.setState({ saving: true }, () => this.props.onSave(this.state.value));
diff --git a/app/javascript/mastodon/features/account/components/header.js b/app/javascript/mastodon/features/account/components/header.js
index d0715d20d..539d72574 100644
--- a/app/javascript/mastodon/features/account/components/header.js
+++ b/app/javascript/mastodon/features/account/components/header.js
@@ -109,7 +109,7 @@ class Header extends ImmutablePureComponent {
openEditProfile = () => {
window.open('/settings/profile', '_blank');
- }
+ };
isStatusesPageActive = (match, location) => {
if (!match) {
@@ -117,7 +117,7 @@ class Header extends ImmutablePureComponent {
}
return !location.pathname.match(/\/(followers|following)\/?$/);
- }
+ };
handleMouseEnter = ({ currentTarget }) => {
if (autoPlayGif) {
@@ -130,7 +130,7 @@ class Header extends ImmutablePureComponent {
let emoji = emojis[i];
emoji.src = emoji.getAttribute('data-original');
}
- }
+ };
handleMouseLeave = ({ currentTarget }) => {
if (autoPlayGif) {
@@ -143,14 +143,14 @@ class Header extends ImmutablePureComponent {
let emoji = emojis[i];
emoji.src = emoji.getAttribute('data-static');
}
- }
+ };
handleAvatarClick = e => {
if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
e.preventDefault();
this.props.onOpenAvatar();
}
- }
+ };
handleShare = () => {
const { account } = this.props;
@@ -161,7 +161,7 @@ class Header extends ImmutablePureComponent {
}).catch((e) => {
if (e.name !== 'AbortError') console.error(e);
});
- }
+ };
render () {
const { account, hidden, intl, domain } = this.props;
diff --git a/app/javascript/mastodon/features/account_gallery/components/media_item.js b/app/javascript/mastodon/features/account_gallery/components/media_item.js
index 13fd7fe03..80e164af8 100644
--- a/app/javascript/mastodon/features/account_gallery/components/media_item.js
+++ b/app/javascript/mastodon/features/account_gallery/components/media_item.js
@@ -22,20 +22,20 @@ export default class MediaItem extends ImmutablePureComponent {
handleImageLoad = () => {
this.setState({ loaded: true });
- }
+ };
handleMouseEnter = e => {
if (this.hoverToPlay()) {
e.target.play();
}
- }
+ };
handleMouseLeave = e => {
if (this.hoverToPlay()) {
e.target.pause();
e.target.currentTime = 0;
}
- }
+ };
hoverToPlay () {
return !autoPlayGif && ['gifv', 'video'].indexOf(this.props.attachment.get('type')) !== -1;
@@ -51,7 +51,7 @@ export default class MediaItem extends ImmutablePureComponent {
this.setState({ visible: true });
}
}
- }
+ };
render () {
const { attachment, displayWidth } = this.props;
diff --git a/app/javascript/mastodon/features/account_gallery/index.js b/app/javascript/mastodon/features/account_gallery/index.js
index dc7556a9a..3942b57cb 100644
--- a/app/javascript/mastodon/features/account_gallery/index.js
+++ b/app/javascript/mastodon/features/account_gallery/index.js
@@ -47,7 +47,7 @@ class LoadMoreMedia extends ImmutablePureComponent {
handleLoadMore = () => {
this.props.onLoadMore(this.props.maxId);
- }
+ };
render () {
return (
@@ -114,7 +114,7 @@ class AccountGallery extends ImmutablePureComponent {
if (this.props.hasMore) {
this.handleLoadMore(this.props.attachments.size > 0 ? this.props.attachments.last().getIn(['status', 'id']) : undefined);
}
- }
+ };
handleScroll = e => {
const { scrollTop, scrollHeight, clientHeight } = e.target;
@@ -123,7 +123,7 @@ class AccountGallery extends ImmutablePureComponent {
if (150 > offset && !this.props.isLoading) {
this.handleScrollToBottom();
}
- }
+ };
handleLoadMore = maxId => {
this.props.dispatch(expandAccountMediaTimeline(this.props.accountId, { maxId }));
@@ -132,7 +132,7 @@ class AccountGallery extends ImmutablePureComponent {
handleLoadOlder = e => {
e.preventDefault();
this.handleScrollToBottom();
- }
+ };
handleOpenMedia = attachment => {
const { dispatch } = this.props;
@@ -148,13 +148,13 @@ class AccountGallery extends ImmutablePureComponent {
dispatch(openModal('MEDIA', { media, index, statusId }));
}
- }
+ };
handleRef = c => {
if (c) {
this.setState({ width: c.offsetWidth });
}
- }
+ };
render () {
const { attachments, isLoading, hasMore, isAccount, multiColumn, blockedBy, suspended } = this.props;
diff --git a/app/javascript/mastodon/features/account_timeline/components/header.js b/app/javascript/mastodon/features/account_timeline/components/header.js
index d67e307ff..bffa5554b 100644
--- a/app/javascript/mastodon/features/account_timeline/components/header.js
+++ b/app/javascript/mastodon/features/account_timeline/components/header.js
@@ -36,35 +36,35 @@ export default class Header extends ImmutablePureComponent {
handleFollow = () => {
this.props.onFollow(this.props.account);
- }
+ };
handleBlock = () => {
this.props.onBlock(this.props.account);
- }
+ };
handleMention = () => {
this.props.onMention(this.props.account, this.context.router.history);
- }
+ };
handleDirect = () => {
this.props.onDirect(this.props.account, this.context.router.history);
- }
+ };
handleReport = () => {
this.props.onReport(this.props.account);
- }
+ };
handleReblogToggle = () => {
this.props.onReblogToggle(this.props.account);
- }
+ };
handleNotifyToggle = () => {
this.props.onNotifyToggle(this.props.account);
- }
+ };
handleMute = () => {
this.props.onMute(this.props.account);
- }
+ };
handleBlockDomain = () => {
const domain = this.props.account.get('acct').split('@')[1];
@@ -72,7 +72,7 @@ export default class Header extends ImmutablePureComponent {
if (!domain) return;
this.props.onBlockDomain(domain);
- }
+ };
handleUnblockDomain = () => {
const domain = this.props.account.get('acct').split('@')[1];
@@ -80,31 +80,31 @@ export default class Header extends ImmutablePureComponent {
if (!domain) return;
this.props.onUnblockDomain(domain);
- }
+ };
handleEndorseToggle = () => {
this.props.onEndorseToggle(this.props.account);
- }
+ };
handleAddToList = () => {
this.props.onAddToList(this.props.account);
- }
+ };
handleEditAccountNote = () => {
this.props.onEditAccountNote(this.props.account);
- }
+ };
handleChangeLanguages = () => {
this.props.onChangeLanguages(this.props.account);
- }
+ };
handleInteractionModal = () => {
this.props.onInteractionModal(this.props.account);
- }
+ };
handleOpenAvatar = () => {
this.props.onOpenAvatar(this.props.account);
- }
+ };
render () {
const { account, hidden, hideTabs } = this.props;
diff --git a/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js b/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js
index 80b967642..9ee347bb5 100644
--- a/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js
+++ b/app/javascript/mastodon/features/account_timeline/components/limited_account_hint.js
@@ -20,7 +20,7 @@ class LimitedAccountHint extends React.PureComponent {
static propTypes = {
accountId: PropTypes.string.isRequired,
reveal: PropTypes.func,
- }
+ };
render () {
const { reveal } = this.props;
diff --git a/app/javascript/mastodon/features/account_timeline/index.js b/app/javascript/mastodon/features/account_timeline/index.js
index bdb430a33..337977fde 100644
--- a/app/javascript/mastodon/features/account_timeline/index.js
+++ b/app/javascript/mastodon/features/account_timeline/index.js
@@ -145,7 +145,7 @@ class AccountTimeline extends ImmutablePureComponent {
handleLoadMore = maxId => {
this.props.dispatch(expandAccountTimeline(this.props.accountId, { maxId, withReplies: this.props.withReplies, tagged: this.props.params.tagged }));
- }
+ };
render () {
const { accountId, statusIds, featuredStatusIds, isLoading, hasMore, blockedBy, suspended, isAccount, hidden, multiColumn, remote, remoteUrl } = this.props;
diff --git a/app/javascript/mastodon/features/audio/index.js b/app/javascript/mastodon/features/audio/index.js
index 21a453d2c..a55658360 100644
--- a/app/javascript/mastodon/features/audio/index.js
+++ b/app/javascript/mastodon/features/audio/index.js
@@ -75,7 +75,7 @@ class Audio extends React.PureComponent {
if (this.player) {
this._setDimensions();
}
- }
+ };
_pack() {
return {
@@ -105,11 +105,11 @@ class Audio extends React.PureComponent {
setSeekRef = c => {
this.seek = c;
- }
+ };
setVolumeRef = c => {
this.volume = c;
- }
+ };
setAudioRef = c => {
this.audio = c;
@@ -118,13 +118,13 @@ class Audio extends React.PureComponent {
this.audio.volume = 1;
this.audio.muted = false;
}
- }
+ };
setCanvasRef = c => {
this.canvas = c;
this.visualizer.setCanvas(c);
- }
+ };
componentDidMount () {
window.addEventListener('scroll', this.handleScroll);
@@ -163,7 +163,7 @@ class Audio extends React.PureComponent {
} else {
this.setState({ paused: true }, () => this.audio.pause());
}
- }
+ };
handleResize = debounce(() => {
if (this.player) {
@@ -181,7 +181,7 @@ class Audio extends React.PureComponent {
}
this._renderCanvas();
- }
+ };
handlePause = () => {
this.setState({ paused: true });
@@ -189,7 +189,7 @@ class Audio extends React.PureComponent {
if (this.audioContext) {
this.audioContext.suspend();
}
- }
+ };
handleProgress = () => {
const lastTimeRange = this.audio.buffered.length - 1;
@@ -197,7 +197,7 @@ class Audio extends React.PureComponent {
if (lastTimeRange > -1) {
this.setState({ buffer: Math.ceil(this.audio.buffered.end(lastTimeRange) / this.audio.duration * 100) });
}
- }
+ };
toggleMute = () => {
const muted = !this.state.muted;
@@ -207,7 +207,7 @@ class Audio extends React.PureComponent {
this.gainNode.gain.value = muted ? 0 : this.state.volume;
}
});
- }
+ };
toggleReveal = () => {
if (this.props.onToggleVisibility) {
@@ -215,7 +215,7 @@ class Audio extends React.PureComponent {
} else {
this.setState({ revealed: !this.state.revealed });
}
- }
+ };
handleVolumeMouseDown = e => {
document.addEventListener('mousemove', this.handleMouseVolSlide, true);
@@ -227,14 +227,14 @@ class Audio extends React.PureComponent {
e.preventDefault();
e.stopPropagation();
- }
+ };
handleVolumeMouseUp = () => {
document.removeEventListener('mousemove', this.handleMouseVolSlide, true);
document.removeEventListener('mouseup', this.handleVolumeMouseUp, true);
document.removeEventListener('touchmove', this.handleMouseVolSlide, true);
document.removeEventListener('touchend', this.handleVolumeMouseUp, true);
- }
+ };
handleMouseDown = e => {
document.addEventListener('mousemove', this.handleMouseMove, true);
@@ -248,7 +248,7 @@ class Audio extends React.PureComponent {
e.preventDefault();
e.stopPropagation();
- }
+ };
handleMouseUp = () => {
document.removeEventListener('mousemove', this.handleMouseMove, true);
@@ -258,7 +258,7 @@ class Audio extends React.PureComponent {
this.setState({ dragging: false });
this.audio.play();
- }
+ };
handleMouseMove = throttle(e => {
const { x } = getPointerPosition(this.seek, e);
@@ -276,7 +276,7 @@ class Audio extends React.PureComponent {
currentTime: this.audio.currentTime,
duration: this.audio.duration,
});
- }
+ };
handleMouseVolSlide = throttle(e => {
const { x } = getPointerPosition(this.volume, e);
@@ -311,11 +311,11 @@ class Audio extends React.PureComponent {
handleMouseEnter = () => {
this.setState({ hovered: true });
- }
+ };
handleMouseLeave = () => {
this.setState({ hovered: false });
- }
+ };
handleLoadedData = () => {
const { autoPlay, currentTime } = this.props;
@@ -327,7 +327,7 @@ class Audio extends React.PureComponent {
if (autoPlay) {
this.togglePlay();
}
- }
+ };
_initAudioContext () {
const AudioContext = window.AudioContext || window.webkitAudioContext;
@@ -361,7 +361,7 @@ class Audio extends React.PureComponent {
}).catch(err => {
console.error(err);
});
- }
+ };
_renderCanvas () {
requestAnimationFrame(() => {
@@ -432,7 +432,7 @@ class Audio extends React.PureComponent {
e.stopPropagation();
this.togglePlay();
}
- }
+ };
handleKeyDown = e => {
switch(e.key) {
@@ -457,7 +457,7 @@ class Audio extends React.PureComponent {
this.seekBy(10);
break;
}
- }
+ };
render () {
const { src, intl, alt, editable, autoPlay, sensitive, blurhash } = this.props;
diff --git a/app/javascript/mastodon/features/bookmarked_statuses/index.js b/app/javascript/mastodon/features/bookmarked_statuses/index.js
index 097be17c9..8ef7855c1 100644
--- a/app/javascript/mastodon/features/bookmarked_statuses/index.js
+++ b/app/javascript/mastodon/features/bookmarked_statuses/index.js
@@ -48,24 +48,24 @@ class Bookmarks extends ImmutablePureComponent {
} else {
dispatch(addColumn('BOOKMARKS', {}));
}
- }
+ };
handleMove = (dir) => {
const { columnId, dispatch } = this.props;
dispatch(moveColumn(columnId, dir));
- }
+ };
handleHeaderClick = () => {
this.column.scrollTop();
- }
+ };
setRef = c => {
this.column = c;
- }
+ };
handleLoadMore = debounce(() => {
this.props.dispatch(expandBookmarkedStatuses());
- }, 300, { leading: true })
+ }, 300, { leading: true });
render () {
const { intl, statusIds, columnId, multiColumn, hasMore, isLoading } = this.props;
diff --git a/app/javascript/mastodon/features/community_timeline/index.js b/app/javascript/mastodon/features/community_timeline/index.js
index 7b3f8845f..4dbd55cf2 100644
--- a/app/javascript/mastodon/features/community_timeline/index.js
+++ b/app/javascript/mastodon/features/community_timeline/index.js
@@ -60,16 +60,16 @@ class CommunityTimeline extends React.PureComponent {
} else {
dispatch(addColumn('COMMUNITY', { other: { onlyMedia } }));
}
- }
+ };
handleMove = (dir) => {
const { columnId, dispatch } = this.props;
dispatch(moveColumn(columnId, dir));
- }
+ };
handleHeaderClick = () => {
this.column.scrollTop();
- }
+ };
componentDidMount () {
const { dispatch, onlyMedia } = this.props;
@@ -109,13 +109,13 @@ class CommunityTimeline extends React.PureComponent {
setRef = c => {
this.column = c;
- }
+ };
handleLoadMore = maxId => {
const { dispatch, onlyMedia } = this.props;
dispatch(expandCommunityTimeline({ maxId, onlyMedia }));
- }
+ };
render () {
const { intl, hasUnread, columnId, multiColumn, onlyMedia } = this.props;
diff --git a/app/javascript/mastodon/features/compose/components/action_bar.js b/app/javascript/mastodon/features/compose/components/action_bar.js
index 90c85321e..ee584cb1b 100644
--- a/app/javascript/mastodon/features/compose/components/action_bar.js
+++ b/app/javascript/mastodon/features/compose/components/action_bar.js
@@ -31,7 +31,7 @@ class ActionBar extends React.PureComponent {
handleLogout = () => {
this.props.onLogout();
- }
+ };
render () {
const { intl } = this.props;
diff --git a/app/javascript/mastodon/features/compose/components/compose_form.js b/app/javascript/mastodon/features/compose/components/compose_form.js
index 7154c5efc..8a8da7a98 100644
--- a/app/javascript/mastodon/features/compose/components/compose_form.js
+++ b/app/javascript/mastodon/features/compose/components/compose_form.js
@@ -73,17 +73,17 @@ class ComposeForm extends ImmutablePureComponent {
handleChange = (e) => {
this.props.onChange(e.target.value);
- }
+ };
handleKeyDown = (e) => {
if (e.keyCode === 13 && (e.ctrlKey || e.metaKey)) {
this.handleSubmit();
}
- }
+ };
getFulltextForCharacterCounting = () => {
return [this.props.spoiler? this.props.spoilerText: '', countableText(this.props.text)].join('');
- }
+ };
canSubmit = () => {
const { isSubmitting, isChangingUpload, isUploading, anyMedia } = this.props;
@@ -91,7 +91,7 @@ class ComposeForm extends ImmutablePureComponent {
const isOnlyWhitespace = fulltext.length !== 0 && fulltext.trim().length === 0;
return !(isSubmitting || isUploading || isChangingUpload || length(fulltext) > 500 || (isOnlyWhitespace && !anyMedia));
- }
+ };
handleSubmit = (e) => {
if (this.props.text !== this.autosuggestTextarea.textarea.value) {
@@ -109,27 +109,27 @@ class ComposeForm extends ImmutablePureComponent {
if (e) {
e.preventDefault();
}
- }
+ };
onSuggestionsClearRequested = () => {
this.props.onClearSuggestions();
- }
+ };
onSuggestionsFetchRequested = (token) => {
this.props.onFetchSuggestions(token);
- }
+ };
onSuggestionSelected = (tokenStart, token, value) => {
this.props.onSuggestionSelected(tokenStart, token, value, ['text']);
- }
+ };
onSpoilerSuggestionSelected = (tokenStart, token, value) => {
this.props.onSuggestionSelected(tokenStart, token, value, ['spoiler_text']);
- }
+ };
handleChangeSpoilerText = (e) => {
this.props.onChangeSpoilerText(e.target.value);
- }
+ };
handleFocus = () => {
if (this.composeForm && !this.props.singleColumn) {
@@ -138,7 +138,7 @@ class ComposeForm extends ImmutablePureComponent {
this.composeForm.scrollIntoView();
}
}
- }
+ };
componentDidMount () {
this._updateFocusAndSelection({ });
@@ -184,15 +184,15 @@ class ComposeForm extends ImmutablePureComponent {
this.autosuggestTextarea.textarea.focus();
}
}
- }
+ };
setAutosuggestTextarea = (c) => {
this.autosuggestTextarea = c;
- }
+ };
setSpoilerText = (c) => {
this.spoilerText = c;
- }
+ };
setRef = c => {
this.composeForm = c;
@@ -204,7 +204,7 @@ class ComposeForm extends ImmutablePureComponent {
const needsSpace = data.custom && position > 0 && !allowedAroundShortCode.includes(text[position - 1]);
this.props.onPickEmoji(position, data, needsSpace);
- }
+ };
render () {
const { intl, onPaste, autoFocus } = this.props;
diff --git a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
index 76c9cda81..79378454d 100644
--- a/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
+++ b/app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
@@ -57,7 +57,7 @@ class ModifierPickerMenu extends React.PureComponent {
handleClick = e => {
this.props.onSelect(e.currentTarget.getAttribute('data-index') * 1);
- }
+ };
componentWillReceiveProps (nextProps) {
if (nextProps.active) {
@@ -75,7 +75,7 @@ class ModifierPickerMenu extends React.PureComponent {
if (this.node && !this.node.contains(e.target)) {
this.props.onClose();
}
- }
+ };
attachListeners () {
document.addEventListener('click', this.handleDocumentClick, false);
@@ -89,7 +89,7 @@ class ModifierPickerMenu extends React.PureComponent {
setRef = c => {
this.node = c;
- }
+ };
render () {
const { active } = this.props;
@@ -124,12 +124,12 @@ class ModifierPicker extends React.PureComponent {
} else {
this.props.onOpen();
}
- }
+ };
handleSelect = modifier => {
this.props.onChange(modifier);
this.props.onClose();
- }
+ };
render () {
const { active, modifier } = this.props;
@@ -174,7 +174,7 @@ class EmojiPickerMenu extends React.PureComponent {
if (this.node && !this.node.contains(e.target)) {
this.props.onClose();
}
- }
+ };
componentDidMount () {
document.addEventListener('click', this.handleDocumentClick, false);
@@ -198,7 +198,7 @@ class EmojiPickerMenu extends React.PureComponent {
setRef = c => {
this.node = c;
- }
+ };
getI18n = () => {
const { intl } = this.props;
@@ -219,7 +219,7 @@ class EmojiPickerMenu extends React.PureComponent {
custom: intl.formatMessage(messages.custom),
},
};
- }
+ };
handleClick = (emoji, event) => {
if (!emoji.native) {
@@ -229,19 +229,19 @@ class EmojiPickerMenu extends React.PureComponent {
this.props.onClose();
}
this.props.onPick(emoji);
- }
+ };
handleModifierOpen = () => {
this.setState({ modifierOpen: true });
- }
+ };
handleModifierClose = () => {
this.setState({ modifierOpen: false });
- }
+ };
handleModifierChange = modifier => {
this.props.onSkinTone(modifier);
- }
+ };
render () {
const { loading, style, intl, custom_emojis, skinTone, frequentlyUsedEmojis } = this.props;
@@ -325,7 +325,7 @@ class EmojiPickerDropdown extends React.PureComponent {
setRef = (c) => {
this.dropdown = c;
- }
+ };
onShowDropdown = () => {
this.setState({ active: true });
@@ -342,11 +342,11 @@ class EmojiPickerDropdown extends React.PureComponent {
this.setState({ loading: false, active: false });
});
}
- }
+ };
onHideDropdown = () => {
this.setState({ active: false });
- }
+ };
onToggle = (e) => {
if (!this.state.loading && (!e.key || e.key === 'Enter')) {
@@ -356,21 +356,21 @@ class EmojiPickerDropdown extends React.PureComponent {
this.onShowDropdown(e);
}
}
- }
+ };
handleKeyDown = e => {
if (e.key === 'Escape') {
this.onHideDropdown();
}
- }
+ };
setTargetRef = c => {
this.target = c;
- }
+ };
findTarget = () => {
return this.target;
- }
+ };
render () {
const { intl, onPickEmoji, onSkinTone, skinTone, frequentlyUsedEmojis, button } = this.props;
diff --git a/app/javascript/mastodon/features/compose/components/language_dropdown.js b/app/javascript/mastodon/features/compose/components/language_dropdown.js
index 2dd406b4b..d96d39f23 100644
--- a/app/javascript/mastodon/features/compose/components/language_dropdown.js
+++ b/app/javascript/mastodon/features/compose/components/language_dropdown.js
@@ -40,7 +40,7 @@ class LanguageDropdownMenu extends React.PureComponent {
if (this.node && !this.node.contains(e.target)) {
this.props.onClose();
}
- }
+ };
componentDidMount () {
document.addEventListener('click', this.handleDocumentClick, false);
@@ -63,15 +63,15 @@ class LanguageDropdownMenu extends React.PureComponent {
setRef = c => {
this.node = c;
- }
+ };
setListRef = c => {
this.listNode = c;
- }
+ };
handleSearchChange = ({ target }) => {
this.setState({ searchValue: target.value });
- }
+ };
search () {
const { languages, value, frequentlyUsedLanguages } = this.props;
@@ -122,7 +122,7 @@ class LanguageDropdownMenu extends React.PureComponent {
this.props.onClose();
this.props.onChange(value);
- }
+ };
handleKeyDown = e => {
const { onClose } = this.props;
@@ -163,7 +163,7 @@ class LanguageDropdownMenu extends React.PureComponent {
e.preventDefault();
e.stopPropagation();
}
- }
+ };
handleSearchKeyDown = e => {
const { onChange, onClose } = this.props;
@@ -199,11 +199,11 @@ class LanguageDropdownMenu extends React.PureComponent {
break;
}
- }
+ };
handleClear = () => {
this.setState({ searchValue: '' });
- }
+ };
renderItem = lang => {
const { value } = this.props;
@@ -213,7 +213,7 @@ class LanguageDropdownMenu extends React.PureComponent {
{lang[2]} ({lang[1]})
);
- }
+ };
render () {
const { intl } = this.props;
@@ -259,7 +259,7 @@ class LanguageDropdown extends React.PureComponent {
}
this.setState({ open: !this.state.open });
- }
+ };
handleClose = () => {
const { value, onClose } = this.props;
@@ -270,24 +270,24 @@ class LanguageDropdown extends React.PureComponent {
this.setState({ open: false });
onClose(value);
- }
+ };
handleChange = value => {
const { onChange } = this.props;
onChange(value);
- }
+ };
setTargetRef = c => {
this.target = c;
- }
+ };
findTarget = () => {
return this.target;
- }
+ };
handleOverlayEnter = (state) => {
this.setState({ placement: state.placement });
- }
+ };
render () {
const { value, intl, frequentlyUsedLanguages } = this.props;
diff --git a/app/javascript/mastodon/features/compose/components/poll_button.js b/app/javascript/mastodon/features/compose/components/poll_button.js
index 76f96bfa4..ff7a104aa 100644
--- a/app/javascript/mastodon/features/compose/components/poll_button.js
+++ b/app/javascript/mastodon/features/compose/components/poll_button.js
@@ -27,7 +27,7 @@ class PollButton extends React.PureComponent {
handleClick = () => {
this.props.onClick();
- }
+ };
render () {
const { intl, active, unavailable, disabled } = this.props;
diff --git a/app/javascript/mastodon/features/compose/components/poll_form.js b/app/javascript/mastodon/features/compose/components/poll_form.js
index 0ee1e6225..bab31cb4c 100644
--- a/app/javascript/mastodon/features/compose/components/poll_form.js
+++ b/app/javascript/mastodon/features/compose/components/poll_form.js
@@ -58,19 +58,19 @@ class Option extends React.PureComponent {
if (e.key === 'Enter' || e.key === ' ') {
this.handleToggleMultiple(e);
}
- }
+ };
onSuggestionsClearRequested = () => {
this.props.onClearSuggestions();
- }
+ };
onSuggestionsFetchRequested = (token) => {
this.props.onFetchSuggestions(token);
- }
+ };
onSuggestionSelected = (tokenStart, token, value) => {
this.props.onSuggestionSelected(tokenStart, token, value, ['poll', 'options', this.props.index]);
- }
+ };
render () {
const { isPollMultiple, title, lang, index, autoFocus, intl } = this.props;
diff --git a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js
index 545b67eda..ffd1094cd 100644
--- a/app/javascript/mastodon/features/compose/components/privacy_dropdown.js
+++ b/app/javascript/mastodon/features/compose/components/privacy_dropdown.js
@@ -35,7 +35,7 @@ class PrivacyDropdownMenu extends React.PureComponent {
if (this.node && !this.node.contains(e.target)) {
this.props.onClose();
}
- }
+ };
handleKeyDown = e => {
const { items } = this.props;
@@ -79,7 +79,7 @@ class PrivacyDropdownMenu extends React.PureComponent {
e.preventDefault();
e.stopPropagation();
}
- }
+ };
handleClick = e => {
const value = e.currentTarget.getAttribute('data-index');
@@ -88,7 +88,7 @@ class PrivacyDropdownMenu extends React.PureComponent {
this.props.onClose();
this.props.onChange(value);
- }
+ };
componentDidMount () {
document.addEventListener('click', this.handleDocumentClick, false);
@@ -103,11 +103,11 @@ class PrivacyDropdownMenu extends React.PureComponent {
setRef = c => {
this.node = c;
- }
+ };
setFocusRef = c => {
this.focusedItem = c;
- }
+ };
render () {
const { style, items, value } = this.props;
@@ -168,7 +168,7 @@ class PrivacyDropdown extends React.PureComponent {
}
this.setState({ open: !this.state.open });
}
- }
+ };
handleModalActionClick = (e) => {
e.preventDefault();
@@ -177,7 +177,7 @@ class PrivacyDropdown extends React.PureComponent {
this.props.onModalClose();
this.props.onChange(value);
- }
+ };
handleKeyDown = e => {
switch(e.key) {
@@ -185,13 +185,13 @@ class PrivacyDropdown extends React.PureComponent {
this.handleClose();
break;
}
- }
+ };
handleMouseDown = () => {
if (!this.state.open) {
this.activeElement = document.activeElement;
}
- }
+ };
handleButtonKeyDown = (e) => {
switch(e.key) {
@@ -200,18 +200,18 @@ class PrivacyDropdown extends React.PureComponent {
this.handleMouseDown();
break;
}
- }
+ };
handleClose = () => {
if (this.state.open && this.activeElement) {
this.activeElement.focus({ preventScroll: true });
}
this.setState({ open: false });
- }
+ };
handleChange = value => {
this.props.onChange(value);
- }
+ };
componentWillMount () {
const { intl: { formatMessage } } = this.props;
@@ -231,15 +231,15 @@ class PrivacyDropdown extends React.PureComponent {
setTargetRef = c => {
this.target = c;
- }
+ };
findTarget = () => {
return this.target;
- }
+ };
handleOverlayEnter = (state) => {
this.setState({ placement: state.placement });
- }
+ };
render () {
const { value, container, disabled, intl } = this.props;
diff --git a/app/javascript/mastodon/features/compose/components/reply_indicator.js b/app/javascript/mastodon/features/compose/components/reply_indicator.js
index fc236882a..98b142ab8 100644
--- a/app/javascript/mastodon/features/compose/components/reply_indicator.js
+++ b/app/javascript/mastodon/features/compose/components/reply_indicator.js
@@ -27,14 +27,14 @@ class ReplyIndicator extends ImmutablePureComponent {
handleClick = () => {
this.props.onCancel();
- }
+ };
handleAccountClick = (e) => {
if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
e.preventDefault();
this.context.router.history.push(`/@${this.props.status.getIn(['account', 'acct'])}`);
}
- }
+ };
render () {
const { status, intl } = this.props;
diff --git a/app/javascript/mastodon/features/compose/components/search.js b/app/javascript/mastodon/features/compose/components/search.js
index 5820f8ca2..0539c6b80 100644
--- a/app/javascript/mastodon/features/compose/components/search.js
+++ b/app/javascript/mastodon/features/compose/components/search.js
@@ -58,11 +58,11 @@ class Search extends React.PureComponent {
setRef = c => {
this.searchForm = c;
- }
+ };
handleChange = (e) => {
this.props.onChange(e.target.value);
- }
+ };
handleClear = (e) => {
e.preventDefault();
@@ -70,7 +70,7 @@ class Search extends React.PureComponent {
if (this.props.value.length > 0 || this.props.submitted) {
this.props.onClear();
}
- }
+ };
handleKeyUp = (e) => {
if (e.key === 'Enter') {
@@ -84,7 +84,7 @@ class Search extends React.PureComponent {
} else if (e.key === 'Escape') {
document.querySelector('.ui').parentElement.focus();
}
- }
+ };
handleFocus = () => {
this.setState({ expanded: true });
@@ -96,15 +96,15 @@ class Search extends React.PureComponent {
this.searchForm.scrollIntoView();
}
}
- }
+ };
handleBlur = () => {
this.setState({ expanded: false });
- }
+ };
findTarget = () => {
return this.searchForm;
- }
+ };
render () {
const { intl, value, submitted } = this.props;
diff --git a/app/javascript/mastodon/features/compose/components/upload.js b/app/javascript/mastodon/features/compose/components/upload.js
index af06ce1bf..20f58ee75 100644
--- a/app/javascript/mastodon/features/compose/components/upload.js
+++ b/app/javascript/mastodon/features/compose/components/upload.js
@@ -22,12 +22,12 @@ export default class Upload extends ImmutablePureComponent {
handleUndoClick = e => {
e.stopPropagation();
this.props.onUndo(this.props.media.get('id'));
- }
+ };
handleFocalPointClick = e => {
e.stopPropagation();
this.props.onOpenFocalPoint(this.props.media.get('id'));
- }
+ };
render () {
const { media } = this.props;
diff --git a/app/javascript/mastodon/features/compose/components/upload_button.js b/app/javascript/mastodon/features/compose/components/upload_button.js
index 9cb36167a..964340d82 100644
--- a/app/javascript/mastodon/features/compose/components/upload_button.js
+++ b/app/javascript/mastodon/features/compose/components/upload_button.js
@@ -41,15 +41,15 @@ class UploadButton extends ImmutablePureComponent {
if (e.target.files.length > 0) {
this.props.onSelectFile(e.target.files);
}
- }
+ };
handleClick = () => {
this.fileElement.click();
- }
+ };
setRef = (c) => {
this.fileElement = c;
- }
+ };
render () {
const { intl, resetFileKey, unavailable, disabled, acceptContentTypes } = this.props;
diff --git a/app/javascript/mastodon/features/compose/index.js b/app/javascript/mastodon/features/compose/index.js
index aead7776a..4b30d09ae 100644
--- a/app/javascript/mastodon/features/compose/index.js
+++ b/app/javascript/mastodon/features/compose/index.js
@@ -74,15 +74,15 @@ class Compose extends React.PureComponent {
}));
return false;
- }
+ };
onFocus = () => {
this.props.dispatch(changeComposing(true));
- }
+ };
onBlur = () => {
this.props.dispatch(changeComposing(false));
- }
+ };
render () {
const { multiColumn, showSearch, intl } = this.props;
diff --git a/app/javascript/mastodon/features/direct_timeline/components/conversation.js b/app/javascript/mastodon/features/direct_timeline/components/conversation.js
index 4a770970d..fbdff1bdd 100644
--- a/app/javascript/mastodon/features/direct_timeline/components/conversation.js
+++ b/app/javascript/mastodon/features/direct_timeline/components/conversation.js
@@ -55,7 +55,7 @@ class Conversation extends ImmutablePureComponent {
let emoji = emojis[i];
emoji.src = emoji.getAttribute('data-original');
}
- }
+ };
handleMouseLeave = ({ currentTarget }) => {
if (autoPlayGif) {
@@ -68,7 +68,7 @@ class Conversation extends ImmutablePureComponent {
let emoji = emojis[i];
emoji.src = emoji.getAttribute('data-static');
}
- }
+ };
handleClick = () => {
if (!this.context.router) {
@@ -82,35 +82,35 @@ class Conversation extends ImmutablePureComponent {
}
this.context.router.history.push(`/@${lastStatus.getIn(['account', 'acct'])}/${lastStatus.get('id')}`);
- }
+ };
handleMarkAsRead = () => {
this.props.markRead();
- }
+ };
handleReply = () => {
this.props.reply(this.props.lastStatus, this.context.router.history);
- }
+ };
handleDelete = () => {
this.props.delete();
- }
+ };
handleHotkeyMoveUp = () => {
this.props.onMoveUp(this.props.conversationId);
- }
+ };
handleHotkeyMoveDown = () => {
this.props.onMoveDown(this.props.conversationId);
- }
+ };
handleConversationMute = () => {
this.props.onMute(this.props.lastStatus);
- }
+ };
handleShowMore = () => {
this.props.onToggleHidden(this.props.lastStatus);
- }
+ };
render () {
const { accounts, lastStatus, unread, scrollKey, intl } = this.props;
diff --git a/app/javascript/mastodon/features/direct_timeline/components/conversations_list.js b/app/javascript/mastodon/features/direct_timeline/components/conversations_list.js
index fd1df7256..27e9a593f 100644
--- a/app/javascript/mastodon/features/direct_timeline/components/conversations_list.js
+++ b/app/javascript/mastodon/features/direct_timeline/components/conversations_list.js
@@ -16,17 +16,17 @@ export default class ConversationsList extends ImmutablePureComponent {
onLoadMore: PropTypes.func,
};
- getCurrentIndex = id => this.props.conversations.findIndex(x => x.get('id') === id)
+ getCurrentIndex = id => this.props.conversations.findIndex(x => x.get('id') === id);
handleMoveUp = id => {
const elementIndex = this.getCurrentIndex(id) - 1;
this._selectChild(elementIndex, true);
- }
+ };
handleMoveDown = id => {
const elementIndex = this.getCurrentIndex(id) + 1;
this._selectChild(elementIndex, false);
- }
+ };
_selectChild (index, align_top) {
const container = this.node.node;
@@ -44,7 +44,7 @@ export default class ConversationsList extends ImmutablePureComponent {
setRef = c => {
this.node = c;
- }
+ };
handleLoadOlder = debounce(() => {
const last = this.props.conversations.last();
@@ -52,7 +52,7 @@ export default class ConversationsList extends ImmutablePureComponent {
if (last && last.get('last_status')) {
this.props.onLoadMore(last.get('last_status'));
}
- }, 300, { leading: true })
+ }, 300, { leading: true });
render () {
const { conversations, onLoadMore, ...other } = this.props;
diff --git a/app/javascript/mastodon/features/direct_timeline/index.js b/app/javascript/mastodon/features/direct_timeline/index.js
index 8dcc43e28..a45965bb2 100644
--- a/app/javascript/mastodon/features/direct_timeline/index.js
+++ b/app/javascript/mastodon/features/direct_timeline/index.js
@@ -34,16 +34,16 @@ class DirectTimeline extends React.PureComponent {
} else {
dispatch(addColumn('DIRECT', {}));
}
- }
+ };
handleMove = (dir) => {
const { columnId, dispatch } = this.props;
dispatch(moveColumn(columnId, dir));
- }
+ };
handleHeaderClick = () => {
this.column.scrollTop();
- }
+ };
componentDidMount () {
const { dispatch } = this.props;
@@ -64,11 +64,11 @@ class DirectTimeline extends React.PureComponent {
setRef = c => {
this.column = c;
- }
+ };
handleLoadMore = maxId => {
this.props.dispatch(expandConversations({ maxId }));
- }
+ };
render () {
const { intl, hasUnread, columnId, multiColumn } = this.props;
diff --git a/app/javascript/mastodon/features/directory/components/account_card.js b/app/javascript/mastodon/features/directory/components/account_card.js
index 977f0c32c..15c8ad303 100644
--- a/app/javascript/mastodon/features/directory/components/account_card.js
+++ b/app/javascript/mastodon/features/directory/components/account_card.js
@@ -115,7 +115,7 @@ class AccountCard extends ImmutablePureComponent {
let emoji = emojis[i];
emoji.src = emoji.getAttribute('data-original');
}
- }
+ };
handleMouseLeave = ({ currentTarget }) => {
if (autoPlayGif) {
@@ -128,7 +128,7 @@ class AccountCard extends ImmutablePureComponent {
let emoji = emojis[i];
emoji.src = emoji.getAttribute('data-static');
}
- }
+ };
handleFollow = () => {
this.props.onFollow(this.props.account);
@@ -140,11 +140,11 @@ class AccountCard extends ImmutablePureComponent {
handleMute = () => {
this.props.onMute(this.props.account);
- }
+ };
handleEditProfile = () => {
window.open('/settings/profile', '_blank');
- }
+ };
render() {
const { account, intl } = this.props;
diff --git a/app/javascript/mastodon/features/directory/index.js b/app/javascript/mastodon/features/directory/index.js
index b45faa049..bb5e021cc 100644
--- a/app/javascript/mastodon/features/directory/index.js
+++ b/app/javascript/mastodon/features/directory/index.js
@@ -64,7 +64,7 @@ class Directory extends React.PureComponent {
} else {
dispatch(addColumn('DIRECTORY', this.getParams(this.props, this.state)));
}
- }
+ };
getParams = (props, state) => ({
order: state.order === null ? (props.params.order || 'active') : state.order,
@@ -74,11 +74,11 @@ class Directory extends React.PureComponent {
handleMove = dir => {
const { columnId, dispatch } = this.props;
dispatch(moveColumn(columnId, dir));
- }
+ };
handleHeaderClick = () => {
this.column.scrollTop();
- }
+ };
componentDidMount () {
const { dispatch } = this.props;
@@ -97,7 +97,7 @@ class Directory extends React.PureComponent {
setRef = c => {
this.column = c;
- }
+ };
handleChangeOrder = e => {
const { dispatch, columnId } = this.props;
@@ -107,7 +107,7 @@ class Directory extends React.PureComponent {
} else {
this.setState({ order: e.target.value });
}
- }
+ };
handleChangeLocal = e => {
const { dispatch, columnId } = this.props;
@@ -117,12 +117,12 @@ class Directory extends React.PureComponent {
} else {
this.setState({ local: e.target.value === '1' });
}
- }
+ };
handleLoadMore = () => {
const { dispatch } = this.props;
dispatch(expandDirectory(this.getParams(this.props, this.state)));
- }
+ };
render () {
const { isLoading, accountIds, intl, columnId, multiColumn, domain } = this.props;
diff --git a/app/javascript/mastodon/features/explore/index.js b/app/javascript/mastodon/features/explore/index.js
index 1ae249f45..d91755ff6 100644
--- a/app/javascript/mastodon/features/explore/index.js
+++ b/app/javascript/mastodon/features/explore/index.js
@@ -41,11 +41,11 @@ class Explore extends React.PureComponent {
handleHeaderClick = () => {
this.column.scrollTop();
- }
+ };
setRef = c => {
this.column = c;
- }
+ };
render() {
const { intl, multiColumn, isSearching } = this.props;
diff --git a/app/javascript/mastodon/features/explore/statuses.js b/app/javascript/mastodon/features/explore/statuses.js
index 791f11b9f..b027487d5 100644
--- a/app/javascript/mastodon/features/explore/statuses.js
+++ b/app/javascript/mastodon/features/explore/statuses.js
@@ -33,7 +33,7 @@ class Statuses extends React.PureComponent {
handleLoadMore = debounce(() => {
const { dispatch } = this.props;
dispatch(expandTrendingStatuses());
- }, 300, { leading: true })
+ }, 300, { leading: true });
render () {
const { isLoading, hasMore, statusIds, multiColumn } = this.props;
diff --git a/app/javascript/mastodon/features/favourited_statuses/index.js b/app/javascript/mastodon/features/favourited_statuses/index.js
index 3741f68f6..89093f682 100644
--- a/app/javascript/mastodon/features/favourited_statuses/index.js
+++ b/app/javascript/mastodon/features/favourited_statuses/index.js
@@ -48,24 +48,24 @@ class Favourites extends ImmutablePureComponent {
} else {
dispatch(addColumn('FAVOURITES', {}));
}
- }
+ };
handleMove = (dir) => {
const { columnId, dispatch } = this.props;
dispatch(moveColumn(columnId, dir));
- }
+ };
handleHeaderClick = () => {
this.column.scrollTop();
- }
+ };
setRef = c => {
this.column = c;
- }
+ };
handleLoadMore = debounce(() => {
this.props.dispatch(expandFavouritedStatuses());
- }, 300, { leading: true })
+ }, 300, { leading: true });
render () {
const { intl, statusIds, columnId, multiColumn, hasMore, isLoading } = this.props;
diff --git a/app/javascript/mastodon/features/favourites/index.js b/app/javascript/mastodon/features/favourites/index.js
index 66ec6a31b..7179e6470 100644
--- a/app/javascript/mastodon/features/favourites/index.js
+++ b/app/javascript/mastodon/features/favourites/index.js
@@ -47,7 +47,7 @@ class Favourites extends ImmutablePureComponent {
handleRefresh = () => {
this.props.dispatch(fetchFavourites(this.props.params.statusId));
- }
+ };
render () {
const { intl, accountIds, multiColumn } = this.props;
diff --git a/app/javascript/mastodon/features/filters/select_filter.js b/app/javascript/mastodon/features/filters/select_filter.js
index b68a5de6c..8a21905d7 100644
--- a/app/javascript/mastodon/features/filters/select_filter.js
+++ b/app/javascript/mastodon/features/filters/select_filter.js
@@ -71,7 +71,7 @@ class SelectFilter extends React.PureComponent {
{filter[1]} {warning}
);
- }
+ };
renderCreateNew (name) {
return (
@@ -83,11 +83,11 @@ class SelectFilter extends React.PureComponent {
handleSearchChange = ({ target }) => {
this.setState({ searchValue: target.value });
- }
+ };
setListRef = c => {
this.listNode = c;
- }
+ };
handleKeyDown = e => {
const index = Array.from(this.listNode.childNodes).findIndex(node => node === e.currentTarget);
@@ -125,7 +125,7 @@ class SelectFilter extends React.PureComponent {
e.preventDefault();
e.stopPropagation();
}
- }
+ };
handleSearchKeyDown = e => {
let element = null;
@@ -143,11 +143,11 @@ class SelectFilter extends React.PureComponent {
break;
}
- }
+ };
handleClear = () => {
this.setState({ searchValue: '' });
- }
+ };
handleItemClick = e => {
const value = e.currentTarget.getAttribute('data-index');
@@ -155,7 +155,7 @@ class SelectFilter extends React.PureComponent {
e.preventDefault();
this.props.onSelectFilter(value);
- }
+ };
handleNewFilterClick = e => {
e.preventDefault();
diff --git a/app/javascript/mastodon/features/follow_recommendations/components/account.js b/app/javascript/mastodon/features/follow_recommendations/components/account.js
index 14f4e7e1b..daaa2f99e 100644
--- a/app/javascript/mastodon/features/follow_recommendations/components/account.js
+++ b/app/javascript/mastodon/features/follow_recommendations/components/account.js
@@ -50,7 +50,7 @@ class Account extends ImmutablePureComponent {
} else {
dispatch(followAccount(account.get('id')));
}
- }
+ };
render () {
const { account, intl } = this.props;
diff --git a/app/javascript/mastodon/features/follow_recommendations/index.js b/app/javascript/mastodon/features/follow_recommendations/index.js
index 5f7baa64c..436cc582b 100644
--- a/app/javascript/mastodon/features/follow_recommendations/index.js
+++ b/app/javascript/mastodon/features/follow_recommendations/index.js
@@ -69,7 +69,7 @@ class FollowRecommendations extends ImmutablePureComponent {
}));
router.history.push('/home');
- }
+ };
render () {
const { suggestions, isLoading } = this.props;
diff --git a/app/javascript/mastodon/features/getting_started/components/announcements.js b/app/javascript/mastodon/features/getting_started/components/announcements.js
index 24db8cede..d4afbabe3 100644
--- a/app/javascript/mastodon/features/getting_started/components/announcements.js
+++ b/app/javascript/mastodon/features/getting_started/components/announcements.js
@@ -35,7 +35,7 @@ class Content extends ImmutablePureComponent {
setRef = c => {
this.node = c;
- }
+ };
componentDidMount () {
this._updateLinks();
@@ -89,7 +89,7 @@ class Content extends ImmutablePureComponent {
e.preventDefault();
this.context.router.history.push(`/@${mention.get('acct')}`);
}
- }
+ };
onHashtagClick = (hashtag, e) => {
hashtag = hashtag.replace(/^#/, '');
@@ -98,14 +98,14 @@ class Content extends ImmutablePureComponent {
e.preventDefault();
this.context.router.history.push(`/tags/${hashtag}`);
}
- }
+ };
onStatusClick = (status, e) => {
if (this.context.router && e.button === 0 && !(e.ctrlKey || e.metaKey)) {
e.preventDefault();
this.context.router.history.push(`/@${status.getIn(['account', 'acct'])}/${status.get('id')}`);
}
- }
+ };
handleMouseEnter = ({ currentTarget }) => {
if (autoPlayGif) {
@@ -118,7 +118,7 @@ class Content extends ImmutablePureComponent {
let emoji = emojis[i];
emoji.src = emoji.getAttribute('data-original');
}
- }
+ };
handleMouseLeave = ({ currentTarget }) => {
if (autoPlayGif) {
@@ -131,7 +131,7 @@ class Content extends ImmutablePureComponent {
let emoji = emojis[i];
emoji.src = emoji.getAttribute('data-static');
}
- }
+ };
render () {
const { announcement } = this.props;
@@ -216,11 +216,11 @@ class Reaction extends ImmutablePureComponent {
} else {
addReaction(announcementId, reaction.get('name'));
}
- }
+ };
- handleMouseEnter = () => this.setState({ hovered: true })
+ handleMouseEnter = () => this.setState({ hovered: true });
- handleMouseLeave = () => this.setState({ hovered: false })
+ handleMouseLeave = () => this.setState({ hovered: false });
render () {
const { reaction } = this.props;
@@ -254,7 +254,7 @@ class ReactionsBar extends ImmutablePureComponent {
handleEmojiPick = data => {
const { addReaction, announcementId } = this.props;
addReaction(announcementId, data.native.replace(/:/g, ''));
- }
+ };
willEnter () {
return { scale: reduceMotion ? 1 : 0 };
@@ -397,15 +397,15 @@ class Announcements extends ImmutablePureComponent {
handleChangeIndex = index => {
this.setState({ index: index % this.props.announcements.size });
- }
+ };
handleNextClick = () => {
this.setState({ index: (this.state.index + 1) % this.props.announcements.size });
- }
+ };
handlePrevClick = () => {
this.setState({ index: (this.props.announcements.size + this.state.index - 1) % this.props.announcements.size });
- }
+ };
render () {
const { announcements, intl } = this.props;
diff --git a/app/javascript/mastodon/features/hashtag_timeline/index.js b/app/javascript/mastodon/features/hashtag_timeline/index.js
index 733f54ff3..e5262d70d 100644
--- a/app/javascript/mastodon/features/hashtag_timeline/index.js
+++ b/app/javascript/mastodon/features/hashtag_timeline/index.js
@@ -54,7 +54,7 @@ class HashtagTimeline extends React.PureComponent {
} else {
dispatch(addColumn('HASHTAG', { id: this.props.params.id }));
}
- }
+ };
title = () => {
const { id } = this.props.params;
@@ -73,7 +73,7 @@ class HashtagTimeline extends React.PureComponent {
}
return title;
- }
+ };
additionalFor = (mode) => {
const { tags } = this.props.params;
@@ -83,16 +83,16 @@ class HashtagTimeline extends React.PureComponent {
} else {
return '';
}
- }
+ };
handleMove = (dir) => {
const { columnId, dispatch } = this.props;
dispatch(moveColumn(columnId, dir));
- }
+ };
handleHeaderClick = () => {
this.column.scrollTop();
- }
+ };
_subscribe (dispatch, id, tags = {}, local) {
const { signedIn } = this.context.identity;
@@ -157,14 +157,14 @@ class HashtagTimeline extends React.PureComponent {
setRef = c => {
this.column = c;
- }
+ };
handleLoadMore = maxId => {
const { dispatch, params } = this.props;
const { id, tags, local } = params;
dispatch(expandHashtagTimeline(id, { maxId, tags, local }));
- }
+ };
handleFollow = () => {
const { dispatch, params, tag } = this.props;
@@ -180,7 +180,7 @@ class HashtagTimeline extends React.PureComponent {
} else {
dispatch(followHashtag(id));
}
- }
+ };
render () {
const { hasUnread, columnId, multiColumn, tag, intl } = this.props;
diff --git a/app/javascript/mastodon/features/home_timeline/index.js b/app/javascript/mastodon/features/home_timeline/index.js
index ae11ccbe4..001de15d1 100644
--- a/app/javascript/mastodon/features/home_timeline/index.js
+++ b/app/javascript/mastodon/features/home_timeline/index.js
@@ -58,24 +58,24 @@ class HomeTimeline extends React.PureComponent {
} else {
dispatch(addColumn('HOME', {}));
}
- }
+ };
handleMove = (dir) => {
const { columnId, dispatch } = this.props;
dispatch(moveColumn(columnId, dir));
- }
+ };
handleHeaderClick = () => {
this.column.scrollTop();
- }
+ };
setRef = c => {
this.column = c;
- }
+ };
handleLoadMore = maxId => {
this.props.dispatch(expandHomeTimeline({ maxId }));
- }
+ };
componentDidMount () {
setTimeout(() => this.props.dispatch(fetchAnnouncements()), 700);
@@ -114,7 +114,7 @@ class HomeTimeline extends React.PureComponent {
handleToggleAnnouncementsClick = (e) => {
e.stopPropagation();
this.props.dispatch(toggleShowAnnouncements());
- }
+ };
render () {
const { intl, hasUnread, columnId, multiColumn, hasAnnouncements, unreadAnnouncements, showAnnouncements } = this.props;
diff --git a/app/javascript/mastodon/features/interaction_modal/index.js b/app/javascript/mastodon/features/interaction_modal/index.js
index d4535378f..c1d346fed 100644
--- a/app/javascript/mastodon/features/interaction_modal/index.js
+++ b/app/javascript/mastodon/features/interaction_modal/index.js
@@ -30,14 +30,14 @@ class Copypaste extends React.PureComponent {
setRef = c => {
this.input = c;
- }
+ };
handleInputClick = () => {
this.setState({ copied: false });
this.input.focus();
this.input.select();
this.input.setSelectionRange(0, this.input.value.length);
- }
+ };
handleButtonClick = () => {
const { value } = this.props;
@@ -45,7 +45,7 @@ class Copypaste extends React.PureComponent {
this.input.blur();
this.setState({ copied: true });
this.timeout = setTimeout(() => this.setState({ copied: false }), 700);
- }
+ };
componentWillUnmount () {
if (this.timeout) clearTimeout(this.timeout);
@@ -86,7 +86,7 @@ class InteractionModal extends React.PureComponent {
handleSignupClick = () => {
this.props.onSignupClick();
- }
+ };
render () {
const { url, type, displayNameHtml } = this.props;
diff --git a/app/javascript/mastodon/features/list_editor/components/edit_list_form.js b/app/javascript/mastodon/features/list_editor/components/edit_list_form.js
index 3ccab12a8..4d7e49ec0 100644
--- a/app/javascript/mastodon/features/list_editor/components/edit_list_form.js
+++ b/app/javascript/mastodon/features/list_editor/components/edit_list_form.js
@@ -33,16 +33,16 @@ class ListForm extends React.PureComponent {
handleChange = e => {
this.props.onChange(e.target.value);
- }
+ };
handleSubmit = e => {
e.preventDefault();
this.props.onSubmit();
- }
+ };
handleClick = () => {
this.props.onSubmit();
- }
+ };
render () {
const { value, disabled, intl } = this.props;
diff --git a/app/javascript/mastodon/features/list_editor/components/search.js b/app/javascript/mastodon/features/list_editor/components/search.js
index e3f069bb8..3ee26c8eb 100644
--- a/app/javascript/mastodon/features/list_editor/components/search.js
+++ b/app/javascript/mastodon/features/list_editor/components/search.js
@@ -34,17 +34,17 @@ class Search extends React.PureComponent {
handleChange = e => {
this.props.onChange(e.target.value);
- }
+ };
handleKeyUp = e => {
if (e.keyCode === 13) {
this.props.onSubmit(this.props.value);
}
- }
+ };
handleClear = () => {
this.props.onClear();
- }
+ };
render () {
const { value, intl } = this.props;
diff --git a/app/javascript/mastodon/features/list_timeline/index.js b/app/javascript/mastodon/features/list_timeline/index.js
index c2e72e2e9..25dbe311a 100644
--- a/app/javascript/mastodon/features/list_timeline/index.js
+++ b/app/javascript/mastodon/features/list_timeline/index.js
@@ -58,16 +58,16 @@ class ListTimeline extends React.PureComponent {
dispatch(addColumn('LIST', { id: this.props.params.id }));
this.context.router.history.push('/');
}
- }
+ };
handleMove = (dir) => {
const { columnId, dispatch } = this.props;
dispatch(moveColumn(columnId, dir));
- }
+ };
handleHeaderClick = () => {
this.column.scrollTop();
- }
+ };
componentDidMount () {
const { dispatch } = this.props;
@@ -105,16 +105,16 @@ class ListTimeline extends React.PureComponent {
setRef = c => {
this.column = c;
- }
+ };
handleLoadMore = maxId => {
const { id } = this.props.params;
this.props.dispatch(expandListTimeline(id, { maxId }));
- }
+ };
handleEditClick = () => {
this.props.dispatch(openModal('LIST_EDITOR', { listId: this.props.params.id }));
- }
+ };
handleDeleteClick = () => {
const { dispatch, columnId, intl } = this.props;
@@ -133,13 +133,13 @@ class ListTimeline extends React.PureComponent {
}
},
}));
- }
+ };
handleRepliesPolicyChange = ({ target }) => {
const { dispatch } = this.props;
const { id } = this.props.params;
dispatch(updateList(id, undefined, false, target.value));
- }
+ };
render () {
const { hasUnread, columnId, multiColumn, list, intl } = this.props;
diff --git a/app/javascript/mastodon/features/lists/components/new_list_form.js b/app/javascript/mastodon/features/lists/components/new_list_form.js
index f790ccbe6..4e00e5200 100644
--- a/app/javascript/mastodon/features/lists/components/new_list_form.js
+++ b/app/javascript/mastodon/features/lists/components/new_list_form.js
@@ -34,16 +34,16 @@ class NewListForm extends React.PureComponent {
handleChange = e => {
this.props.onChange(e.target.value);
- }
+ };
handleSubmit = e => {
e.preventDefault();
this.props.onSubmit();
- }
+ };
handleClick = () => {
this.props.onSubmit();
- }
+ };
render () {
const { value, disabled, intl } = this.props;
diff --git a/app/javascript/mastodon/features/notifications/components/column_settings.js b/app/javascript/mastodon/features/notifications/components/column_settings.js
index a38f8d3c2..9251847ba 100644
--- a/app/javascript/mastodon/features/notifications/components/column_settings.js
+++ b/app/javascript/mastodon/features/notifications/components/column_settings.js
@@ -26,7 +26,7 @@ export default class ColumnSettings extends React.PureComponent {
onPushChange = (path, checked) => {
this.props.onChange(['push', ...path], checked);
- }
+ };
render () {
const { settings, pushSettings, onChange, onClear, alertsEnabled, browserSupport, browserPermission, onRequestNotificationPermission } = this.props;
diff --git a/app/javascript/mastodon/features/notifications/components/notification.js b/app/javascript/mastodon/features/notifications/components/notification.js
index 746d085c6..9e2517f08 100644
--- a/app/javascript/mastodon/features/notifications/components/notification.js
+++ b/app/javascript/mastodon/features/notifications/components/notification.js
@@ -61,12 +61,12 @@ class Notification extends ImmutablePureComponent {
handleMoveUp = () => {
const { notification, onMoveUp } = this.props;
onMoveUp(notification.get('id'));
- }
+ };
handleMoveDown = () => {
const { notification, onMoveDown } = this.props;
onMoveDown(notification.get('id'));
- }
+ };
handleOpen = () => {
const { notification } = this.props;
@@ -76,34 +76,34 @@ class Notification extends ImmutablePureComponent {
} else {
this.handleOpenProfile();
}
- }
+ };
handleOpenProfile = () => {
const { notification } = this.props;
this.context.router.history.push(`/@${notification.getIn(['account', 'acct'])}`);
- }
+ };
handleMention = e => {
e.preventDefault();
const { notification, onMention } = this.props;
onMention(notification.get('account'), this.context.router.history);
- }
+ };
handleHotkeyFavourite = () => {
const { status } = this.props;
if (status) this.props.onFavourite(status);
- }
+ };
handleHotkeyBoost = e => {
const { status } = this.props;
if (status) this.props.onReblog(status, e);
- }
+ };
handleHotkeyToggleHidden = () => {
const { status } = this.props;
if (status) this.props.onToggleHidden(status);
- }
+ };
getHandlers () {
return {
diff --git a/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.js b/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.js
index df9b7fb1b..3a7556c1d 100644
--- a/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.js
+++ b/app/javascript/mastodon/features/notifications/components/notifications_permission_banner.js
@@ -23,11 +23,11 @@ class NotificationsPermissionBanner extends React.PureComponent {
handleClick = () => {
this.props.dispatch(requestBrowserPermission());
- }
+ };
handleClose = () => {
this.props.dispatch(changeSetting(['notifications', 'dismissPermissionBanner'], true));
- }
+ };
render () {
const { intl } = this.props;
diff --git a/app/javascript/mastodon/features/notifications/components/setting_toggle.js b/app/javascript/mastodon/features/notifications/components/setting_toggle.js
index c4c8bffbe..c979e4383 100644
--- a/app/javascript/mastodon/features/notifications/components/setting_toggle.js
+++ b/app/javascript/mastodon/features/notifications/components/setting_toggle.js
@@ -13,11 +13,11 @@ export default class SettingToggle extends React.PureComponent {
onChange: PropTypes.func.isRequired,
defaultValue: PropTypes.bool,
disabled: PropTypes.bool,
- }
+ };
onChange = ({ target }) => {
this.props.onChange(this.props.settingPath, target.checked);
- }
+ };
render () {
const { prefix, settings, settingPath, label, defaultValue, disabled } = this.props;
diff --git a/app/javascript/mastodon/features/notifications/index.js b/app/javascript/mastodon/features/notifications/index.js
index 826a7e9ad..fee016a02 100644
--- a/app/javascript/mastodon/features/notifications/index.js
+++ b/app/javascript/mastodon/features/notifications/index.js
@@ -136,30 +136,30 @@ class Notifications extends React.PureComponent {
} else {
dispatch(addColumn('NOTIFICATIONS', {}));
}
- }
+ };
handleMove = (dir) => {
const { columnId, dispatch } = this.props;
dispatch(moveColumn(columnId, dir));
- }
+ };
handleHeaderClick = () => {
this.column.scrollTop();
- }
+ };
setColumnRef = c => {
this.column = c;
- }
+ };
handleMoveUp = id => {
const elementIndex = this.props.notifications.findIndex(item => item !== null && item.get('id') === id) - 1;
this._selectChild(elementIndex, true);
- }
+ };
handleMoveDown = id => {
const elementIndex = this.props.notifications.findIndex(item => item !== null && item.get('id') === id) + 1;
this._selectChild(elementIndex, false);
- }
+ };
_selectChild (index, align_top) {
const container = this.column.node;
diff --git a/app/javascript/mastodon/features/picture_in_picture/components/footer.js b/app/javascript/mastodon/features/picture_in_picture/components/footer.js
index 0dff834c3..3f59b891b 100644
--- a/app/javascript/mastodon/features/picture_in_picture/components/footer.js
+++ b/app/javascript/mastodon/features/picture_in_picture/components/footer.js
@@ -112,7 +112,7 @@ class Footer extends ImmutablePureComponent {
_performReblog = (status, privacy) => {
const { dispatch } = this.props;
dispatch(reblog(status, privacy));
- }
+ };
handleReblogClick = e => {
const { dispatch, status } = this.props;
@@ -149,7 +149,7 @@ class Footer extends ImmutablePureComponent {
}
router.history.push(`/@${status.getIn(['account', 'acct'])}/${status.get('id')}`);
- }
+ };
render () {
const { status, intl, withOpenButton } = this.props;
diff --git a/app/javascript/mastodon/features/picture_in_picture/index.js b/app/javascript/mastodon/features/picture_in_picture/index.js
index 1e59fbcd3..01a7d43f2 100644
--- a/app/javascript/mastodon/features/picture_in_picture/index.js
+++ b/app/javascript/mastodon/features/picture_in_picture/index.js
@@ -32,7 +32,7 @@ class PictureInPicture extends React.Component {
handleClose = () => {
const { dispatch } = this.props;
dispatch(removePictureInPicture());
- }
+ };
render () {
const { type, src, currentTime, accountId, statusId } = this.props;
diff --git a/app/javascript/mastodon/features/pinned_statuses/index.js b/app/javascript/mastodon/features/pinned_statuses/index.js
index c6790ea06..504fda415 100644
--- a/app/javascript/mastodon/features/pinned_statuses/index.js
+++ b/app/javascript/mastodon/features/pinned_statuses/index.js
@@ -37,11 +37,11 @@ class PinnedStatuses extends ImmutablePureComponent {
handleHeaderClick = () => {
this.column.scrollTop();
- }
+ };
setRef = c => {
this.column = c;
- }
+ };
render () {
const { intl, statusIds, hasMore, multiColumn } = this.props;
diff --git a/app/javascript/mastodon/features/public_timeline/index.js b/app/javascript/mastodon/features/public_timeline/index.js
index a41be07e1..aaef45c86 100644
--- a/app/javascript/mastodon/features/public_timeline/index.js
+++ b/app/javascript/mastodon/features/public_timeline/index.js
@@ -62,16 +62,16 @@ class PublicTimeline extends React.PureComponent {
} else {
dispatch(addColumn(onlyRemote ? 'REMOTE' : 'PUBLIC', { other: { onlyMedia, onlyRemote } }));
}
- }
+ };
handleMove = (dir) => {
const { columnId, dispatch } = this.props;
dispatch(moveColumn(columnId, dir));
- }
+ };
handleHeaderClick = () => {
this.column.scrollTop();
- }
+ };
componentDidMount () {
const { dispatch, onlyMedia, onlyRemote } = this.props;
@@ -111,13 +111,13 @@ class PublicTimeline extends React.PureComponent {
setRef = c => {
this.column = c;
- }
+ };
handleLoadMore = maxId => {
const { dispatch, onlyMedia, onlyRemote } = this.props;
dispatch(expandPublicTimeline({ maxId, onlyMedia, onlyRemote }));
- }
+ };
render () {
const { intl, columnId, hasUnread, multiColumn, onlyMedia, onlyRemote } = this.props;
diff --git a/app/javascript/mastodon/features/reblogs/index.js b/app/javascript/mastodon/features/reblogs/index.js
index 36ca11d1a..31e5dc1d4 100644
--- a/app/javascript/mastodon/features/reblogs/index.js
+++ b/app/javascript/mastodon/features/reblogs/index.js
@@ -47,7 +47,7 @@ class Reblogs extends ImmutablePureComponent {
handleRefresh = () => {
this.props.dispatch(fetchReblogs(this.props.params.statusId));
- }
+ };
render () {
const { intl, accountIds, multiColumn } = this.props;
diff --git a/app/javascript/mastodon/features/report/components/option.js b/app/javascript/mastodon/features/report/components/option.js
index 744d85268..42c04b018 100644
--- a/app/javascript/mastodon/features/report/components/option.js
+++ b/app/javascript/mastodon/features/report/components/option.js
@@ -24,12 +24,12 @@ export default class Option extends React.PureComponent {
e.preventDefault();
onToggle(value, !checked);
}
- }
+ };
handleChange = e => {
const { value, onToggle } = this.props;
onToggle(value, e.target.checked);
- }
+ };
render () {
const { name, value, checked, label, labelComponent, description, multiple } = this.props;
diff --git a/app/javascript/mastodon/features/status/components/action_bar.js b/app/javascript/mastodon/features/status/components/action_bar.js
index 46ee9f6c1..0d4767331 100644
--- a/app/javascript/mastodon/features/status/components/action_bar.js
+++ b/app/javascript/mastodon/features/status/components/action_bar.js
@@ -82,39 +82,39 @@ class ActionBar extends React.PureComponent {
handleReplyClick = () => {
this.props.onReply(this.props.status);
- }
+ };
handleReblogClick = (e) => {
this.props.onReblog(this.props.status, e);
- }
+ };
handleFavouriteClick = () => {
this.props.onFavourite(this.props.status);
- }
+ };
handleBookmarkClick = (e) => {
this.props.onBookmark(this.props.status, e);
- }
+ };
handleDeleteClick = () => {
this.props.onDelete(this.props.status, this.context.router.history);
- }
+ };
handleRedraftClick = () => {
this.props.onDelete(this.props.status, this.context.router.history, true);
- }
+ };
handleEditClick = () => {
this.props.onEdit(this.props.status, this.context.router.history);
- }
+ };
handleDirectClick = () => {
this.props.onDirect(this.props.status.get('account'), this.context.router.history);
- }
+ };
handleMentionClick = () => {
this.props.onMention(this.props.status.get('account'), this.context.router.history);
- }
+ };
handleMuteClick = () => {
const { status, relationship, onMute, onUnmute } = this.props;
@@ -125,7 +125,7 @@ class ActionBar extends React.PureComponent {
} else {
onMute(account);
}
- }
+ };
handleBlockClick = () => {
const { status, relationship, onBlock, onUnblock } = this.props;
@@ -136,49 +136,49 @@ class ActionBar extends React.PureComponent {
} else {
onBlock(status);
}
- }
+ };
handleBlockDomain = () => {
const { status, onBlockDomain } = this.props;
const account = status.get('account');
onBlockDomain(account.get('acct').split('@')[1]);
- }
+ };
handleUnblockDomain = () => {
const { status, onUnblockDomain } = this.props;
const account = status.get('account');
onUnblockDomain(account.get('acct').split('@')[1]);
- }
+ };
handleConversationMuteClick = () => {
this.props.onMuteConversation(this.props.status);
- }
+ };
handleReport = () => {
this.props.onReport(this.props.status);
- }
+ };
handlePinClick = () => {
this.props.onPin(this.props.status);
- }
+ };
handleShare = () => {
navigator.share({
text: this.props.status.get('search_index'),
url: this.props.status.get('url'),
});
- }
+ };
handleEmbed = () => {
this.props.onEmbed(this.props.status);
- }
+ };
handleCopy = () => {
const url = this.props.status.get('url');
navigator.clipboard.writeText(url);
- }
+ };
render () {
const { status, relationship, intl } = this.props;
diff --git a/app/javascript/mastodon/features/status/components/card.js b/app/javascript/mastodon/features/status/components/card.js
index 82537dd5d..34fac1010 100644
--- a/app/javascript/mastodon/features/status/components/card.js
+++ b/app/javascript/mastodon/features/status/components/card.js
@@ -146,7 +146,7 @@ export default class Card extends React.PureComponent {
} else {
this.setState({ embedded: true });
}
- }
+ };
setRef = c => {
this.node = c;
@@ -154,17 +154,17 @@ export default class Card extends React.PureComponent {
if (this.node) {
this._setDimensions();
}
- }
+ };
handleImageLoad = () => {
this.setState({ previewLoaded: true });
- }
+ };
handleReveal = e => {
e.preventDefault();
e.stopPropagation();
this.setState({ revealed: true });
- }
+ };
renderVideo () {
const { card } = this.props;
diff --git a/app/javascript/mastodon/features/status/components/detailed_status.js b/app/javascript/mastodon/features/status/components/detailed_status.js
index c62910e0e..116d9f6b2 100644
--- a/app/javascript/mastodon/features/status/components/detailed_status.js
+++ b/app/javascript/mastodon/features/status/components/detailed_status.js
@@ -61,15 +61,15 @@ class DetailedStatus extends ImmutablePureComponent {
}
e.stopPropagation();
- }
+ };
handleOpenVideo = (options) => {
this.props.onOpenVideo(this.props.status.getIn(['media_attachments', 0]), options);
- }
+ };
handleExpandedToggle = () => {
this.props.onToggleHidden(this.props.status);
- }
+ };
_measureHeight (heightJustChanged) {
if (this.props.measureHeight && this.node) {
@@ -84,7 +84,7 @@ class DetailedStatus extends ImmutablePureComponent {
setRef = c => {
this.node = c;
this._measureHeight();
- }
+ };
componentDidUpdate (prevProps, prevState) {
this._measureHeight(prevState.height !== this.state.height);
@@ -102,12 +102,12 @@ class DetailedStatus extends ImmutablePureComponent {
}
window.open(href, 'mastodon-intent', 'width=445,height=600,resizable=no,menubar=no,status=no,scrollbars=yes');
- }
+ };
handleTranslate = () => {
const { onTranslate, status } = this.props;
onTranslate(status);
- }
+ };
render () {
const status = (this.props.status && this.props.status.get('reblog')) ? this.props.status.get('reblog') : this.props.status;
diff --git a/app/javascript/mastodon/features/status/index.js b/app/javascript/mastodon/features/status/index.js
index 8a63cced2..38bbc6895 100644
--- a/app/javascript/mastodon/features/status/index.js
+++ b/app/javascript/mastodon/features/status/index.js
@@ -233,7 +233,7 @@ class Status extends ImmutablePureComponent {
handleToggleMediaVisibility = () => {
this.setState({ showMedia: !this.state.showMedia });
- }
+ };
handleFavouriteClick = (status) => {
const { dispatch } = this.props;
@@ -252,7 +252,7 @@ class Status extends ImmutablePureComponent {
url: status.get('url'),
}));
}
- }
+ };
handlePin = (status) => {
if (status.get('pinned')) {
@@ -260,7 +260,7 @@ class Status extends ImmutablePureComponent {
} else {
this.props.dispatch(pin(status));
}
- }
+ };
handleReplyClick = (status) => {
const { askReplyConfirmation, dispatch, intl } = this.props;
@@ -283,11 +283,11 @@ class Status extends ImmutablePureComponent {
url: status.get('url'),
}));
}
- }
+ };
handleModalReblog = (status, privacy) => {
this.props.dispatch(reblog(status, privacy));
- }
+ };
handleReblogClick = (status, e) => {
const { dispatch } = this.props;
@@ -310,7 +310,7 @@ class Status extends ImmutablePureComponent {
url: status.get('url'),
}));
}
- }
+ };
handleBookmarkClick = (status) => {
if (status.get('bookmarked')) {
@@ -318,7 +318,7 @@ class Status extends ImmutablePureComponent {
} else {
this.props.dispatch(bookmark(status));
}
- }
+ };
handleDeleteClick = (status, history, withRedraft = false) => {
const { dispatch, intl } = this.props;
@@ -332,27 +332,27 @@ class Status extends ImmutablePureComponent {
onConfirm: () => dispatch(deleteStatus(status.get('id'), history, withRedraft)),
}));
}
- }
+ };
handleEditClick = (status, history) => {
this.props.dispatch(editStatus(status.get('id'), history));
- }
+ };
handleDirectClick = (account, router) => {
this.props.dispatch(directCompose(account, router));
- }
+ };
handleMentionClick = (account, router) => {
this.props.dispatch(mentionCompose(account, router));
- }
+ };
handleOpenMedia = (media, index) => {
this.props.dispatch(openModal('MEDIA', { statusId: this.props.status.get('id'), media, index }));
- }
+ };
handleOpenVideo = (media, options) => {
this.props.dispatch(openModal('VIDEO', { statusId: this.props.status.get('id'), media, options }));
- }
+ };
handleHotkeyOpenMedia = e => {
const { status } = this.props;
@@ -366,11 +366,11 @@ class Status extends ImmutablePureComponent {
this.handleOpenMedia(status.get('media_attachments'), 0);
}
}
- }
+ };
handleMuteClick = (account) => {
this.props.dispatch(initMuteModal(account));
- }
+ };
handleConversationMuteClick = (status) => {
if (status.get('muted')) {
@@ -378,7 +378,7 @@ class Status extends ImmutablePureComponent {
} else {
this.props.dispatch(muteStatus(status.get('id')));
}
- }
+ };
handleToggleHidden = (status) => {
if (status.get('hidden')) {
@@ -386,7 +386,7 @@ class Status extends ImmutablePureComponent {
} else {
this.props.dispatch(hideStatus(status.get('id')));
}
- }
+ };
handleToggleAll = () => {
const { status, ancestorsIds, descendantsIds } = this.props;
@@ -397,7 +397,7 @@ class Status extends ImmutablePureComponent {
} else {
this.props.dispatch(hideStatus(statusIds));
}
- }
+ };
handleTranslate = status => {
const { dispatch } = this.props;
@@ -407,29 +407,29 @@ class Status extends ImmutablePureComponent {
} else {
dispatch(translateStatus(status.get('id')));
}
- }
+ };
handleBlockClick = (status) => {
const { dispatch } = this.props;
const account = status.get('account');
dispatch(initBlockModal(account));
- }
+ };
handleReport = (status) => {
this.props.dispatch(initReport(status.get('account'), status));
- }
+ };
handleEmbed = (status) => {
this.props.dispatch(openModal('EMBED', { url: status.get('url') }));
- }
+ };
handleUnmuteClick = account => {
this.props.dispatch(unmuteAccount(account.get('id')));
- }
+ };
handleUnblockClick = account => {
this.props.dispatch(unblockAccount(account.get('id')));
- }
+ };
handleBlockDomainClick = domain => {
this.props.dispatch(openModal('CONFIRM', {
@@ -437,50 +437,50 @@ class Status extends ImmutablePureComponent {
confirm: this.props.intl.formatMessage(messages.blockDomainConfirm),
onConfirm: () => this.props.dispatch(blockDomain(domain)),
}));
- }
+ };
handleUnblockDomainClick = domain => {
this.props.dispatch(unblockDomain(domain));
- }
+ };
handleHotkeyMoveUp = () => {
this.handleMoveUp(this.props.status.get('id'));
- }
+ };
handleHotkeyMoveDown = () => {
this.handleMoveDown(this.props.status.get('id'));
- }
+ };
handleHotkeyReply = e => {
e.preventDefault();
this.handleReplyClick(this.props.status);
- }
+ };
handleHotkeyFavourite = () => {
this.handleFavouriteClick(this.props.status);
- }
+ };
handleHotkeyBoost = () => {
this.handleReblogClick(this.props.status);
- }
+ };
handleHotkeyMention = e => {
e.preventDefault();
this.handleMentionClick(this.props.status.get('account'));
- }
+ };
handleHotkeyOpenProfile = () => {
this.context.router.history.push(`/@${this.props.status.getIn(['account', 'acct'])}`);
- }
+ };
handleHotkeyToggleHidden = () => {
this.handleToggleHidden(this.props.status);
- }
+ };
handleHotkeyToggleSensitive = () => {
this.handleToggleMediaVisibility();
- }
+ };
handleMoveUp = id => {
const { status, ancestorsIds, descendantsIds } = this.props;
@@ -497,7 +497,7 @@ class Status extends ImmutablePureComponent {
this._selectChild(index - 1, true);
}
}
- }
+ };
handleMoveDown = id => {
const { status, ancestorsIds, descendantsIds } = this.props;
@@ -514,7 +514,7 @@ class Status extends ImmutablePureComponent {
this._selectChild(index + 1, false);
}
}
- }
+ };
_selectChild (index, align_top) {
const container = this.node;
@@ -544,7 +544,7 @@ class Status extends ImmutablePureComponent {
setRef = c => {
this.node = c;
- }
+ };
componentDidUpdate () {
if (this._scrolledIntoView) {
@@ -569,7 +569,7 @@ class Status extends ImmutablePureComponent {
onFullScreenChange = () => {
this.setState({ fullscreen: isFullscreen() });
- }
+ };
render () {
let ancestors, descendants;
diff --git a/app/javascript/mastodon/features/subscribed_languages_modal/index.js b/app/javascript/mastodon/features/subscribed_languages_modal/index.js
index a519ceabc..f1360613e 100644
--- a/app/javascript/mastodon/features/subscribed_languages_modal/index.js
+++ b/app/javascript/mastodon/features/subscribed_languages_modal/index.js
@@ -72,7 +72,7 @@ class SubscribedLanguagesModal extends ImmutablePureComponent {
handleSubmit = () => {
this.props.onSubmit(this.state.selectedLanguages.toArray());
this.props.onClose();
- }
+ };
renderItem (value) {
const language = this.props.languages.find(language => language[0] === value);
diff --git a/app/javascript/mastodon/features/ui/components/actions_modal.js b/app/javascript/mastodon/features/ui/components/actions_modal.js
index 67be69d43..fd59c1e20 100644
--- a/app/javascript/mastodon/features/ui/components/actions_modal.js
+++ b/app/javascript/mastodon/features/ui/components/actions_modal.js
@@ -31,7 +31,7 @@ export default class ActionsModal extends ImmutablePureComponent {
);
- }
+ };
render () {
return (
diff --git a/app/javascript/mastodon/features/ui/components/block_modal.js b/app/javascript/mastodon/features/ui/components/block_modal.js
index a07baeaa6..6c9d2043c 100644
--- a/app/javascript/mastodon/features/ui/components/block_modal.js
+++ b/app/javascript/mastodon/features/ui/components/block_modal.js
@@ -55,20 +55,20 @@ class BlockModal extends React.PureComponent {
handleClick = () => {
this.props.onClose();
this.props.onConfirm(this.props.account);
- }
+ };
handleSecondary = () => {
this.props.onClose();
this.props.onBlockAndReport(this.props.account);
- }
+ };
handleCancel = () => {
this.props.onClose();
- }
+ };
setRef = (c) => {
this.button = c;
- }
+ };
render () {
const { account } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/boost_modal.js b/app/javascript/mastodon/features/ui/components/boost_modal.js
index 077ce7b35..087eadba2 100644
--- a/app/javascript/mastodon/features/ui/components/boost_modal.js
+++ b/app/javascript/mastodon/features/ui/components/boost_modal.js
@@ -62,7 +62,7 @@ class BoostModal extends ImmutablePureComponent {
handleReblog = () => {
this.props.onReblog(this.props.status, this.props.privacy);
this.props.onClose();
- }
+ };
handleAccountClick = (e) => {
if (e.button === 0 && !(e.ctrlKey || e.metaKey)) {
@@ -70,7 +70,7 @@ class BoostModal extends ImmutablePureComponent {
this.props.onClose();
this.context.router.history.push(`/@${this.props.status.getIn(['account', 'acct'])}`);
}
- }
+ };
_findContainer = () => {
return document.getElementsByClassName('modal-root__container')[0];
@@ -78,7 +78,7 @@ class BoostModal extends ImmutablePureComponent {
setRef = (c) => {
this.button = c;
- }
+ };
render () {
const { status, privacy, intl } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/bundle.js b/app/javascript/mastodon/features/ui/components/bundle.js
index a60ace35b..1b10a218b 100644
--- a/app/javascript/mastodon/features/ui/components/bundle.js
+++ b/app/javascript/mastodon/features/ui/components/bundle.js
@@ -15,7 +15,7 @@ class Bundle extends React.PureComponent {
onFetch: PropTypes.func,
onFetchSuccess: PropTypes.func,
onFetchFail: PropTypes.func,
- }
+ };
static defaultProps = {
loading: emptyComponent,
@@ -24,14 +24,14 @@ class Bundle extends React.PureComponent {
onFetch: noop,
onFetchSuccess: noop,
onFetchFail: noop,
- }
+ };
- static cache = new Map
+ static cache = new Map;
state = {
mod: undefined,
forceRender: false,
- }
+ };
componentWillMount() {
this.load(this.props);
@@ -83,7 +83,7 @@ class Bundle extends React.PureComponent {
this.setState({ mod: null });
onFetchFail(error);
});
- }
+ };
render() {
const { loading: Loading, error: Error, children, renderDelay } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/bundle_column_error.js b/app/javascript/mastodon/features/ui/components/bundle_column_error.js
index dfe970ad0..9955173eb 100644
--- a/app/javascript/mastodon/features/ui/components/bundle_column_error.js
+++ b/app/javascript/mastodon/features/ui/components/bundle_column_error.js
@@ -31,7 +31,7 @@ class GIF extends React.PureComponent {
if (!animate) {
this.setState({ hovering: true });
}
- }
+ };
handleMouseLeave = () => {
const { animate } = this.props;
@@ -39,7 +39,7 @@ class GIF extends React.PureComponent {
if (!animate) {
this.setState({ hovering: false });
}
- }
+ };
render () {
const { src, staticSrc, className, animate } = this.props;
@@ -75,7 +75,7 @@ class CopyButton extends React.PureComponent {
navigator.clipboard.writeText(value);
this.setState({ copied: true });
this.timeout = setTimeout(() => this.setState({ copied: false }), 700);
- }
+ };
componentWillUnmount () {
if (this.timeout) clearTimeout(this.timeout);
@@ -113,7 +113,7 @@ class BundleColumnError extends React.PureComponent {
if (onRetry) {
onRetry();
}
- }
+ };
render () {
const { errorType, multiColumn, stacktrace } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/bundle_modal_error.js b/app/javascript/mastodon/features/ui/components/bundle_modal_error.js
index f9365b95b..d79d0ca4a 100644
--- a/app/javascript/mastodon/features/ui/components/bundle_modal_error.js
+++ b/app/javascript/mastodon/features/ui/components/bundle_modal_error.js
@@ -16,11 +16,11 @@ class BundleModalError extends React.PureComponent {
onRetry: PropTypes.func.isRequired,
onClose: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
- }
+ };
handleRetry = () => {
this.props.onRetry();
- }
+ };
render () {
const { onClose, intl: { formatMessage } } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/column.js b/app/javascript/mastodon/features/ui/components/column.js
index 15538ea38..7bc2f7e00 100644
--- a/app/javascript/mastodon/features/ui/components/column.js
+++ b/app/javascript/mastodon/features/ui/components/column.js
@@ -23,7 +23,7 @@ export default class Column extends React.PureComponent {
}
this._interruptScrollAnimation = scrollTop(scrollable);
- }
+ };
scrollTop () {
const scrollable = this.node.querySelector('.scrollable');
@@ -40,11 +40,11 @@ export default class Column extends React.PureComponent {
if (typeof this._interruptScrollAnimation !== 'undefined') {
this._interruptScrollAnimation();
}
- }, 200)
+ }, 200);
setRef = (c) => {
this.node = c;
- }
+ };
render () {
const { heading, icon, children, active, hideHeadingOnMobile } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/column_header.js b/app/javascript/mastodon/features/ui/components/column_header.js
index b1a36e173..4ceef5957 100644
--- a/app/javascript/mastodon/features/ui/components/column_header.js
+++ b/app/javascript/mastodon/features/ui/components/column_header.js
@@ -15,7 +15,7 @@ export default class ColumnHeader extends React.PureComponent {
handleClick = () => {
this.props.onClick();
- }
+ };
render () {
const { icon, type, active, columnHeaderId } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/columns_area.js b/app/javascript/mastodon/features/ui/components/columns_area.js
index e7def800e..1dd6e34e8 100644
--- a/app/javascript/mastodon/features/ui/components/columns_area.js
+++ b/app/javascript/mastodon/features/ui/components/columns_area.js
@@ -57,7 +57,7 @@ export default class ColumnsArea extends ImmutablePureComponent {
state = {
renderComposePanel: !(this.mediaQuery && this.mediaQuery.matches),
- }
+ };
componentDidMount() {
if (!this.props.singleColumn) {
@@ -111,7 +111,7 @@ export default class ColumnsArea extends ImmutablePureComponent {
handleLayoutChange = (e) => {
this.setState({ renderComposePanel: !e.matches });
- }
+ };
handleWheel = () => {
if (typeof this._interruptScrollAnimation !== 'function') {
@@ -119,19 +119,19 @@ export default class ColumnsArea extends ImmutablePureComponent {
}
this._interruptScrollAnimation();
- }
+ };
setRef = (node) => {
this.node = node;
- }
+ };
renderLoading = columnId => () => {
return columnId === 'COMPOSE' ? : ;
- }
+ };
renderError = (props) => {
return ;
- }
+ };
render () {
const { columns, children, singleColumn, isModalOpen } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/compose_panel.js b/app/javascript/mastodon/features/ui/components/compose_panel.js
index 92d16b5b3..6cb352322 100644
--- a/app/javascript/mastodon/features/ui/components/compose_panel.js
+++ b/app/javascript/mastodon/features/ui/components/compose_panel.js
@@ -22,12 +22,12 @@ class ComposePanel extends React.PureComponent {
onFocus = () => {
const { dispatch } = this.props;
dispatch(changeComposing(true));
- }
+ };
onBlur = () => {
const { dispatch } = this.props;
dispatch(changeComposing(false));
- }
+ };
componentDidMount () {
const { dispatch } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/confirmation_modal.js b/app/javascript/mastodon/features/ui/components/confirmation_modal.js
index 65d97ca16..b023b00b2 100644
--- a/app/javascript/mastodon/features/ui/components/confirmation_modal.js
+++ b/app/javascript/mastodon/features/ui/components/confirmation_modal.js
@@ -30,20 +30,20 @@ class ConfirmationModal extends React.PureComponent {
this.props.onClose();
}
this.props.onConfirm();
- }
+ };
handleSecondary = () => {
this.props.onClose();
this.props.onSecondary();
- }
+ };
handleCancel = () => {
this.props.onClose();
- }
+ };
setRef = (c) => {
this.button = c;
- }
+ };
render () {
const { message, confirm, secondary } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/disabled_account_banner.js b/app/javascript/mastodon/features/ui/components/disabled_account_banner.js
index 038cc3553..35520478b 100644
--- a/app/javascript/mastodon/features/ui/components/disabled_account_banner.js
+++ b/app/javascript/mastodon/features/ui/components/disabled_account_banner.js
@@ -46,7 +46,7 @@ class DisabledAccountBanner extends React.PureComponent {
this.props.onLogout();
return false;
- }
+ };
render () {
const { disabledAcct, movedToAcct } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/embed_modal.js b/app/javascript/mastodon/features/ui/components/embed_modal.js
index 4679c9650..a054dd3cf 100644
--- a/app/javascript/mastodon/features/ui/components/embed_modal.js
+++ b/app/javascript/mastodon/features/ui/components/embed_modal.js
@@ -17,7 +17,7 @@ class EmbedModal extends ImmutablePureComponent {
onClose: PropTypes.func.isRequired,
onError: PropTypes.func.isRequired,
intl: PropTypes.object.isRequired,
- }
+ };
state = {
loading: false,
@@ -48,11 +48,11 @@ class EmbedModal extends ImmutablePureComponent {
setIframeRef = c => {
this.iframe = c;
- }
+ };
handleTextareaClick = (e) => {
e.target.select();
- }
+ };
render () {
const { intl, onClose } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/focal_point_modal.js b/app/javascript/mastodon/features/ui/components/focal_point_modal.js
index c0d528b3c..6e8d017ee 100644
--- a/app/javascript/mastodon/features/ui/components/focal_point_modal.js
+++ b/app/javascript/mastodon/features/ui/components/focal_point_modal.js
@@ -135,7 +135,7 @@ class FocalPointModal extends ImmutablePureComponent {
this.updatePosition(e);
this.setState({ dragging: true });
- }
+ };
handleTouchStart = e => {
document.addEventListener('touchmove', this.handleMouseMove);
@@ -143,25 +143,25 @@ class FocalPointModal extends ImmutablePureComponent {
this.updatePosition(e);
this.setState({ dragging: true });
- }
+ };
handleMouseMove = e => {
this.updatePosition(e);
- }
+ };
handleMouseUp = () => {
document.removeEventListener('mousemove', this.handleMouseMove);
document.removeEventListener('mouseup', this.handleMouseUp);
this.setState({ dragging: false });
- }
+ };
handleTouchEnd = () => {
document.removeEventListener('touchmove', this.handleMouseMove);
document.removeEventListener('touchend', this.handleTouchEnd);
this.setState({ dragging: false });
- }
+ };
updatePosition = e => {
const { x, y } = getPointerPosition(this.node, e);
@@ -169,24 +169,24 @@ class FocalPointModal extends ImmutablePureComponent {
const focusY = (y - .5) * -2;
this.props.onChangeFocus(focusX, focusY);
- }
+ };
handleChange = e => {
this.props.onChangeDescription(e.target.value);
- }
+ };
handleKeyDown = (e) => {
if (e.keyCode === 13 && (e.ctrlKey || e.metaKey)) {
this.props.onChangeDescription(e.target.value);
this.handleSubmit(e);
}
- }
+ };
handleSubmit = (e) => {
e.preventDefault();
e.stopPropagation();
this.props.onSave(this.props.description, this.props.focusX, this.props.focusY);
- }
+ };
getCloseConfirmationMessage = () => {
const { intl, dirty } = this.props;
@@ -199,15 +199,15 @@ class FocalPointModal extends ImmutablePureComponent {
} else {
return null;
}
- }
+ };
setRef = c => {
this.node = c;
- }
+ };
handleTextDetection = () => {
this._detectText();
- }
+ };
_detectText = (refreshCache = false) => {
const { media } = this.props;
@@ -258,21 +258,21 @@ class FocalPointModal extends ImmutablePureComponent {
console.error(e);
this.setState({ detecting: false });
});
- }
+ };
handleThumbnailChange = e => {
if (e.target.files.length > 0) {
this.props.onSelectThumbnail(e.target.files);
}
- }
+ };
setFileInputRef = c => {
this.fileInput = c;
- }
+ };
handleFileInputClick = () => {
this.fileInput.click();
- }
+ };
render () {
const { media, intl, account, onClose, isUploadingThumbnail, description, lang, focusX, focusY, dirty, is_changing_upload } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/image_loader.js b/app/javascript/mastodon/features/ui/components/image_loader.js
index dfa0efe49..92aeef5c4 100644
--- a/app/javascript/mastodon/features/ui/components/image_loader.js
+++ b/app/javascript/mastodon/features/ui/components/image_loader.js
@@ -14,7 +14,7 @@ export default class ImageLoader extends PureComponent {
height: PropTypes.number,
onClick: PropTypes.func,
zoomButtonHidden: PropTypes.bool,
- }
+ };
static defaultProps = {
alt: '',
@@ -26,7 +26,7 @@ export default class ImageLoader extends PureComponent {
loading: true,
error: false,
width: null,
- }
+ };
removers = [];
canvas = null;
@@ -86,7 +86,7 @@ export default class ImageLoader extends PureComponent {
image.addEventListener('load', handleLoad);
image.src = previewSrc;
this.removers.push(removeEventListeners);
- })
+ });
clearPreviewCanvas () {
const { width, height } = this.canvas;
@@ -126,7 +126,7 @@ export default class ImageLoader extends PureComponent {
setCanvasRef = c => {
this.canvas = c;
if (c) this.setState({ width: c.offsetWidth });
- }
+ };
render () {
const { alt, src, width, height, onClick } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/link_footer.js b/app/javascript/mastodon/features/ui/components/link_footer.js
index 3664a05bf..db5945d6a 100644
--- a/app/javascript/mastodon/features/ui/components/link_footer.js
+++ b/app/javascript/mastodon/features/ui/components/link_footer.js
@@ -44,7 +44,7 @@ class LinkFooter extends React.PureComponent {
this.props.onLogout();
return false;
- }
+ };
render () {
const { signedIn, permissions } = this.context.identity;
diff --git a/app/javascript/mastodon/features/ui/components/media_modal.js b/app/javascript/mastodon/features/ui/components/media_modal.js
index ae937d1cd..1cda8de04 100644
--- a/app/javascript/mastodon/features/ui/components/media_modal.js
+++ b/app/javascript/mastodon/features/ui/components/media_modal.js
@@ -43,27 +43,27 @@ class MediaModal extends ImmutablePureComponent {
handleSwipe = (index) => {
this.setState({ index: index % this.props.media.size });
- }
+ };
handleTransitionEnd = () => {
this.setState({
zoomButtonHidden: false,
});
- }
+ };
handleNextClick = () => {
this.setState({
index: (this.getIndex() + 1) % this.props.media.size,
zoomButtonHidden: true,
});
- }
+ };
handlePrevClick = () => {
this.setState({
index: (this.props.media.size + this.getIndex() - 1) % this.props.media.size,
zoomButtonHidden: true,
});
- }
+ };
handleChangeIndex = (e) => {
const index = Number(e.currentTarget.getAttribute('data-index'));
@@ -72,7 +72,7 @@ class MediaModal extends ImmutablePureComponent {
index: index % this.props.media.size,
zoomButtonHidden: true,
});
- }
+ };
handleKeyDown = (e) => {
switch(e.key) {
@@ -87,7 +87,7 @@ class MediaModal extends ImmutablePureComponent {
e.stopPropagation();
break;
}
- }
+ };
componentDidMount () {
window.addEventListener('keydown', this.handleKeyDown, false);
diff --git a/app/javascript/mastodon/features/ui/components/modal_root.js b/app/javascript/mastodon/features/ui/components/modal_root.js
index 6c4aabae5..5a1734977 100644
--- a/app/javascript/mastodon/features/ui/components/modal_root.js
+++ b/app/javascript/mastodon/features/ui/components/modal_root.js
@@ -79,17 +79,17 @@ export default class ModalRoot extends React.PureComponent {
setBackgroundColor = color => {
this.setState({ backgroundColor: color });
- }
+ };
renderLoading = modalId => () => {
return ['MEDIA', 'VIDEO', 'BOOST', 'CONFIRM', 'ACTIONS'].indexOf(modalId) === -1 ? : null;
- }
+ };
renderError = (props) => {
const { onClose } = this.props;
return ;
- }
+ };
handleClose = (ignoreFocus = false) => {
const { onClose } = this.props;
@@ -102,11 +102,11 @@ export default class ModalRoot extends React.PureComponent {
// This would be much smoother with react-intl 3+ and `forwardRef`.
}
onClose(message, ignoreFocus);
- }
+ };
setModalRef = (c) => {
this._modal = c;
- }
+ };
render () {
const { type, props, ignoreFocus } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/mute_modal.js b/app/javascript/mastodon/features/ui/components/mute_modal.js
index d8d8e68c3..b3e0ef56b 100644
--- a/app/javascript/mastodon/features/ui/components/mute_modal.js
+++ b/app/javascript/mastodon/features/ui/components/mute_modal.js
@@ -65,23 +65,23 @@ class MuteModal extends React.PureComponent {
handleClick = () => {
this.props.onClose();
this.props.onConfirm(this.props.account, this.props.notifications, this.props.muteDuration);
- }
+ };
handleCancel = () => {
this.props.onClose();
- }
+ };
setRef = (c) => {
this.button = c;
- }
+ };
toggleNotifications = () => {
this.props.onToggleNotifications();
- }
+ };
changeMuteDuration = (e) => {
this.props.onChangeMuteDuration(e);
- }
+ };
render () {
const { account, notifications, muteDuration, intl } = this.props;
diff --git a/app/javascript/mastodon/features/ui/components/report_modal.js b/app/javascript/mastodon/features/ui/components/report_modal.js
index 264da07ce..22c31eb52 100644
--- a/app/javascript/mastodon/features/ui/components/report_modal.js
+++ b/app/javascript/mastodon/features/ui/components/report_modal.js
@@ -95,7 +95,7 @@ class ReportModal extends ImmutablePureComponent {
} else {
this.setState({ selectedRuleIds: selectedRuleIds.remove(ruleId) });
}
- }
+ };
handleChangeCategory = category => {
this.setState({ category });
diff --git a/app/javascript/mastodon/features/ui/components/upload_area.js b/app/javascript/mastodon/features/ui/components/upload_area.js
index 6c423b2c1..035fe7a26 100644
--- a/app/javascript/mastodon/features/ui/components/upload_area.js
+++ b/app/javascript/mastodon/features/ui/components/upload_area.js
@@ -22,7 +22,7 @@ export default class UploadArea extends React.PureComponent {
break;
}
}
- }
+ };
componentDidMount () {
window.addEventListener('keyup', this.handleKeyUp, false);
diff --git a/app/javascript/mastodon/features/ui/components/zoomable_image.js b/app/javascript/mastodon/features/ui/components/zoomable_image.js
index 1cf263cb9..3b2bb0286 100644
--- a/app/javascript/mastodon/features/ui/components/zoomable_image.js
+++ b/app/javascript/mastodon/features/ui/components/zoomable_image.js
@@ -102,7 +102,7 @@ class ZoomableImage extends React.PureComponent {
onClick: PropTypes.func,
zoomButtonHidden: PropTypes.bool,
intl: PropTypes.object.isRequired,
- }
+ };
static defaultProps = {
alt: '',
@@ -132,7 +132,7 @@ class ZoomableImage extends React.PureComponent {
dragged: false,
lockScroll: { x: 0, y: 0 },
lockTranslate: { x: 0, y: 0 },
- }
+ };
removers = [];
container = null;
@@ -212,7 +212,7 @@ class ZoomableImage extends React.PureComponent {
// lock horizontal scroll
this.container.scrollLeft = Math.max(this.container.scrollLeft + event.pixelX, this.state.lockScroll.x);
- }
+ };
mouseDownHandler = e => {
this.container.style.cursor = 'grabbing';
@@ -228,7 +228,7 @@ class ZoomableImage extends React.PureComponent {
this.image.addEventListener('mousemove', this.mouseMoveHandler);
this.image.addEventListener('mouseup', this.mouseUpHandler);
- }
+ };
mouseMoveHandler = e => {
const dx = e.clientX - this.state.dragPosition.x;
@@ -238,7 +238,7 @@ class ZoomableImage extends React.PureComponent {
this.container.scrollTop = Math.max(this.state.dragPosition.top - dy, this.state.lockScroll.y);
this.setState({ dragged: true });
- }
+ };
mouseUpHandler = () => {
this.container.style.cursor = 'grab';
@@ -246,13 +246,13 @@ class ZoomableImage extends React.PureComponent {
this.image.removeEventListener('mousemove', this.mouseMoveHandler);
this.image.removeEventListener('mouseup', this.mouseUpHandler);
- }
+ };
handleTouchStart = e => {
if (e.touches.length !== 2) return;
this.lastDistance = getDistance(...e.touches);
- }
+ };
handleTouchMove = e => {
const { scrollTop, scrollHeight, clientHeight } = this.container;
@@ -275,7 +275,7 @@ class ZoomableImage extends React.PureComponent {
this.lastMidpoint = midpoint;
this.lastDistance = distance;
- }
+ };
zoom(nextScale, midpoint) {
const { scale, zoomMatrix } = this.state;
@@ -314,11 +314,11 @@ class ZoomableImage extends React.PureComponent {
const handler = this.props.onClick;
if (handler) handler();
this.setState({ navigationHidden: !this.state.navigationHidden });
- }
+ };
handleMouseDown = e => {
e.preventDefault();
- }
+ };
initZoomMatrix = () => {
const { width, height } = this.props;
@@ -350,7 +350,7 @@ class ZoomableImage extends React.PureComponent {
translateY: translateY,
},
});
- }
+ };
handleZoomClick = e => {
e.preventDefault();
@@ -392,15 +392,15 @@ class ZoomableImage extends React.PureComponent {
this.container.style.cursor = 'grab';
this.container.style.removeProperty('user-select');
- }
+ };
setContainerRef = c => {
this.container = c;
- }
+ };
setImageRef = c => {
this.image = c;
- }
+ };
render () {
const { alt, src, width, height, intl } = this.props;
diff --git a/app/javascript/mastodon/features/ui/index.js b/app/javascript/mastodon/features/ui/index.js
index 78dc9ea40..4f0ea0450 100644
--- a/app/javascript/mastodon/features/ui/index.js
+++ b/app/javascript/mastodon/features/ui/index.js
@@ -148,7 +148,7 @@ class SwitchingColumnsArea extends React.PureComponent {
if (c) {
this.node = c;
}
- }
+ };
render () {
const { children, mobile } = this.props;
@@ -270,16 +270,16 @@ class UI extends React.PureComponent {
// but we set user-friendly message for other browsers, e.g. Edge.
e.returnValue = intl.formatMessage(messages.beforeUnload);
}
- }
+ };
handleWindowFocus = () => {
this.props.dispatch(focusApp());
this.props.dispatch(submitMarkers({ immediate: true }));
- }
+ };
handleWindowBlur = () => {
this.props.dispatch(unfocusApp());
- }
+ };
handleDragEnter = (e) => {
e.preventDefault();
@@ -295,7 +295,7 @@ class UI extends React.PureComponent {
if (e.dataTransfer && Array.from(e.dataTransfer.types).includes('Files') && this.props.canUploadMore && this.context.identity.signedIn) {
this.setState({ draggingOver: true });
}
- }
+ };
handleDragOver = (e) => {
if (this.dataTransferIsText(e.dataTransfer)) return false;
@@ -310,7 +310,7 @@ class UI extends React.PureComponent {
}
return false;
- }
+ };
handleDrop = (e) => {
if (this.dataTransferIsText(e.dataTransfer)) return;
@@ -323,7 +323,7 @@ class UI extends React.PureComponent {
if (e.dataTransfer && e.dataTransfer.files.length >= 1 && this.props.canUploadMore && this.context.identity.signedIn) {
this.props.dispatch(uploadCompose(e.dataTransfer.files));
}
- }
+ };
handleDragLeave = (e) => {
e.preventDefault();
@@ -336,15 +336,15 @@ class UI extends React.PureComponent {
}
this.setState({ draggingOver: false });
- }
+ };
dataTransferIsText = (dataTransfer) => {
return (dataTransfer && Array.from(dataTransfer.types).filter((type) => type === 'text/plain').length === 1);
- }
+ };
closeUploadModal = () => {
this.setState({ draggingOver: false });
- }
+ };
handleServiceWorkerPostMessage = ({ data }) => {
if (data.type === 'navigate') {
@@ -352,7 +352,7 @@ class UI extends React.PureComponent {
} else {
console.warn('Unknown message type:', data.type);
}
- }
+ };
handleLayoutChange = debounce(() => {
this.props.dispatch(clearHeight()); // The cached heights are no longer accurate, invalidate
@@ -369,7 +369,7 @@ class UI extends React.PureComponent {
} else {
this.handleLayoutChange();
}
- }
+ };
componentDidMount () {
const { signedIn } = this.context.identity;
@@ -423,7 +423,7 @@ class UI extends React.PureComponent {
setRef = c => {
this.node = c;
- }
+ };
handleHotkeyNew = e => {
e.preventDefault();
@@ -433,7 +433,7 @@ class UI extends React.PureComponent {
if (element) {
element.focus();
}
- }
+ };
handleHotkeySearch = e => {
e.preventDefault();
@@ -443,17 +443,17 @@ class UI extends React.PureComponent {
if (element) {
element.focus();
}
- }
+ };
handleHotkeyForceNew = e => {
this.handleHotkeyNew(e);
this.props.dispatch(resetCompose());
- }
+ };
handleHotkeyToggleComposeSpoilers = e => {
e.preventDefault();
this.props.dispatch(changeComposeSpoilerness());
- }
+ };
handleHotkeyFocusColumn = e => {
const index = (e.key * 1) + 1; // First child is drawer, skip that
@@ -471,7 +471,7 @@ class UI extends React.PureComponent {
status.focus();
}
}
- }
+ };
handleHotkeyBack = () => {
if (window.history && window.history.length === 1) {
@@ -479,11 +479,11 @@ class UI extends React.PureComponent {
} else {
this.context.router.history.goBack();
}
- }
+ };
setHotkeysRef = c => {
this.hotkeys = c;
- }
+ };
handleHotkeyToggleHelp = () => {
if (this.props.location.pathname === '/keyboard-shortcuts') {
@@ -491,55 +491,55 @@ class UI extends React.PureComponent {
} else {
this.context.router.history.push('/keyboard-shortcuts');
}
- }
+ };
handleHotkeyGoToHome = () => {
this.context.router.history.push('/home');
- }
+ };
handleHotkeyGoToNotifications = () => {
this.context.router.history.push('/notifications');
- }
+ };
handleHotkeyGoToLocal = () => {
this.context.router.history.push('/public/local');
- }
+ };
handleHotkeyGoToFederated = () => {
this.context.router.history.push('/public');
- }
+ };
handleHotkeyGoToDirect = () => {
this.context.router.history.push('/conversations');
- }
+ };
handleHotkeyGoToStart = () => {
this.context.router.history.push('/getting-started');
- }
+ };
handleHotkeyGoToFavourites = () => {
this.context.router.history.push('/favourites');
- }
+ };
handleHotkeyGoToPinned = () => {
this.context.router.history.push('/pinned');
- }
+ };
handleHotkeyGoToProfile = () => {
this.context.router.history.push(`/@${this.props.username}`);
- }
+ };
handleHotkeyGoToBlocked = () => {
this.context.router.history.push('/blocks');
- }
+ };
handleHotkeyGoToMuted = () => {
this.context.router.history.push('/mutes');
- }
+ };
handleHotkeyGoToRequests = () => {
this.context.router.history.push('/follow_requests');
- }
+ };
render () {
const { draggingOver } = this.state;
diff --git a/app/javascript/mastodon/features/ui/util/react_router_helpers.js b/app/javascript/mastodon/features/ui/util/react_router_helpers.js
index 205dd6f10..21b352878 100644
--- a/app/javascript/mastodon/features/ui/util/react_router_helpers.js
+++ b/app/javascript/mastodon/features/ui/util/react_router_helpers.js
@@ -80,17 +80,17 @@ export class WrappedRoute extends React.Component {
{Component => {content}}
);
- }
+ };
renderLoading = () => {
const { multiColumn } = this.props;
return ;
- }
+ };
renderError = (props) => {
return ;
- }
+ };
render () {
const { component: Component, content, ...rest } = this.props;
diff --git a/app/javascript/mastodon/features/ui/util/reduced_motion.js b/app/javascript/mastodon/features/ui/util/reduced_motion.js
index 95519042b..1123b80ed 100644
--- a/app/javascript/mastodon/features/ui/util/reduced_motion.js
+++ b/app/javascript/mastodon/features/ui/util/reduced_motion.js
@@ -17,7 +17,7 @@ class ReducedMotion extends React.Component {
defaultStyle: PropTypes.object,
style: PropTypes.object,
children: PropTypes.func,
- }
+ };
render() {
diff --git a/app/javascript/mastodon/features/video/index.js b/app/javascript/mastodon/features/video/index.js
index 1c35ca9d1..8d63394aa 100644
--- a/app/javascript/mastodon/features/video/index.js
+++ b/app/javascript/mastodon/features/video/index.js
@@ -148,7 +148,7 @@ class Video extends React.PureComponent {
if (this.player) {
this._setDimensions();
}
- }
+ };
_setDimensions () {
const width = this.player.offsetWidth;
@@ -168,26 +168,26 @@ class Video extends React.PureComponent {
if (this.video) {
this.setState({ volume: this.video.volume, muted: this.video.muted });
}
- }
+ };
setSeekRef = c => {
this.seek = c;
- }
+ };
setVolumeRef = c => {
this.volume = c;
- }
+ };
handleClickRoot = e => e.stopPropagation();
handlePlay = () => {
this.setState({ paused: false });
this._updateTime();
- }
+ };
handlePause = () => {
this.setState({ paused: true });
- }
+ };
_updateTime () {
requestAnimationFrame(() => {
@@ -206,7 +206,7 @@ class Video extends React.PureComponent {
currentTime: this.video.currentTime,
duration:this.video.duration,
});
- }
+ };
handleVolumeMouseDown = e => {
document.addEventListener('mousemove', this.handleMouseVolSlide, true);
@@ -218,14 +218,14 @@ class Video extends React.PureComponent {
e.preventDefault();
e.stopPropagation();
- }
+ };
handleVolumeMouseUp = () => {
document.removeEventListener('mousemove', this.handleMouseVolSlide, true);
document.removeEventListener('mouseup', this.handleVolumeMouseUp, true);
document.removeEventListener('touchmove', this.handleMouseVolSlide, true);
document.removeEventListener('touchend', this.handleVolumeMouseUp, true);
- }
+ };
handleMouseVolSlide = throttle(e => {
const { x } = getPointerPosition(this.volume, e);
@@ -249,7 +249,7 @@ class Video extends React.PureComponent {
e.preventDefault();
e.stopPropagation();
- }
+ };
handleMouseUp = () => {
document.removeEventListener('mousemove', this.handleMouseMove, true);
@@ -259,7 +259,7 @@ class Video extends React.PureComponent {
this.setState({ dragging: false });
this.video.play();
- }
+ };
handleMouseMove = throttle(e => {
const { x } = getPointerPosition(this.seek, e);
@@ -291,7 +291,7 @@ class Video extends React.PureComponent {
e.stopPropagation();
this.togglePlay();
}
- }
+ };
handleKeyDown = e => {
const frameTime = 1 / this.getFrameRate();
@@ -345,7 +345,7 @@ class Video extends React.PureComponent {
exitFullscreen();
}
}
- }
+ };
togglePlay = () => {
if (this.state.paused) {
@@ -353,7 +353,7 @@ class Video extends React.PureComponent {
} else {
this.setState({ paused: true }, () => this.video.pause());
}
- }
+ };
toggleFullscreen = () => {
if (isFullscreen()) {
@@ -361,7 +361,7 @@ class Video extends React.PureComponent {
} else {
requestFullscreen(this.player);
}
- }
+ };
componentDidMount () {
document.addEventListener('fullscreenchange', this.handleFullscreenChange, true);
@@ -434,19 +434,19 @@ class Video extends React.PureComponent {
this.setState({ paused: true });
}
- }, 150, { trailing: true })
+ }, 150, { trailing: true });
handleFullscreenChange = () => {
this.setState({ fullscreen: isFullscreen() });
- }
+ };
handleMouseEnter = () => {
this.setState({ hovered: true });
- }
+ };
handleMouseLeave = () => {
this.setState({ hovered: false });
- }
+ };
toggleMute = () => {
const muted = !this.video.muted;
@@ -454,7 +454,7 @@ class Video extends React.PureComponent {
this.setState({ muted }, () => {
this.video.muted = muted;
});
- }
+ };
toggleReveal = () => {
if (this.props.onToggleVisibility) {
@@ -462,7 +462,7 @@ class Video extends React.PureComponent {
} else {
this.setState({ revealed: !this.state.revealed });
}
- }
+ };
handleLoadedData = () => {
const { currentTime, volume, muted, autoPlay } = this.props;
@@ -482,7 +482,7 @@ class Video extends React.PureComponent {
if (autoPlay) {
this.video.play();
}
- }
+ };
handleProgress = () => {
const lastTimeRange = this.video.buffered.length - 1;
@@ -490,11 +490,11 @@ class Video extends React.PureComponent {
if (lastTimeRange > -1) {
this.setState({ buffer: Math.ceil(this.video.buffered.end(lastTimeRange) / this.video.duration * 100) });
}
- }
+ };
handleVolumeChange = () => {
this.setState({ volume: this.video.volume, muted: this.video.muted });
- }
+ };
handleOpenVideo = () => {
this.video.pause();
@@ -505,12 +505,12 @@ class Video extends React.PureComponent {
defaultVolume: this.state.volume,
componentIndex: this.props.componentIndex,
});
- }
+ };
handleCloseVideo = () => {
this.video.pause();
this.props.onCloseVideo();
- }
+ };
getFrameRate () {
if (this.props.frameRate && isNaN(this.props.frameRate)) {
diff --git a/package.json b/package.json
index 26618d748..e55588c06 100644
--- a/package.json
+++ b/package.json
@@ -145,7 +145,7 @@
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^12.1.5",
"babel-jest": "^29.3.1",
- "eslint": "^7.32.0",
+ "eslint": "^8.33.0",
"eslint-plugin-import": "~2.26.0",
"eslint-plugin-jsx-a11y": "~6.6.1",
"eslint-plugin-promise": "~6.1.1",
diff --git a/yarn.lock b/yarn.lock
index 798fed8a4..6b855b19d 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -23,13 +23,6 @@
jsonpointer "^5.0.0"
leven "^3.1.0"
-"@babel/code-frame@7.12.11":
- version "7.12.11"
- resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f"
- integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==
- dependencies:
- "@babel/highlight" "^7.10.4"
-
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a"
@@ -305,7 +298,7 @@
"@babel/traverse" "^7.20.7"
"@babel/types" "^7.20.7"
-"@babel/highlight@^7.10.4", "@babel/highlight@^7.18.6":
+"@babel/highlight@^7.18.6":
version "7.18.6"
resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf"
integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==
@@ -1171,19 +1164,19 @@
resolved "https://registry.yarnpkg.com/@emotion/weak-memoize/-/weak-memoize-0.2.5.tgz#8eed982e2ee6f7f4e44c253e12962980791efd46"
integrity sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==
-"@eslint/eslintrc@^0.4.3":
- version "0.4.3"
- resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.3.tgz#9e42981ef035beb3dd49add17acb96e8ff6f394c"
- integrity sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==
+"@eslint/eslintrc@^1.4.1":
+ version "1.4.1"
+ resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e"
+ integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==
dependencies:
ajv "^6.12.4"
- debug "^4.1.1"
- espree "^7.3.0"
- globals "^13.9.0"
- ignore "^4.0.6"
+ debug "^4.3.2"
+ espree "^9.4.0"
+ globals "^13.19.0"
+ ignore "^5.2.0"
import-fresh "^3.2.1"
- js-yaml "^3.13.1"
- minimatch "^3.0.4"
+ js-yaml "^4.1.0"
+ minimatch "^3.1.2"
strip-json-comments "^3.1.1"
"@floating-ui/core@^1.0.1":
@@ -1220,19 +1213,24 @@
resolved "https://registry.yarnpkg.com/@github/webauthn-json/-/webauthn-json-0.5.7.tgz#143bc67f6e0f75f8d188e565741507bb08c31214"
integrity sha512-SUYsttDxFSvWvvJssJpwzjmRCqYfdfqC9VCmAHQYfdKCVelyJteCHo9/lK1CB72mx/jrl6cFNY08aua4J2jIyg==
-"@humanwhocodes/config-array@^0.5.0":
- version "0.5.0"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9"
- integrity sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==
+"@humanwhocodes/config-array@^0.11.8":
+ version "0.11.8"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9"
+ integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==
dependencies:
- "@humanwhocodes/object-schema" "^1.2.0"
+ "@humanwhocodes/object-schema" "^1.2.1"
debug "^4.1.1"
- minimatch "^3.0.4"
+ minimatch "^3.0.5"
-"@humanwhocodes/object-schema@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.0.tgz#87de7af9c231826fdd68ac7258f77c429e0e5fcf"
- integrity sha512-wdppn25U8z/2yiaT6YGquE6X8sSv7hNMWSXYSSU1jGv/yd6XqjXgTDJ8KP4NgjTXfJ3GbRjeeb8RTV7a/VpM+w==
+"@humanwhocodes/module-importer@^1.0.1":
+ version "1.0.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c"
+ integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
+
+"@humanwhocodes/object-schema@^1.2.1":
+ version "1.2.1"
+ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45"
+ integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==
"@istanbuljs/load-nyc-config@^1.0.0":
version "1.1.0"
@@ -1550,7 +1548,7 @@
resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
-"@nodelib/fs.walk@^1.2.3":
+"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
version "1.2.8"
resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
@@ -2167,10 +2165,10 @@ acorn-globals@^7.0.0:
acorn "^8.1.0"
acorn-walk "^8.0.2"
-acorn-jsx@^5.3.1:
- version "5.3.1"
- resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b"
- integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==
+acorn-jsx@^5.3.2:
+ version "5.3.2"
+ resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937"
+ integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
acorn-walk@^8.0.0, acorn-walk@^8.0.2:
version "8.2.0"
@@ -2182,16 +2180,16 @@ acorn@^6.4.1:
resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474"
integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==
-acorn@^7.4.0:
- version "7.4.1"
- resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa"
- integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
-
acorn@^8.0.4, acorn@^8.1.0, acorn@^8.5.0, acorn@^8.8.1:
version "8.8.1"
resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73"
integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==
+acorn@^8.8.0:
+ version "8.8.2"
+ resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.2.tgz#1b2f25db02af965399b9776b0c2c391276d37c4a"
+ integrity sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==
+
agent-base@6:
version "6.0.2"
resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77"
@@ -2247,11 +2245,6 @@ ansi-colors@^3.0.0:
resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-3.2.4.tgz#e3a3da4bfbae6c86a9c285625de124a234026fbf"
integrity sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==
-ansi-colors@^4.1.1:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348"
- integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==
-
ansi-escapes@^4.2.1:
version "4.3.1"
resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61"
@@ -3866,7 +3859,7 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.9:
dependencies:
ms "2.0.0"
-debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.3.4:
+debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.2, debug@^4.3.4:
version "4.3.4"
resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
@@ -4284,13 +4277,6 @@ enhanced-resolve@^4.1.1, enhanced-resolve@^4.5.0:
memory-fs "^0.5.0"
tapable "^1.0.0"
-enquirer@^2.3.5:
- version "2.3.6"
- resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d"
- integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==
- dependencies:
- ansi-colors "^4.1.1"
-
entities@^2.0.0:
version "2.0.3"
resolved "https://registry.yarnpkg.com/entities/-/entities-2.0.3.tgz#5c487e5742ab93c15abb5da22759b8590ec03b7f"
@@ -4511,7 +4497,7 @@ eslint-plugin-react@~7.32.1:
semver "^6.3.0"
string.prototype.matchall "^4.0.8"
-eslint-scope@5.1.1, eslint-scope@^5.1.1:
+eslint-scope@5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==
@@ -4527,77 +4513,84 @@ eslint-scope@^4.0.3:
esrecurse "^4.1.0"
estraverse "^4.1.1"
-eslint-utils@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27"
- integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==
+eslint-scope@^7.1.1:
+ version "7.1.1"
+ resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642"
+ integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==
dependencies:
- eslint-visitor-keys "^1.1.0"
+ esrecurse "^4.3.0"
+ estraverse "^5.2.0"
-eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e"
- integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==
+eslint-utils@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672"
+ integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==
+ dependencies:
+ eslint-visitor-keys "^2.0.0"
eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303"
integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==
-eslint@^7.32.0:
- version "7.32.0"
- resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.32.0.tgz#c6d328a14be3fb08c8d1d21e12c02fdb7a2a812d"
- integrity sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==
+eslint-visitor-keys@^3.3.0:
+ version "3.3.0"
+ resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826"
+ integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
+
+eslint@^8.33.0:
+ version "8.33.0"
+ resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.33.0.tgz#02f110f32998cb598c6461f24f4d306e41ca33d7"
+ integrity sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==
dependencies:
- "@babel/code-frame" "7.12.11"
- "@eslint/eslintrc" "^0.4.3"
- "@humanwhocodes/config-array" "^0.5.0"
+ "@eslint/eslintrc" "^1.4.1"
+ "@humanwhocodes/config-array" "^0.11.8"
+ "@humanwhocodes/module-importer" "^1.0.1"
+ "@nodelib/fs.walk" "^1.2.8"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
- debug "^4.0.1"
+ debug "^4.3.2"
doctrine "^3.0.0"
- enquirer "^2.3.5"
escape-string-regexp "^4.0.0"
- eslint-scope "^5.1.1"
- eslint-utils "^2.1.0"
- eslint-visitor-keys "^2.0.0"
- espree "^7.3.1"
+ eslint-scope "^7.1.1"
+ eslint-utils "^3.0.0"
+ eslint-visitor-keys "^3.3.0"
+ espree "^9.4.0"
esquery "^1.4.0"
esutils "^2.0.2"
fast-deep-equal "^3.1.3"
file-entry-cache "^6.0.1"
- functional-red-black-tree "^1.0.1"
- glob-parent "^5.1.2"
- globals "^13.6.0"
- ignore "^4.0.6"
+ find-up "^5.0.0"
+ glob-parent "^6.0.2"
+ globals "^13.19.0"
+ grapheme-splitter "^1.0.4"
+ ignore "^5.2.0"
import-fresh "^3.0.0"
imurmurhash "^0.1.4"
is-glob "^4.0.0"
- js-yaml "^3.13.1"
+ is-path-inside "^3.0.3"
+ js-sdsl "^4.1.4"
+ js-yaml "^4.1.0"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash.merge "^4.6.2"
- minimatch "^3.0.4"
+ minimatch "^3.1.2"
natural-compare "^1.4.0"
optionator "^0.9.1"
- progress "^2.0.0"
- regexpp "^3.1.0"
- semver "^7.2.1"
- strip-ansi "^6.0.0"
+ regexpp "^3.2.0"
+ strip-ansi "^6.0.1"
strip-json-comments "^3.1.0"
- table "^6.0.9"
text-table "^0.2.0"
- v8-compile-cache "^2.0.3"
-espree@^7.3.0, espree@^7.3.1:
- version "7.3.1"
- resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6"
- integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==
+espree@^9.4.0:
+ version "9.4.1"
+ resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd"
+ integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==
dependencies:
- acorn "^7.4.0"
- acorn-jsx "^5.3.1"
- eslint-visitor-keys "^1.3.0"
+ acorn "^8.8.0"
+ acorn-jsx "^5.3.2"
+ eslint-visitor-keys "^3.3.0"
esprima@^4.0.0, esprima@^4.0.1:
version "4.0.1"
@@ -4979,6 +4972,14 @@ find-up@^4.0.0, find-up@^4.1.0:
locate-path "^5.0.0"
path-exists "^4.0.0"
+find-up@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc"
+ integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
+ dependencies:
+ locate-path "^6.0.0"
+ path-exists "^4.0.0"
+
findup-sync@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1"
@@ -5128,11 +5129,6 @@ function.prototype.name@^1.1.5:
es-abstract "^1.19.0"
functions-have-names "^1.2.2"
-functional-red-black-tree@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327"
- integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=
-
functions-have-names@^1.2.2:
version "1.2.3"
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
@@ -5231,6 +5227,13 @@ glob-parent@^5.1.2, glob-parent@~5.1.0:
dependencies:
is-glob "^4.0.1"
+glob-parent@^6.0.2:
+ version "6.0.2"
+ resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3"
+ integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
+ dependencies:
+ is-glob "^4.0.3"
+
glob@^7.0.3, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
version "7.2.0"
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023"
@@ -5295,10 +5298,10 @@ globals@^11.1.0:
resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e"
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
-globals@^13.6.0, globals@^13.9.0:
- version "13.9.0"
- resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb"
- integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA==
+globals@^13.19.0:
+ version "13.20.0"
+ resolved "https://registry.yarnpkg.com/globals/-/globals-13.20.0.tgz#ea276a1e508ffd4f1612888f9d1bad1e2717bf82"
+ integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==
dependencies:
type-fest "^0.20.2"
@@ -5335,6 +5338,11 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96"
integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ==
+grapheme-splitter@^1.0.4:
+ version "1.0.4"
+ resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e"
+ integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==
+
gzip-size@^6.0.0:
version "6.0.0"
resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462"
@@ -5666,11 +5674,6 @@ iferr@^0.1.5:
resolved "https://registry.yarnpkg.com/iferr/-/iferr-0.1.5.tgz#c60eed69e6d8fdb6b3104a1fcbca1c192dc5b501"
integrity sha1-xg7taebY/bazEEofy8ocGS3FtQE=
-ignore@^4.0.6:
- version "4.0.6"
- resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc"
- integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==
-
ignore@^5.2.0, ignore@^5.2.1:
version "5.2.4"
resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324"
@@ -6133,6 +6136,11 @@ is-path-inside@^2.1.0:
dependencies:
path-is-inside "^1.0.2"
+is-path-inside@^3.0.3:
+ version "3.0.3"
+ resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283"
+ integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
+
is-plain-obj@^1.1.0:
version "1.1.0"
resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
@@ -6704,6 +6712,11 @@ jest@^29.3.1:
import-local "^3.0.2"
jest-cli "^29.3.1"
+js-sdsl@^4.1.4:
+ version "4.3.0"
+ resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.3.0.tgz#aeefe32a451f7af88425b11fdb5f58c90ae1d711"
+ integrity sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==
+
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499"
@@ -7000,6 +7013,13 @@ locate-path@^5.0.0:
dependencies:
p-locate "^4.1.0"
+locate-path@^6.0.0:
+ version "6.0.0"
+ resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286"
+ integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
+ dependencies:
+ p-locate "^5.0.0"
+
lockfile@^1.0:
version "1.0.4"
resolved "https://registry.yarnpkg.com/lockfile/-/lockfile-1.0.4.tgz#07f819d25ae48f87e538e6578b6964a4981a5609"
@@ -7338,7 +7358,7 @@ minimalistic-crypto-utils@^1.0.1:
resolved "https://registry.yarnpkg.com/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz#f6c00c1c0b082246e5c4d99dfb8c7c083b2b582a"
integrity sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=
-minimatch@^3.0.4, minimatch@^3.1.2:
+minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
@@ -7904,6 +7924,13 @@ p-locate@^4.1.0:
dependencies:
p-limit "^2.2.0"
+p-locate@^5.0.0:
+ version "5.0.0"
+ resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834"
+ integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
+ dependencies:
+ p-limit "^3.0.2"
+
p-map@^2.0.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175"
@@ -8657,11 +8684,6 @@ process@^0.11.10:
resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182"
integrity sha1-czIwDoQBYb2j5podHZGn1LwW8YI=
-progress@^2.0.0:
- version "2.0.3"
- resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8"
- integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
-
promise-inflight@^1.0.1:
version "1.0.1"
resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3"
@@ -9288,10 +9310,10 @@ regexp.prototype.flags@^1.2.0, regexp.prototype.flags@^1.4.3:
define-properties "^1.1.3"
functions-have-names "^1.2.2"
-regexpp@^3.1.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2"
- integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==
+regexpp@^3.2.0:
+ version "3.2.0"
+ resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2"
+ integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==
regexpu-core@^5.1.0:
version "5.1.0"
@@ -9648,7 +9670,7 @@ semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0:
resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d"
integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==
-semver@^7.2.1, semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
+semver@^7.3.2, semver@^7.3.4, semver@^7.3.5:
version "7.3.7"
resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
@@ -10449,7 +10471,7 @@ symbol-tree@^3.2.4:
resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2"
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
-table@^6.0.9, table@^6.8.1:
+table@^6.8.1:
version "6.8.1"
resolved "https://registry.yarnpkg.com/table/-/table-6.8.1.tgz#ea2b71359fe03b017a5fbc296204471158080bdf"
integrity sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==
@@ -11053,7 +11075,7 @@ uuid@^8.3.1:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==
-v8-compile-cache@^2.0.3, v8-compile-cache@^2.1.1, v8-compile-cache@^2.3.0:
+v8-compile-cache@^2.1.1, v8-compile-cache@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee"
integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==