diff --git a/app/soapbox/components/autosuggest-input.tsx b/app/soapbox/components/autosuggest-input.tsx index fe82744c18..1228901129 100644 --- a/app/soapbox/components/autosuggest-input.tsx +++ b/app/soapbox/components/autosuggest-input.tsx @@ -46,7 +46,7 @@ export default class AutosuggestInput extends ImmutablePureComponent { return this.props.autoSelect ? 0 : -1; - } + }; state = { suggestionsHidden: true, @@ -76,7 +76,7 @@ export default class AutosuggestInput extends ImmutablePureComponent = (e) => { const { suggestions, menu, disabled } = this.props; @@ -145,15 +145,15 @@ export default class AutosuggestInput extends ImmutablePureComponent { this.setState({ suggestionsHidden: true, focused: false }); - } + }; onFocus = () => { this.setState({ focused: true }); - } + }; onSuggestionClick: React.EventHandler = (e) => { const index = Number(e.currentTarget?.getAttribute('data-index')); @@ -161,7 +161,7 @@ export default class AutosuggestInput extends ImmutablePureComponent { this.input = c; - } + }; renderSuggestion = (suggestion: AutoSuggestion, i: number) => { const { selectedSuggestion } = this.state; @@ -209,21 +209,21 @@ export default class AutosuggestInput extends ImmutablePureComponent ); - } + }; handleMenuItemAction = (item: MenuItem | null, e: React.MouseEvent | React.KeyboardEvent) => { this.onBlur(); if (item?.action) { item.action(e); } - } + }; handleMenuItemClick = (item: MenuItem | null): React.MouseEventHandler => { return e => { e.preventDefault(); this.handleMenuItemAction(item, e); }; - } + }; renderMenu = () => { const { menu, suggestions } = this.props; diff --git a/app/soapbox/components/autosuggest-textarea.tsx b/app/soapbox/components/autosuggest-textarea.tsx index b7fceb86df..b1b846c56f 100644 --- a/app/soapbox/components/autosuggest-textarea.tsx +++ b/app/soapbox/components/autosuggest-textarea.tsx @@ -64,7 +64,7 @@ class AutosuggestTextarea extends ImmutablePureComponent } this.props.onChange(e); - } + }; onKeyDown: React.KeyboardEventHandler = (e) => { const { suggestions, disabled } = this.props; @@ -122,7 +122,7 @@ class AutosuggestTextarea extends ImmutablePureComponent } this.props.onKeyDown(e); - } + }; onBlur = () => { this.setState({ suggestionsHidden: true, focused: false }); @@ -130,7 +130,7 @@ class AutosuggestTextarea extends ImmutablePureComponent if (this.props.onBlur) { this.props.onBlur(); } - } + }; onFocus = () => { this.setState({ focused: true }); @@ -138,14 +138,14 @@ class AutosuggestTextarea extends ImmutablePureComponent if (this.props.onFocus) { this.props.onFocus(); } - } + }; onSuggestionClick: React.MouseEventHandler = (e) => { const suggestion = this.props.suggestions.get(e.currentTarget.getAttribute('data-index') as any); e.preventDefault(); this.props.onSuggestionSelected(this.state.tokenStart, this.state.lastToken, suggestion); this.textarea?.focus(); - } + }; shouldComponentUpdate(nextProps: IAutosuggesteTextarea, nextState: any) { // Skip updating when only the lastToken changes so the @@ -169,14 +169,14 @@ class AutosuggestTextarea extends ImmutablePureComponent setTextarea: React.Ref = (c) => { this.textarea = c; - } + }; onPaste: React.ClipboardEventHandler = (e) => { if (e.clipboardData && e.clipboardData.files.length === 1) { this.props.onPaste(e.clipboardData.files); e.preventDefault(); } - } + }; renderSuggestion = (suggestion: string | Emoji, i: number) => { const { selectedSuggestion } = this.state; @@ -208,7 +208,7 @@ class AutosuggestTextarea extends ImmutablePureComponent {inner} ); - } + }; setPortalPosition() { if (!this.textarea) { diff --git a/app/soapbox/components/dropdown-menu.tsx b/app/soapbox/components/dropdown-menu.tsx index 202c43fa8f..3cab63aeb5 100644 --- a/app/soapbox/components/dropdown-menu.tsx +++ b/app/soapbox/components/dropdown-menu.tsx @@ -64,7 +64,7 @@ class DropdownMenu extends React.PureComponent = c => { this.node = c; - } + }; setFocusRef: React.RefCallback = c => { this.focusedItem = c; - } + }; handleKeyDown = (e: KeyboardEvent) => { if (!this.node) return; @@ -127,13 +127,13 @@ class DropdownMenu extends React.PureComponent = e => { if (e.key === 'Enter' || e.key === ' ') { this.handleClick(e); } - } + }; handleClick: React.EventHandler = e => { const i = Number(e.currentTarget.getAttribute('data-index')); @@ -152,7 +152,7 @@ class DropdownMenu extends React.PureComponent = e => { const i = Number(e.currentTarget.getAttribute('data-index')); @@ -166,13 +166,13 @@ class DropdownMenu extends React.PureComponent = e => { if (e.button === 1) { this.handleMiddleClick(e); } - } + }; renderItem(option: MenuItem | null, i: number): JSX.Element { if (option === null) { @@ -303,7 +303,7 @@ class Dropdown extends React.PureComponent { onOpen(this.state.id, this.handleItemClick, placement, e.type !== 'click'); } - } + }; handleClose = () => { if (this.activeElement && this.activeElement === this.target) { @@ -314,13 +314,13 @@ class Dropdown extends React.PureComponent { if (this.props.onClose) { this.props.onClose(this.state.id); } - } + }; handleMouseDown: React.EventHandler = () => { if (!this.state.open) { this.activeElement = document.activeElement; } - } + }; handleButtonKeyDown: React.EventHandler = (e) => { switch (e.key) { @@ -329,7 +329,7 @@ class Dropdown extends React.PureComponent { this.handleMouseDown(e); break; } - } + }; handleKeyPress: React.EventHandler> = (e) => { switch (e.key) { @@ -340,7 +340,7 @@ class Dropdown extends React.PureComponent { e.preventDefault(); break; } - } + }; handleItemClick: React.EventHandler = e => { const i = Number(e.currentTarget.getAttribute('data-index')); @@ -358,21 +358,21 @@ class Dropdown extends React.PureComponent { } else if (to) { this.props.history?.push(to); } - } + }; setTargetRef: React.RefCallback = c => { this.target = c; - } + }; findTarget = () => { return this.target; - } + }; componentWillUnmount = () => { if (this.state.id === this.props.openDropdownId) { this.handleClose(); } - } + }; render() { const { src = require('@tabler/icons/dots.svg'), items, title, disabled, dropdownPlacement, openDropdownId, openedViaKeyboard = false, pressed, text, children, dropdownMenuStyle } = this.props; diff --git a/app/soapbox/components/emoji-selector.tsx b/app/soapbox/components/emoji-selector.tsx index 43e10d8756..be0ca3a51c 100644 --- a/app/soapbox/components/emoji-selector.tsx +++ b/app/soapbox/components/emoji-selector.tsx @@ -28,7 +28,7 @@ class EmojiSelector extends ImmutablePureComponent { onReact: () => { }, onUnfocus: () => { }, visible: false, - } + }; node?: HTMLDivElement = undefined; @@ -38,7 +38,7 @@ class EmojiSelector extends ImmutablePureComponent { if (focused && (!e.currentTarget || !e.currentTarget.classList.contains('emoji-react-selector__emoji'))) { onUnfocus(); } - } + }; _selectPreviousEmoji = (i: number): void => { if (!this.node) return; @@ -85,7 +85,7 @@ class EmojiSelector extends ImmutablePureComponent { onUnfocus(); break; } - } + }; handleReact = (emoji: string) => (): void => { const { onReact, focused, onUnfocus } = this.props; @@ -95,7 +95,7 @@ class EmojiSelector extends ImmutablePureComponent { if (focused) { onUnfocus(); } - } + }; handlers = { open: () => { }, @@ -103,7 +103,7 @@ class EmojiSelector extends ImmutablePureComponent { setRef = (c: HTMLDivElement): void => { this.node = c; - } + }; render() { const { visible, focused, allowedEmoji, onReact } = this.props; diff --git a/app/soapbox/components/error-boundary.tsx b/app/soapbox/components/error-boundary.tsx index 370472cb45..0440de85bb 100644 --- a/app/soapbox/components/error-boundary.tsx +++ b/app/soapbox/components/error-boundary.tsx @@ -42,7 +42,7 @@ class ErrorBoundary extends React.PureComponent { error: undefined, componentStack: undefined, browser: undefined, - } + }; textarea: HTMLTextAreaElement | null = null; @@ -71,7 +71,7 @@ class ErrorBoundary extends React.PureComponent { setTextareaRef: React.RefCallback = c => { this.textarea = c; - } + }; handleCopy: React.MouseEventHandler = () => { if (!this.textarea) return; @@ -80,12 +80,12 @@ class ErrorBoundary extends React.PureComponent { this.textarea.setSelectionRange(0, 99999); document.execCommand('copy'); - } + }; getErrorText = (): string => { const { error, componentStack } = this.state; return error + componentStack; - } + }; clearCookies: React.MouseEventHandler = (e) => { localStorage.clear(); @@ -96,7 +96,7 @@ class ErrorBoundary extends React.PureComponent { e.preventDefault(); unregisterSw().then(goHome).catch(goHome); } - } + }; render() { const { browser, hasError } = this.state; diff --git a/app/soapbox/features/audio/visualizer.ts b/app/soapbox/features/audio/visualizer.ts index 4108790285..541b6210b5 100644 --- a/app/soapbox/features/audio/visualizer.ts +++ b/app/soapbox/features/audio/visualizer.ts @@ -15,10 +15,10 @@ const hex2rgba = (hex: string, alpha = 1) => { export default class Visualizer { - tickSize: number - canvas?: HTMLCanvasElement - context?: CanvasRenderingContext2D - analyser?: AnalyserNode + tickSize: number; + canvas?: HTMLCanvasElement; + context?: CanvasRenderingContext2D; + analyser?: AnalyserNode; constructor(tickSize: number) { this.tickSize = tickSize; diff --git a/app/soapbox/features/ui/components/bundle.tsx b/app/soapbox/features/ui/components/bundle.tsx index f2fe4413db..8d861df752 100644 --- a/app/soapbox/features/ui/components/bundle.tsx +++ b/app/soapbox/features/ui/components/bundle.tsx @@ -32,14 +32,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, - } + }; componentDidMount() { this.load(this.props); @@ -91,7 +91,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/soapbox/features/ui/components/image-loader.tsx b/app/soapbox/features/ui/components/image-loader.tsx index ae60420caa..2340cd3a2c 100644 --- a/app/soapbox/features/ui/components/image-loader.tsx +++ b/app/soapbox/features/ui/components/image-loader.tsx @@ -26,7 +26,7 @@ class ImageLoader extends React.PureComponent { loading: true, error: false, width: null, - } + }; removers: EventRemover[] = []; canvas: HTMLCanvasElement | null = null; @@ -87,7 +87,7 @@ class ImageLoader extends React.PureComponent { image.addEventListener('load', handleLoad); image.src = previewSrc || ''; this.removers.push(removeEventListeners); - }) + }); clearPreviewCanvas() { if (this.canvas && this.canvasContext) { @@ -129,7 +129,7 @@ class ImageLoader extends React.PureComponent { setCanvasRef = (c: HTMLCanvasElement) => { this.canvas = c; if (c) this.setState({ width: c.offsetWidth }); - } + }; render() { const { alt, src, width, height, onClick } = this.props; diff --git a/app/soapbox/features/ui/components/modal-root.tsx b/app/soapbox/features/ui/components/modal-root.tsx index 41f8147eaa..b110df9a44 100644 --- a/app/soapbox/features/ui/components/modal-root.tsx +++ b/app/soapbox/features/ui/components/modal-root.tsx @@ -105,16 +105,16 @@ export default class ModalRoot extends React.PureComponent { renderLoading = (modalId: string) => () => { return !['MEDIA', 'VIDEO', 'BOOST', 'CONFIRM', 'ACTIONS'].includes(modalId) ? : null; - } + }; renderError: React.ComponentType<{ onRetry: (props?: BundleProps) => void }> = (props) => { return ; - } + }; onClickClose = (_?: ModalType) => { const { onClose, type } = this.props; onClose(type); - } + }; render() { const { type, props } = this.props; diff --git a/app/soapbox/features/ui/components/zoomable-image.tsx b/app/soapbox/features/ui/components/zoomable-image.tsx index 84c66e1cbc..63a2b21cc1 100644 --- a/app/soapbox/features/ui/components/zoomable-image.tsx +++ b/app/soapbox/features/ui/components/zoomable-image.tsx @@ -31,7 +31,7 @@ class ZoomableImage extends React.PureComponent { state = { scale: MIN_SCALE, - } + }; container: HTMLDivElement | null = null; image: HTMLImageElement | null = null; @@ -54,7 +54,7 @@ class ZoomableImage extends React.PureComponent { const [p1, p2] = Array.from(e.touches); this.lastDistance = getDistance(p1, p2); - } + }; handleTouchMove = (e: TouchEvent) => { if (!this.container) return; @@ -78,7 +78,7 @@ class ZoomableImage extends React.PureComponent { this.zoom(scale, midpoint); this.lastDistance = distance; - } + }; zoom(nextScale: number, midpoint: Point) { if (!this.container) return; @@ -107,15 +107,15 @@ class ZoomableImage extends React.PureComponent { e.stopPropagation(); const handler = this.props.onClick; if (handler) handler(e); - } + }; setContainerRef = (c: HTMLDivElement) => { this.container = c; - } + }; setImageRef = (c: HTMLImageElement) => { this.image = c; - } + }; render() { const { alt, src } = this.props;