tsconfig: switch to react-jsx transform, update code to not import React directly

This commit is contained in:
Alex Gleason 2024-11-09 16:13:56 -06:00
parent 2532e8964c
commit be3e86eff2
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7
665 changed files with 463 additions and 821 deletions

View File

@ -2,7 +2,6 @@ import alertTriangleIcon from '@tabler/icons/outline/alert-triangle.svg';
import trashIcon from '@tabler/icons/outline/trash.svg';
import userMinusIcon from '@tabler/icons/outline/user-minus.svg';
import userOffIcon from '@tabler/icons/outline/user-off.svg';
import React from 'react';
import { defineMessages, IntlShape } from 'react-intl';
import { fetchAccountByUsername } from 'soapbox/actions/accounts';

View File

@ -1,4 +1,3 @@
import React from 'react';
interface IInlineSVG {
loader?: JSX.Element;

View File

@ -1,7 +1,7 @@
import searchIcon from '@tabler/icons/outline/search.svg';
import xIcon from '@tabler/icons/outline/x.svg';
import clsx from 'clsx';
import React, { useState } from 'react';
import { useState } from 'react';
import { defineMessages, useIntl } from 'react-intl';
import AutosuggestAccountInput from 'soapbox/components/autosuggest-account-input';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { describe, expect, it } from 'vitest';
import { buildAccount } from 'soapbox/jest/factory';

View File

@ -1,5 +1,5 @@
import pencilIcon from '@tabler/icons/outline/pencil.svg';
import React, { useRef, useState } from 'react';
import { useRef, useState } from 'react';
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
import { Link, useHistory } from 'react-router-dom';

View File

@ -1,4 +1,4 @@
import React, { useEffect, useState } from 'react';
import { useEffect, useState } from 'react';
import { FormattedNumber } from 'react-intl';
import { TransitionMotion, spring } from 'react-motion';

View File

@ -1,4 +1,4 @@
import React, { useEffect, useRef } from 'react';
import { useEffect, useRef } from 'react';
import { useHistory } from 'react-router-dom';
import { getTextDirection } from 'soapbox/utils/rtl';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { FormattedDate } from 'react-intl';
import { Stack, Text } from 'soapbox/components/ui';

View File

@ -1,6 +1,6 @@
import clsx from 'clsx';
import { List as ImmutableList, Map as ImmutableMap } from 'immutable';
import React, { useState } from 'react';
import { useState } from 'react';
import { FormattedMessage } from 'react-intl';
import ReactSwipeableViews from 'react-swipeable-views';
import { createSelector } from 'reselect';

View File

@ -1,4 +1,3 @@
import React from 'react';
import unicodeMapping from 'soapbox/features/emoji/mapping';
import { useSettings } from 'soapbox/hooks';

View File

@ -1,5 +1,5 @@
import clsx from 'clsx';
import React, { useState } from 'react';
import { useState } from 'react';
import { useAnnouncements } from 'soapbox/api/hooks/announcements';
import AnimatedNumber from 'soapbox/components/animated-number';

View File

@ -1,5 +1,4 @@
import clsx from 'clsx';
import React from 'react';
import { TransitionMotion, spring } from 'react-motion';
import { useAnnouncements } from 'soapbox/api/hooks/announcements';

View File

@ -1,4 +1,4 @@
import React, { Suspense } from 'react';
import { Suspense } from 'react';
import { openModal } from 'soapbox/actions/modals';
import { MediaGallery } from 'soapbox/features/ui/util/async-components';

View File

@ -2,7 +2,7 @@ import playerStopFilledIcon from '@tabler/icons/filled/player-stop.svg';
import checkIcon from '@tabler/icons/outline/check.svg';
import xIcon from '@tabler/icons/outline/x.svg';
import clsx from 'clsx';
import React, { useEffect, useRef, useState } from 'react';
import { useEffect, useRef, useState } from 'react';
import { FormattedMessage } from 'react-intl';
import { HStack, IconButton, Text } from 'soapbox/components/ui';

View File

@ -1,6 +1,6 @@
import { OrderedSet as ImmutableOrderedSet } from 'immutable';
import throttle from 'lodash/throttle';
import React, { useState, useRef, useCallback, useEffect } from 'react';
import { useState, useRef, useCallback, useEffect } from 'react';
import { accountSearch } from 'soapbox/actions/accounts';
import AutosuggestInput, { AutoSuggestion } from 'soapbox/components/autosuggest-input';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { describe, expect, it } from 'vitest';
import { render, screen } from 'soapbox/jest/test-helpers';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { isCustomEmoji } from 'soapbox/features/emoji';
import unicodeMapping from 'soapbox/features/emoji/mapping';

View File

@ -1,6 +1,6 @@
import clsx from 'clsx';
import { List as ImmutableList } from 'immutable';
import React, { PureComponent } from 'react';
import { PureComponent } from 'react';
import AutosuggestEmoji from 'soapbox/components/autosuggest-emoji';
import Icon from 'soapbox/components/icon';

View File

@ -2,7 +2,6 @@ import buildingCommunityIcon from '@tabler/icons/outline/building-community.svg'
import homeIcon from '@tabler/icons/outline/home-2.svg';
import mapPinIcon from '@tabler/icons/outline/map-pin.svg';
import roadIcon from '@tabler/icons/outline/road.svg';
import React from 'react';
import { useAppSelector } from 'soapbox/hooks';

View File

@ -1,6 +1,5 @@
import clsx from 'clsx';
import { List as ImmutableList, OrderedSet as ImmutableOrderedSet } from 'immutable';
import React from 'react';
import { Avatar, HStack } from 'soapbox/components/ui';
import { useAppSelector } from 'soapbox/hooks';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { describe, expect, it } from 'vitest';
import { render, screen } from 'soapbox/jest/test-helpers';

View File

@ -1,5 +1,5 @@
import clsx from 'clsx';
import React, { useMemo } from 'react';
import { useMemo } from 'react';
import { hexToHsl } from 'soapbox/utils/theme';

View File

@ -1,5 +1,4 @@
import xIcon from '@tabler/icons/outline/x.svg';
import React from 'react';
import { Card, CardBody, Stack, Text } from 'soapbox/components/ui';
import IconButton from 'soapbox/components/ui/icon-button/icon-button';

View File

@ -1,4 +1,4 @@
import React, { useMemo } from 'react';
import { useMemo } from 'react';
import { defineMessages, useIntl } from 'react-intl';
import { useInstance, useFeatures } from 'soapbox/hooks';

View File

@ -1,5 +1,5 @@
import { OrderedSet as ImmutableOrderedSet } from 'immutable';
import React, { useRef } from 'react';
import { useEffect, useRef } from 'react';
import { FormattedMessage } from 'react-intl';
import { fetchBirthdayReminders } from 'soapbox/actions/accounts';
@ -37,7 +37,7 @@ const BirthdayPanel = ({ limit }: IBirthdayPanel) => {
});
};
React.useEffect(() => {
useEffect(() => {
handleFetchBirthdayReminders();
return () => {

View File

@ -1,5 +1,5 @@
import { decode } from 'blurhash';
import React, { useRef, useEffect } from 'react';
import { useRef, useEffect, memo } from 'react';
interface IBlurhash {
/** Hash to render */
@ -56,4 +56,4 @@ const Blurhash: React.FC<IBlurhash> = ({
);
};
export default React.memo(Blurhash);
export default memo(Blurhash);

View File

@ -1,4 +1,4 @@
import React, { useRef } from 'react';
import { useRef } from 'react';
import { FormattedMessage } from 'react-intl';
import { Button, HStack, Input } from './ui';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { useSoapboxConfig } from 'soapbox/hooks';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { describe, expect, it } from 'vitest';
import { buildAccount } from 'soapbox/jest/factory';

View File

@ -1,4 +1,3 @@
import React from 'react';
import HoverRefWrapper from 'soapbox/components/hover-ref-wrapper';
import { useSoapboxConfig } from 'soapbox/hooks';

View File

@ -1,5 +1,4 @@
import lockOpenIcon from '@tabler/icons/outline/lock-open.svg';
import React from 'react';
import { defineMessages, useIntl } from 'react-intl';
import { unblockDomain } from 'soapbox/actions/domain-blocks';

View File

@ -1,5 +1,5 @@
import clsx from 'clsx';
import React, { useEffect, useRef } from 'react';
import { useEffect, useRef } from 'react';
import { useHistory } from 'react-router-dom';
import { Counter, Icon } from '../ui';

View File

@ -2,7 +2,7 @@ import { offset, Placement, useFloating, flip, arrow, shift } from '@floating-ui
import dotsIcon from '@tabler/icons/outline/dots.svg';
import clsx from 'clsx';
import { supportsPassiveEvents } from 'detect-passive-events';
import React, { useEffect, useMemo, useRef, useState } from 'react';
import { cloneElement, useEffect, useMemo, useRef, useState } from 'react';
import { useHistory } from 'react-router-dom';
import { closeDropdownMenu as closeDropdownMenuRedux, openDropdownMenu } from 'soapbox/actions/dropdown-menu';
@ -269,7 +269,7 @@ const DropdownMenu = (props: IDropdownMenu) => {
return (
<>
{children ? (
React.cloneElement(children, {
cloneElement(children, {
disabled,
onClick: handleClick,
onKeyPress: handleKeyPress,

View File

@ -1,4 +1,3 @@
import React from 'react';
import Emoji from 'soapbox/components/ui/emoji/emoji';

View File

@ -1,7 +1,6 @@
import mapPinIcon from '@tabler/icons/outline/map-pin.svg';
import userIcon from '@tabler/icons/outline/user.svg';
import clsx from 'clsx';
import React from 'react';
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
import EventActionButton from 'soapbox/features/event/components/event-action-button';

View File

@ -1,4 +1,4 @@
import React, { useEffect, useRef } from 'react';
import { useEffect, useRef } from 'react';
import { isIOS } from 'soapbox/is-mobile';

View File

@ -6,7 +6,6 @@
*/
import clsx from 'clsx';
import React from 'react';
export interface IForkAwesomeIcon extends React.HTMLAttributes<HTMLLIElement> {
id: string;

View File

@ -1,5 +1,5 @@
import clsx from 'clsx';
import React, { useState } from 'react';
import { useState } from 'react';
import { FormattedMessage } from 'react-intl';
import { Banner, Button, HStack, Stack, Text } from 'soapbox/components/ui';

View File

@ -1,4 +1,3 @@
import React from 'react';
import GroupHeaderImage from 'soapbox/features/group/components/group-header-image';
import GroupMemberCount from 'soapbox/features/group/components/group-member-count';

View File

@ -1,5 +1,4 @@
import clsx from 'clsx';
import React from 'react';
import { GroupRoles } from 'soapbox/schemas/group-member';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { defineMessages, useIntl } from 'react-intl';
import { Link, matchPath, useHistory } from 'react-router-dom';

View File

@ -1,4 +1,3 @@
import React from 'react';
import Link from './link';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { FormattedMessage } from 'react-intl';
import { Link } from 'react-router-dom';
import { Sparklines, SparklinesCurve } from 'react-sparklines';

View File

@ -1,4 +1,4 @@
import React from 'react';
import { useMemo, useEffect } from 'react';
import { Helmet as ReactHelmet } from 'react-helmet';
import { useStatContext } from 'soapbox/contexts/stat-context';
@ -25,7 +25,7 @@ const Helmet: React.FC<IHelmet> = ({ children }) => {
const unreadCount = useAppSelector((state) => getNotifTotals(state) + unreadChatsCount);
const { demetricator } = useSettings();
const hasUnreadNotifications = React.useMemo(() => !(unreadCount < 1 || demetricator), [unreadCount, demetricator]);
const hasUnreadNotifications = useMemo(() => !(unreadCount < 1 || demetricator), [unreadCount, demetricator]);
const addCounter = (string: string) => {
return hasUnreadNotifications ? `(${unreadCount}) ${string}` : string;
@ -39,7 +39,7 @@ const Helmet: React.FC<IHelmet> = ({ children }) => {
}
};
React.useEffect(() => {
useEffect(() => {
updateFaviconBadge();
}, [unreadCount, demetricator]);

View File

@ -1,6 +1,6 @@
import clsx from 'clsx';
import debounce from 'lodash/debounce';
import React, { useRef } from 'react';
import { useRef } from 'react';
import { fetchAccount } from 'soapbox/actions/accounts';
import {

View File

@ -1,6 +1,6 @@
import clsx from 'clsx';
import debounce from 'lodash/debounce';
import React, { useRef } from 'react';
import { useRef } from 'react';
import { useDispatch } from 'react-redux';
import {

View File

@ -1,5 +1,4 @@
import clsx from 'clsx';
import React from 'react';
import Icon from 'soapbox/components/icon';

View File

@ -1,4 +1,3 @@
import React from 'react';
import Icon, { IIcon } from 'soapbox/components/icon';
import { Counter } from 'soapbox/components/ui';

View File

@ -4,7 +4,6 @@
*/
import clsx from 'clsx';
import React from 'react';
import InlineSVG from 'react-inlinesvg'; // eslint-disable-line no-restricted-imports
export interface IIcon extends React.HTMLAttributes<HTMLDivElement> {

View File

@ -1,4 +1,3 @@
import React from 'react';
/** Fullscreen gradient used as a backdrop to public pages. */
const LandingGradient: React.FC = () => (

View File

@ -1,4 +1,3 @@
import React from 'react';
import { Link as Comp, LinkProps } from 'react-router-dom';
const Link = (props: LinkProps) => (

View File

@ -1,7 +1,7 @@
import checkIcon from '@tabler/icons/outline/check.svg';
import chevronRightIcon from '@tabler/icons/outline/chevron-right.svg';
import clsx from 'clsx';
import React from 'react';
import { Children, cloneElement, isValidElement, useCallback } from 'react';
import { Link } from 'react-router-dom';
import { SelectDropdown } from '../features/forms';
@ -38,12 +38,12 @@ const ListItem: React.FC<IListItem> = ({ label, hint, children, to, onClick, onS
const LabelComp = to || onClick || onSelect ? 'span' : 'label';
const renderChildren = React.useCallback(() => {
return React.Children.map(children, (child) => {
if (React.isValidElement(child)) {
const renderChildren = useCallback(() => {
return Children.map(children, (child) => {
if (isValidElement(child)) {
const isSelect = child.type === SelectDropdown || child.type === Select;
return React.cloneElement(child, {
return cloneElement(child, {
// @ts-ignore
id: domId,
className: clsx({

View File

@ -1,5 +1,4 @@
import dotsIcon from '@tabler/icons/outline/dots.svg';
import React from 'react';
import { defineMessages, useIntl } from 'react-intl';
import Icon from 'soapbox/components/icon';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { FormattedMessage } from 'react-intl';
import { Button } from 'soapbox/components/ui';

View File

@ -1,4 +1,3 @@
import React from 'react';
import LandingGradient from 'soapbox/components/landing-gradient';
import { Spinner } from 'soapbox/components/ui';

View File

@ -3,7 +3,7 @@ import searchIcon from '@tabler/icons/outline/search.svg';
import clsx from 'clsx';
import { OrderedSet as ImmutableOrderedSet } from 'immutable';
import throttle from 'lodash/throttle';
import React, { useCallback, useEffect, useRef, useState } from 'react';
import { useCallback, useEffect, useRef, useState } from 'react';
import { defineMessages, useIntl } from 'react-intl';
import { locationSearch } from 'soapbox/actions/events';

View File

@ -1,4 +1,4 @@
import React from 'react';
import { forwardRef } from 'react';
import Text, { IText } from './ui/text/text';
import './markup.css';
@ -7,7 +7,7 @@ interface IMarkup extends IText {
}
/** Styles HTML markup returned by the API, such as in account bios and statuses. */
const Markup = React.forwardRef<any, IMarkup>((props, ref) => {
const Markup = forwardRef<any, IMarkup>((props, ref) => {
return (
<Text ref={ref} {...props} data-markup />
);

View File

@ -1,7 +1,7 @@
import paperclipIcon from '@tabler/icons/outline/paperclip.svg';
import volumeIcon from '@tabler/icons/outline/volume.svg';
import clsx from 'clsx';
import React, { useState, useRef, useLayoutEffect, CSSProperties } from 'react';
import { useState, useRef, useLayoutEffect, CSSProperties } from 'react';
import Blurhash from 'soapbox/components/blurhash';
import StillImage from 'soapbox/components/still-image';
@ -17,7 +17,7 @@ import SvgIcon from './ui/icon/svg-icon';
import type { List as ImmutableList } from 'immutable';
// const Gameboy = React.lazy(() => import('./gameboy'));
// const Gameboy = lazy(() => import('./gameboy'));
const ATTACHMENT_LIMIT = 4;
const MAX_FILENAME_LENGTH = 45;

View File

@ -1,4 +1,3 @@
import React from 'react';
import { Link } from 'react-router-dom';
import { shortenNostr } from 'soapbox/utils/nostr';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { FormattedMessage } from 'react-intl';
import { Card, CardBody, Stack, Text } from './ui';

View File

@ -1,6 +1,6 @@
import trashIcon from '@tabler/icons/outline/trash.svg';
import clsx from 'clsx';
import React, { useCallback, useEffect, useRef, useState } from 'react';
import { useCallback, useEffect, useRef, useState } from 'react';
import { FormattedMessage, defineMessages, useIntl } from 'react-intl';
import { useHistory } from 'react-router-dom';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { Link } from 'react-router-dom';
import { Text } from 'soapbox/components/ui';

View File

@ -1,5 +1,4 @@
import clsx from 'clsx';
import React from 'react';
interface IOutlineBox extends React.HTMLAttributes<HTMLDivElement> {
children: React.ReactNode;

View File

@ -1,7 +1,6 @@
import chevronRightIcon from '@tabler/icons/outline/chevron-right.svg';
import exclamationCircleIcon from '@tabler/icons/outline/exclamation-circle.svg';
import clsx from 'clsx';
import React from 'react';
import { FormattedMessage } from 'react-intl';
import { Link } from 'react-router-dom';

View File

@ -1,6 +1,5 @@
import userEvent from '@testing-library/user-event';
import React from 'react';
import { IntlProvider } from 'react-intl';
import { Provider } from 'react-redux';
import { beforeEach, describe, expect, it } from 'vitest';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
import { fetchPoll, vote } from 'soapbox/actions/polls';

View File

@ -1,7 +1,6 @@
import checkIcon from '@tabler/icons/outline/check.svg';
import circleCheckIcon from '@tabler/icons/outline/circle-check.svg';
import clsx from 'clsx';
import React from 'react';
import { defineMessages, useIntl } from 'react-intl';
import { Motion, presets, spring } from 'react-motion';

View File

@ -1,4 +1,4 @@
import React, { useState } from 'react';
import { useState } from 'react';
import { defineMessages, useIntl } from 'react-intl';
import { openModal } from 'soapbox/actions/modals';

View File

@ -4,7 +4,7 @@ import playerPlayIcon from '@tabler/icons/outline/player-play.svg';
import zoomInIcon from '@tabler/icons/outline/zoom-in.svg';
import clsx from 'clsx';
import { List as ImmutableList } from 'immutable';
import React, { useState, useEffect } from 'react';
import { useState, useEffect } from 'react';
import Blurhash from 'soapbox/components/blurhash';
import { HStack, Stack, Text, Icon } from 'soapbox/components/ui';

View File

@ -1,7 +1,7 @@
import { useFloating } from '@floating-ui/react';
import calendarIcon from '@tabler/icons/outline/calendar.svg';
import clsx from 'clsx';
import React, { useEffect, useState } from 'react';
import { useEffect, useState } from 'react';
import { useIntl, FormattedMessage } from 'react-intl';
import { useHistory } from 'react-router-dom';

View File

@ -1,5 +1,4 @@
import clsx from 'clsx';
import React from 'react';
interface IProgressCircle {
progress: number;

View File

@ -1,4 +1,3 @@
import React from 'react';
import PTRComponent from 'react-simple-pull-to-refresh';
import { Spinner } from 'soapbox/components/ui';

View File

@ -1,4 +1,3 @@
import React from 'react';
import PullToRefresh from './pull-to-refresh';

View File

@ -1,5 +1,5 @@
import quoteIcon from '@tabler/icons/outline/quote.svg';
import React, { useCallback } from 'react';
import { useCallback } from 'react';
import { HStack, Icon, Text } from 'soapbox/components/ui';
import { useAppSelector } from 'soapbox/hooks';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { describe, expect, it } from 'vitest';
import { render, screen, rootState } from 'soapbox/jest/test-helpers';

View File

@ -1,6 +1,6 @@
import xIcon from '@tabler/icons/outline/x.svg';
import clsx from 'clsx';
import React, { MouseEventHandler, useEffect, useRef, useState } from 'react';
import { MouseEventHandler, useEffect, useRef, useState } from 'react';
import { defineMessages, useIntl } from 'react-intl';
import { useHistory } from 'react-router-dom';

View File

@ -1,4 +1,5 @@
import React from 'react';
import { Children, cloneElement } from 'react';
import List, { ListItem } from './list';
@ -8,8 +9,8 @@ interface IRadioGroup {
}
const RadioGroup = ({ onChange, children }: IRadioGroup) => {
const childrenWithProps = React.Children.map(children, child =>
React.cloneElement(child, { onChange }),
const childrenWithProps = Children.map(children, child =>
cloneElement(child, { onChange }),
);
return <List>{childrenWithProps}</List>;

View File

@ -1,4 +1,4 @@
import React from 'react';
import { Component } from 'react';
import { injectIntl, defineMessages, IntlShape, FormatDateOptions } from 'react-intl';
import Text, { IText } from './ui/text/text';
@ -124,7 +124,7 @@ interface RelativeTimestampState {
}
/** Displays a timestamp compared to the current time, eg "1m" for one minute ago. */
class RelativeTimestamp extends React.Component<RelativeTimestampProps, RelativeTimestampState> {
class RelativeTimestamp extends Component<RelativeTimestampProps, RelativeTimestampState> {
_timer: NodeJS.Timeout | undefined;

View File

@ -1,4 +1,4 @@
import React, { useCallback, useEffect, useRef, useState } from 'react';
import { useCallback, useEffect, useRef, useState } from 'react';
interface ISafeEmbed {
/** Styles for the outer frame element. */

View File

@ -1,4 +1,4 @@
import React, { useEffect } from 'react';
import { useEffect } from 'react';
import { useLocation } from 'react-router-dom';
interface IScrollContext {

View File

@ -1,5 +1,4 @@
import React from 'react';
import { defineMessages } from 'react-intl';
import { describe, expect, it } from 'vitest';

View File

@ -1,6 +1,6 @@
import arrowBarToUpIcon from '@tabler/icons/outline/arrow-bar-to-up.svg';
import throttle from 'lodash/throttle';
import React, { useState, useEffect, useCallback } from 'react';
import { useState, useEffect, useCallback } from 'react';
import { useIntl, MessageDescriptor } from 'react-intl';
import { Icon, Text } from 'soapbox/components/ui';

View File

@ -1,5 +1,5 @@
import debounce from 'lodash/debounce';
import React, { useEffect, useRef, useMemo, useCallback } from 'react';
import { useEffect, useRef, useMemo, useCallback, forwardRef } from 'react';
import { useHistory } from 'react-router-dom';
import { Virtuoso, Components, VirtuosoProps, VirtuosoHandle, ListRange, IndexLocationWithAlign } from 'react-virtuoso';
@ -30,7 +30,7 @@ const Item: Components<JSX.Element, Context>['Item'] = ({ context, ...rest }) =>
/** Custom Virtuoso List component for the outer container. */
// Ensure the className winds up here
const List: Components<JSX.Element, Context>['List'] = React.forwardRef((props, ref) => {
const List: Components<JSX.Element, Context>['List'] = forwardRef((props, ref) => {
const { context, ...rest } = props;
return <div ref={ref} className={context?.listClassName} {...rest} />;
});
@ -84,7 +84,7 @@ interface IScrollableList extends VirtuosoProps<any, any> {
}
/** Legacy ScrollableList with Virtuoso for backwards-compatibility. */
const ScrollableList = React.forwardRef<VirtuosoHandle, IScrollableList>(({
const ScrollableList = forwardRef<VirtuosoHandle, IScrollableList>(({
scrollKey,
prepend = null,
alwaysPrepend,

View File

@ -1,4 +1,4 @@
import React, { useState } from 'react';
import { useState } from 'react';
import { FormattedMessage } from 'react-intl';
import { Textarea, Form, Button, FormGroup, FormActions, Text } from 'soapbox/components/ui';

View File

@ -16,9 +16,8 @@ import userPlusIcon from '@tabler/icons/outline/user-plus.svg';
import userIcon from '@tabler/icons/outline/user.svg';
import worldIcon from '@tabler/icons/outline/world.svg';
import xIcon from '@tabler/icons/outline/x.svg';
/* eslint-disable jsx-a11y/interactive-supports-focus */
import clsx from 'clsx';
import React, { useCallback } from 'react';
import { useCallback, useEffect, useRef, useState } from 'react';
import { defineMessages, useIntl, FormattedMessage } from 'react-intl';
import { Link, NavLink } from 'react-router-dom';
@ -110,9 +109,9 @@ const SidebarMenu: React.FC = (): JSX.Element | null => {
const { instance } = useInstance();
const settingsNotifications = useSettingsNotifications();
const closeButtonRef = React.useRef(null);
const closeButtonRef = useRef(null);
const [switcher, setSwitcher] = React.useState(false);
const [switcher, setSwitcher] = useState(false);
const onClose = () => dispatch(closeSidebar());
@ -147,7 +146,7 @@ const SidebarMenu: React.FC = (): JSX.Element | null => {
</a>
);
React.useEffect(() => {
useEffect(() => {
dispatch(fetchOwnAccounts());
}, []);

View File

@ -1,5 +1,5 @@
import clsx from 'clsx';
import React from 'react';
import { forwardRef } from 'react';
import { NavLink, useLocation } from 'react-router-dom';
import { Icon, Text } from './ui';
@ -22,7 +22,7 @@ interface ISidebarNavigationLink {
}
/** Desktop sidebar navigation link. */
const SidebarNavigationLink = React.forwardRef((props: ISidebarNavigationLink, ref: React.ForwardedRef<HTMLAnchorElement>): JSX.Element => {
const SidebarNavigationLink = forwardRef((props: ISidebarNavigationLink, ref: React.ForwardedRef<HTMLAnchorElement>): JSX.Element => {
const { icon, activeIcon, text, to = '', count, countMax, onClick } = props;
const { pathname } = useLocation();

View File

@ -20,7 +20,6 @@ import settingsIcon from '@tabler/icons/outline/settings.svg';
import userPlusIcon from '@tabler/icons/outline/user-plus.svg';
import userIcon from '@tabler/icons/outline/user.svg';
import worldIcon from '@tabler/icons/outline/world.svg';
import React from 'react';
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
import { Stack } from 'soapbox/components/ui';

View File

@ -1,4 +1,4 @@
import React, { type ErrorInfo, useRef, useState } from 'react';
import { type ErrorInfo, useRef, useState } from 'react';
import { ErrorBoundary } from 'react-error-boundary';
import { FormattedMessage } from 'react-intl';

View File

@ -1,5 +1,4 @@
import clsx from 'clsx';
import React from 'react';
import soapboxLogoWhiteSrc from 'soapbox/assets/images/soapbox-logo-white.svg';
import soapboxLogoSrc from 'soapbox/assets/images/soapbox-logo.svg';

View File

@ -30,7 +30,6 @@ import thumbUpIcon from '@tabler/icons/outline/thumb-up.svg';
import trashIcon from '@tabler/icons/outline/trash.svg';
import uploadIcon from '@tabler/icons/outline/upload.svg';
import volume3Icon from '@tabler/icons/outline/volume-3.svg';
import React from 'react';
import { defineMessages, FormattedMessage, useIntl } from 'react-intl';
import { useHistory, useRouteMatch } from 'react-router-dom';

View File

@ -1,5 +1,5 @@
import clsx from 'clsx';
import React from 'react';
import { forwardRef } from 'react';
import { Text, Icon, Emoji } from 'soapbox/components/ui';
import { shortNumberFormat } from 'soapbox/utils/numbers';
@ -38,7 +38,7 @@ interface IStatusActionButton extends React.ButtonHTMLAttributes<HTMLButtonEleme
theme?: 'default' | 'inverse';
}
const StatusActionButton = React.forwardRef<HTMLButtonElement, IStatusActionButton>((props, ref): JSX.Element => {
const StatusActionButton = forwardRef<HTMLButtonElement, IStatusActionButton>((props, ref): JSX.Element => {
const { icon, className, iconClassName, active, color, filled = false, count = 0, emoji, text, theme = 'default', ...filteredProps } = props;
const renderIcon = () => {

View File

@ -1,7 +1,7 @@
import chevronRightIcon from '@tabler/icons/outline/chevron-right.svg';
import clsx from 'clsx';
import parse, { Element, type HTMLReactParserOptions, domToReact, type DOMNode } from 'html-react-parser';
import React, { useState, useRef, useLayoutEffect, useMemo } from 'react';
import { useState, useRef, useLayoutEffect, useMemo, memo } from 'react';
import { FormattedMessage } from 'react-intl';
import Icon from 'soapbox/components/icon';
@ -202,4 +202,4 @@ const StatusContent: React.FC<IStatusContent> = ({
}
};
export default React.memo(StatusContent);
export default memo(StatusContent);

View File

@ -1,6 +1,6 @@
import { useFloating } from '@floating-ui/react';
import clsx from 'clsx';
import React, { useEffect, useState, useCallback } from 'react';
import { useEffect, useState, useCallback } from 'react';
import { useHistory } from 'react-router-dom';
import {

View File

@ -1,6 +1,6 @@
import clsx from 'clsx';
import debounce from 'lodash/debounce';
import React, { useRef, useCallback } from 'react';
import { useRef, useCallback } from 'react';
import { FormattedMessage } from 'react-intl';
import LoadGap from 'soapbox/components/load-gap';

View File

@ -1,4 +1,4 @@
import React, { Suspense } from 'react';
import { Suspense } from 'react';
import { openModal } from 'soapbox/actions/modals';
import AttachmentThumbs from 'soapbox/components/attachment-thumbs';

View File

@ -1,4 +1,4 @@
import React, { useState, useEffect, useRef } from 'react';
import { useState, useEffect, useRef, cloneElement } from 'react';
import { simpleEmojiReact } from 'soapbox/actions/emoji-reacts';
import { openModal } from 'soapbox/actions/modals';
@ -100,7 +100,7 @@ const StatusReactionWrapper: React.FC<IStatusReactionWrapper> = ({ statusId, chi
return (
<div className='relative' onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>
{React.cloneElement(children, {
{cloneElement(children, {
onClick: handleClick,
ref: setReferenceElement,
})}

View File

@ -1,4 +1,3 @@
import React from 'react';
import { FormattedList, FormattedMessage } from 'react-intl';
import { Link } from 'react-router-dom';

View File

@ -1,4 +1,3 @@
import React from 'react';
import { describe, expect, it } from 'vitest';
import { buildAccount } from 'soapbox/jest/factory';

View File

@ -2,7 +2,7 @@ import circlesIcon from '@tabler/icons/outline/circles.svg';
import pinnedIcon from '@tabler/icons/outline/pinned.svg';
import repeatIcon from '@tabler/icons/outline/repeat.svg';
import clsx from 'clsx';
import React, { useEffect, useRef, useState } from 'react';
import { useEffect, useRef, useState } from 'react';
import { useIntl, FormattedMessage, defineMessages } from 'react-intl';
import { Link, useHistory } from 'react-router-dom';

View File

@ -1,6 +1,5 @@
import { Map as ImmutableMap } from 'immutable';
import React from 'react';
import { beforeEach, describe, expect, it } from 'vitest';
import { fireEvent, render, rootState, screen } from 'soapbox/jest/test-helpers';

Some files were not shown because too many files have changed in this diff Show More