Merge branch 'develop' into hooks-migration
This commit is contained in:
commit
ba0fb61374
23 changed files with 259 additions and 244 deletions
5
packages/pl-api/.gitignore
vendored
5
packages/pl-api/.gitignore
vendored
|
@ -7,11 +7,16 @@ yarn-error.log*
|
|||
pnpm-debug.log*
|
||||
lerna-debug.log*
|
||||
|
||||
/.eslintcache
|
||||
|
||||
node_modules
|
||||
dist
|
||||
dist-ssr
|
||||
*.local
|
||||
|
||||
.idea
|
||||
.DS_Store
|
||||
|
||||
# Editor directories and files
|
||||
.vscode/*
|
||||
!.vscode/extensions.json
|
||||
|
|
|
@ -26,7 +26,7 @@ const FIREFISH = 'Firefish';
|
|||
const FRIENDICA = 'Friendica';
|
||||
|
||||
/**
|
||||
* GoToSocial, an ActivityPub server writter in Golang.
|
||||
* GoToSocial, an ActivityPub server written in Golang.
|
||||
* @see {@link https://gotosocial.org/}
|
||||
*/
|
||||
const GOTOSOCIAL = 'GoToSocial';
|
||||
|
@ -518,6 +518,11 @@ const getFeatures = (instance: Instance) => {
|
|||
v.software === MASTODON,
|
||||
]),
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
// followAccountLanguages: any([]),
|
||||
|
||||
/**
|
||||
* Ability to follow hashtags.
|
||||
* @see POST /api/v1/tags/:name/follow
|
||||
|
|
|
@ -21,7 +21,7 @@ interface FollowAccountParams {
|
|||
notify?: boolean;
|
||||
/**
|
||||
* Array of String (ISO 639-1 language two-letter code). Filter received statuses for these languages. If not provided, you will receive this account’s posts in all languages.
|
||||
* Requires `features.followAccountLangugaes`.
|
||||
* Requires `features.followAccountLanguages`.
|
||||
*/
|
||||
languages?: string[];
|
||||
}
|
||||
|
|
7
packages/pl-fe/.gitignore
vendored
7
packages/pl-fe/.gitignore
vendored
|
@ -15,7 +15,6 @@ yarn-error.log*
|
|||
/dist/
|
||||
/static/
|
||||
/public/
|
||||
/dist/
|
||||
/pl-fe.zip
|
||||
|
||||
.idea
|
||||
|
@ -27,9 +26,3 @@ yarn-error.log*
|
|||
/custom/*.*
|
||||
!/custom/.gitkeep
|
||||
!/custom/**/.gitkeep
|
||||
|
||||
# surge.sh
|
||||
/CNAME
|
||||
/AUTH
|
||||
/CORS
|
||||
/ROUTER
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
"lint": "${npm_execpath} run lint:js && ${npm_execpath} run lint:sass",
|
||||
"lint:js": "npx eslint --ext .js,.jsx,.cjs,.mjs,.ts,.tsx . --cache",
|
||||
"lint:sass": "npx stylelint src/styles/**/*.scss",
|
||||
"prepare": "husky install",
|
||||
"precommit": "npx lint-staged"
|
||||
},
|
||||
"license": "AGPL-3.0-or-later",
|
||||
|
@ -56,7 +55,6 @@
|
|||
"@lexical/utils": "^0.18.0",
|
||||
"@mkljczk/lexical-remark": "^0.4.0",
|
||||
"@mkljczk/react-hotkeys": "^1.2.2",
|
||||
"@popperjs/core": "^2.11.5",
|
||||
"@reach/combobox": "^0.18.0",
|
||||
"@reach/menu-button": "^0.18.0",
|
||||
"@reach/popover": "^0.18.0",
|
||||
|
@ -73,8 +71,7 @@
|
|||
"@tanstack/react-virtual": "^3.10.8",
|
||||
"@uidotdev/usehooks": "^2.4.1",
|
||||
"@vitejs/plugin-react": "^4.3.1",
|
||||
"@webbtc/webln-types": "^3.0.0",
|
||||
"autoprefixer": "^10.4.15",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"blurhash": "^2.0.0",
|
||||
"bowser": "^2.11.0",
|
||||
"browserslist": "^4.16.6",
|
||||
|
@ -93,23 +90,22 @@
|
|||
"fuzzysort": "^3.0.0",
|
||||
"graphemesplit": "^2.4.4",
|
||||
"html-react-parser": "^5.0.0",
|
||||
"http-link-header": "^1.0.2",
|
||||
"immer": "^10.1.1",
|
||||
"immutable": "^4.3.7",
|
||||
"intersection-observer": "^0.12.2",
|
||||
"intl-messageformat": "10.5.11",
|
||||
"intl-pluralrules": "^2.0.0",
|
||||
"intl-messageformat": "^10.5.14",
|
||||
"intl-pluralrules": "^2.0.1",
|
||||
"isomorphic-dompurify": "^2.3.0",
|
||||
"leaflet": "^1.8.0",
|
||||
"lexical": "^0.18.0",
|
||||
"line-awesome": "^1.3.0",
|
||||
"localforage": "^1.10.0",
|
||||
"lodash": "^4.17.21",
|
||||
"mini-css-extract-plugin": "^2.6.0",
|
||||
"mini-css-extract-plugin": "^2.9.1",
|
||||
"multiselect-react-dropdown": "^2.0.25",
|
||||
"path-browserify": "^1.0.1",
|
||||
"pl-api": "^0.0.37",
|
||||
"postcss": "^8.4.29",
|
||||
"postcss": "^8.4.47",
|
||||
"process": "^0.11.10",
|
||||
"punycode": "^2.1.1",
|
||||
"qrcode.react": "^4.0.1",
|
||||
|
@ -123,9 +119,8 @@
|
|||
"react-hot-toast": "^2.4.0",
|
||||
"react-immutable-pure-component": "^2.2.2",
|
||||
"react-inlinesvg": "^4.0.0",
|
||||
"react-intl": "^6.0.0",
|
||||
"react-intl": "^6.7.0",
|
||||
"react-motion": "^0.5.2",
|
||||
"react-popper": "^2.3.0",
|
||||
"react-redux": "^9.0.4",
|
||||
"react-router-dom": "^5.3.4",
|
||||
"react-router-dom-v5-compat": "^6.24.1",
|
||||
|
@ -159,7 +154,7 @@
|
|||
"zustand": "^5.0.0-rc.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@formatjs/cli": "^6.2.0",
|
||||
"@formatjs/cli": "^6.2.12",
|
||||
"@gitbeaker/node": "^35.8.0",
|
||||
"@jedmao/redux-mock-store": "^3.0.5",
|
||||
"@stylistic/eslint-plugin": "^2.8.0",
|
||||
|
@ -168,7 +163,6 @@
|
|||
"@testing-library/react-hooks": "^8.0.1",
|
||||
"@testing-library/user-event": "^14.5.1",
|
||||
"@types/escape-html": "^1.0.1",
|
||||
"@types/http-link-header": "^1.0.3",
|
||||
"@types/leaflet": "^1.8.0",
|
||||
"@types/lodash": "^4.17.9",
|
||||
"@types/object-assign": "^4.0.30",
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
// import MockAdapter from 'axios-mock-adapter';
|
||||
import LinkHeader from 'http-link-header';
|
||||
import { vi } from 'vitest';
|
||||
|
||||
const api = await vi.importActual('../index') as Record<string, Function>;
|
||||
|
@ -15,19 +14,6 @@ const __clear = (): Function[] => mocks = [];
|
|||
|
||||
const staticClient = api.staticClient;
|
||||
|
||||
const getLinks = (response: Response): LinkHeader =>
|
||||
new LinkHeader(response.headers?.get('link') || undefined);
|
||||
|
||||
const getNextLink = (response: Response) => {
|
||||
const nextLink = new LinkHeader(response.headers?.get('link') || undefined);
|
||||
return nextLink.refs.find(link => link.rel === 'next')?.uri;
|
||||
};
|
||||
|
||||
const getPrevLink = (response: Response) => {
|
||||
const prevLink = new LinkHeader(response.headers?.get('link') || undefined);
|
||||
return prevLink.refs.find(link => link.rel === 'prev')?.uri;
|
||||
};
|
||||
|
||||
const baseClient = (...params: any[]) => {
|
||||
const axios = api.baseClient(...params);
|
||||
// setupMock(axios);
|
||||
|
@ -40,4 +26,4 @@ export default (...params: any[]) => {
|
|||
return axios;
|
||||
};
|
||||
|
||||
export { __stub, __clear, staticClient, getLinks, getNextLink, getPrevLink, baseClient };
|
||||
export { __stub, __clear, staticClient, baseClient };
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { shift, useFloating, useTransitionStyles } from '@floating-ui/react';
|
||||
import clsx from 'clsx';
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import React, { useEffect } from 'react';
|
||||
import { useIntl, FormattedMessage } from 'react-intl';
|
||||
import { usePopper } from 'react-popper';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
|
||||
import { fetchRelationships } from 'pl-fe/actions/accounts';
|
||||
|
@ -52,8 +52,6 @@ const ProfileHoverCard: React.FC<IProfileHoverCard> = ({ visible = true }) => {
|
|||
const history = useHistory();
|
||||
const intl = useIntl();
|
||||
|
||||
const [popperElement, setPopperElement] = useState<HTMLElement | null>(null);
|
||||
|
||||
const me = useAppSelector(state => state.me);
|
||||
const accountId: string | undefined = useAppSelector(state => state.profile_hover_card.accountId || undefined);
|
||||
const { account } = useAccount(accountId, { withRelationship: true, withScrobble: true });
|
||||
|
@ -75,7 +73,29 @@ const ProfileHoverCard: React.FC<IProfileHoverCard> = ({ visible = true }) => {
|
|||
};
|
||||
}, []);
|
||||
|
||||
const { styles, attributes } = usePopper(targetRef, popperElement);
|
||||
const { x, y, strategy, refs, context, placement } = useFloating({
|
||||
open: !!account,
|
||||
elements: {
|
||||
reference: targetRef,
|
||||
},
|
||||
middleware: [
|
||||
shift({
|
||||
padding: 8,
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
||||
const { styles } = useTransitionStyles(context, {
|
||||
initial: {
|
||||
opacity: 0,
|
||||
transform: 'scale(0.8)',
|
||||
transformOrigin: placement === 'bottom' ? 'top' : 'bottom',
|
||||
},
|
||||
duration: {
|
||||
open: 100,
|
||||
close: 100,
|
||||
},
|
||||
});
|
||||
|
||||
if (!account) return null;
|
||||
const accountBio = { __html: account.note_emojified };
|
||||
|
@ -89,9 +109,13 @@ const ProfileHoverCard: React.FC<IProfileHoverCard> = ({ visible = true }) => {
|
|||
'opacity-100': visible,
|
||||
'opacity-0 pointer-events-none': !visible,
|
||||
})}
|
||||
ref={setPopperElement}
|
||||
style={styles.popper}
|
||||
{...attributes.popper}
|
||||
ref={refs.setFloating}
|
||||
style={{
|
||||
position: strategy,
|
||||
top: y ?? 0,
|
||||
left: x ?? 0,
|
||||
...styles,
|
||||
}}
|
||||
onMouseEnter={handleMouseEnter(dispatch)}
|
||||
onMouseLeave={handleMouseLeave(dispatch)}
|
||||
>
|
||||
|
|
|
@ -190,6 +190,10 @@ const StatusActionBar: React.FC<IStatusActionBar> = ({
|
|||
}
|
||||
};
|
||||
|
||||
const handleFavouriteLongPress = status.favourites_count ? () => {
|
||||
openModal('FAVOURITES', { statusId: status.id });
|
||||
} : undefined;
|
||||
|
||||
const handleDislikeClick: React.EventHandler<React.MouseEvent> = (e) => {
|
||||
if (me) {
|
||||
dispatch(toggleDislike(status));
|
||||
|
@ -198,6 +202,10 @@ const StatusActionBar: React.FC<IStatusActionBar> = ({
|
|||
}
|
||||
};
|
||||
|
||||
const handleDislikeLongPress = status.dislikes_count ? () => {
|
||||
openModal('DISLIKES', { statusId: status.id });
|
||||
} : undefined;
|
||||
|
||||
const handlePickEmoji = (emoji: EmojiType) => {
|
||||
dispatch(emojiReact(status, emoji.custom ? emoji.id : emoji.native, emoji.custom ? emoji.imageUrl : undefined));
|
||||
};
|
||||
|
@ -225,6 +233,10 @@ const StatusActionBar: React.FC<IStatusActionBar> = ({
|
|||
}
|
||||
};
|
||||
|
||||
const handleReblogLongPress = status.reblogs_count ? () => {
|
||||
openModal('REBLOGS', { statusId: status.id });
|
||||
} : undefined;
|
||||
|
||||
const handleQuoteClick: React.EventHandler<React.MouseEvent> = (e) => {
|
||||
if (me) {
|
||||
dispatch(quoteCompose(status));
|
||||
|
@ -670,6 +682,7 @@ const StatusActionBar: React.FC<IStatusActionBar> = ({
|
|||
title={!publicStatus ? intl.formatMessage(messages.cannot_reblog) : intl.formatMessage(messages.reblog)}
|
||||
active={status.reblogged}
|
||||
onClick={handleReblogClick}
|
||||
onLongPress={handleReblogLongPress}
|
||||
count={reblogCount + quoteCount}
|
||||
text={withLabels ? intl.formatMessage(messages.reblog) : undefined}
|
||||
theme={statusActionButtonTheme}
|
||||
|
@ -734,6 +747,7 @@ const StatusActionBar: React.FC<IStatusActionBar> = ({
|
|||
color='accent'
|
||||
filled
|
||||
onClick={handleFavouriteClick}
|
||||
onLongPress={handleFavouriteLongPress}
|
||||
active={status.favourited}
|
||||
count={favouriteCount}
|
||||
text={withLabels ? intl.formatMessage(messages.favourite) : undefined}
|
||||
|
@ -747,6 +761,7 @@ const StatusActionBar: React.FC<IStatusActionBar> = ({
|
|||
color='accent'
|
||||
filled
|
||||
onClick={handleDislikeClick}
|
||||
onLongPress={handleDislikeLongPress}
|
||||
active={status.disliked}
|
||||
count={status.dislikes_count}
|
||||
text={withLabels ? intl.formatMessage(messages.disfavourite) : undefined}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
import { useLongPress } from '@uidotdev/usehooks';
|
||||
import clsx from 'clsx';
|
||||
import React from 'react';
|
||||
|
||||
|
@ -40,10 +41,20 @@ interface IStatusActionButton extends React.ButtonHTMLAttributes<HTMLButtonEleme
|
|||
emoji?: EmojiReaction;
|
||||
text?: React.ReactNode;
|
||||
theme?: 'default' | 'inverse';
|
||||
onLongPress?: (event: Event) => void;
|
||||
}
|
||||
|
||||
const StatusActionButton = React.forwardRef<HTMLButtonElement, IStatusActionButton>((props, ref): JSX.Element => {
|
||||
const { icon, className, iconClassName, active, color, filled = false, count = 0, emoji, text, theme = 'default', ...filteredProps } = props;
|
||||
const { icon, className, iconClassName, active, color, filled = false, count = 0, emoji, text, theme = 'default', onLongPress, ...filteredProps } = props;
|
||||
|
||||
const longPressBind = useLongPress((e) => {
|
||||
if (!onLongPress || e.type !== 'touchstart') return;
|
||||
|
||||
e.stopPropagation();
|
||||
|
||||
if ('vibrate' in navigator) navigator.vibrate(1);
|
||||
onLongPress(e);
|
||||
});
|
||||
|
||||
const renderIcon = () => {
|
||||
if (emoji) {
|
||||
|
@ -100,6 +111,7 @@ const StatusActionButton = React.forwardRef<HTMLButtonElement, IStatusActionButt
|
|||
},
|
||||
className,
|
||||
)}
|
||||
{...longPressBind}
|
||||
{...filteredProps}
|
||||
>
|
||||
{renderIcon()}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
import { shift, useFloating, useTransitionStyles } from '@floating-ui/react';
|
||||
import clsx from 'clsx';
|
||||
import React, { useEffect, useState, useCallback } from 'react';
|
||||
import React, { useEffect, useCallback } from 'react';
|
||||
import { useIntl } from 'react-intl';
|
||||
import { usePopper } from 'react-popper';
|
||||
import { useHistory } from 'react-router-dom';
|
||||
|
||||
import { closeStatusHoverCard, updateStatusHoverCard } from 'pl-fe/actions/status-hover-card';
|
||||
|
@ -22,8 +22,6 @@ const StatusHoverCard: React.FC<IStatusHoverCard> = ({ visible = true }) => {
|
|||
const intl = useIntl();
|
||||
const history = useHistory();
|
||||
|
||||
const [popperElement, setPopperElement] = useState<HTMLElement | null>(null);
|
||||
|
||||
const statusId: string | undefined = useAppSelector(state => state.status_hover_card.statusId || undefined);
|
||||
const status = useAppSelector(state => state.statuses.get(statusId!));
|
||||
const targetRef = useAppSelector(state => state.status_hover_card.ref?.current);
|
||||
|
@ -45,8 +43,29 @@ const StatusHoverCard: React.FC<IStatusHoverCard> = ({ visible = true }) => {
|
|||
};
|
||||
}, []);
|
||||
|
||||
const { styles, attributes } = usePopper(targetRef, popperElement, {
|
||||
const { x, y, strategy, refs, context, placement } = useFloating({
|
||||
open: !!statusId,
|
||||
elements: {
|
||||
reference: targetRef,
|
||||
},
|
||||
placement: 'top',
|
||||
middleware: [
|
||||
shift({
|
||||
padding: 8,
|
||||
}),
|
||||
],
|
||||
});
|
||||
|
||||
const { styles } = useTransitionStyles(context, {
|
||||
initial: {
|
||||
opacity: 0,
|
||||
transform: 'scale(0.8)',
|
||||
transformOrigin: placement === 'bottom' ? 'top' : 'bottom',
|
||||
},
|
||||
duration: {
|
||||
open: 100,
|
||||
close: 100,
|
||||
},
|
||||
});
|
||||
|
||||
const handleMouseEnter = useCallback((): React.MouseEventHandler => () => {
|
||||
|
@ -77,9 +96,13 @@ const StatusHoverCard: React.FC<IStatusHoverCard> = ({ visible = true }) => {
|
|||
'opacity-100': visible,
|
||||
'opacity-0 pointer-events-none': !visible,
|
||||
})}
|
||||
ref={setPopperElement}
|
||||
style={styles.popper}
|
||||
{...attributes.popper}
|
||||
ref={refs.setFloating}
|
||||
style={{
|
||||
position: strategy,
|
||||
top: y ?? 0,
|
||||
left: x ?? 0,
|
||||
...styles,
|
||||
}}
|
||||
onMouseEnter={handleMouseEnter()}
|
||||
onMouseLeave={handleMouseLeave()}
|
||||
>
|
||||
|
|
|
@ -31,7 +31,10 @@ const spaces = {
|
|||
8: 'gap-8',
|
||||
};
|
||||
|
||||
interface IHStack extends Pick<React.HTMLAttributes<HTMLDivElement>, 'children' | 'className' | 'onClick' | 'style' | 'title'> {
|
||||
interface IHStack extends Pick<
|
||||
React.HTMLAttributes<HTMLDivElement>,
|
||||
'children' | 'className' | 'draggable' | 'onClick' | 'onDragEnd' | 'onDragEnter' | 'onDragStart' | 'style' | 'title'
|
||||
> {
|
||||
/** Vertical alignment of children. */
|
||||
alignItems?: keyof typeof alignItemsOptions;
|
||||
/** Horizontal alignment of children. */
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import React from 'react';
|
||||
import React, { useRef } from 'react';
|
||||
import { useIntl, defineMessages } from 'react-intl';
|
||||
|
||||
import Button from '../button/button';
|
||||
|
@ -39,6 +39,8 @@ interface IStreamfield {
|
|||
minItems?: number;
|
||||
/** Maximum number of allowed inputs. */
|
||||
maxItems?: number;
|
||||
/** Allow changing order of the items. */
|
||||
draggable?: boolean;
|
||||
}
|
||||
|
||||
/** List of inputs that can be added or removed. */
|
||||
|
@ -52,9 +54,29 @@ const Streamfield: React.FC<IStreamfield> = ({
|
|||
component: Component,
|
||||
maxItems = Infinity,
|
||||
minItems = 0,
|
||||
draggable,
|
||||
}) => {
|
||||
const intl = useIntl();
|
||||
|
||||
const dragItem = useRef<number | null>();
|
||||
const dragOverItem = useRef<number | null>();
|
||||
|
||||
const handleDragStart = (i: number) => () => {
|
||||
dragItem.current = i;
|
||||
};
|
||||
|
||||
const handleDragEnter = (i: number) => () => {
|
||||
dragOverItem.current = i;
|
||||
};
|
||||
|
||||
const handleDragEnd = () => {
|
||||
const newData = [...values];
|
||||
const item = newData.splice(dragItem.current!, 1)[0];
|
||||
newData.splice(dragOverItem.current!, 0, item);
|
||||
|
||||
onChange(newData);
|
||||
};
|
||||
|
||||
const handleChange = (i: number) => (value: any) => {
|
||||
const newData = [...values];
|
||||
newData[i] = value;
|
||||
|
@ -71,7 +93,15 @@ const Streamfield: React.FC<IStreamfield> = ({
|
|||
{(values.length > 0) && (
|
||||
<Stack space={1}>
|
||||
{values.map((value, i) => value?._destroy ? null : (
|
||||
<HStack key={i} space={2} alignItems='center'>
|
||||
<HStack
|
||||
key={i}
|
||||
space={2}
|
||||
alignItems='center'
|
||||
draggable={draggable}
|
||||
onDragStart={handleDragStart(i)}
|
||||
onDragEnter={handleDragEnter(i)}
|
||||
onDragEnd={handleDragEnd}
|
||||
>
|
||||
<Component
|
||||
key={i}
|
||||
index={i}
|
||||
|
|
|
@ -26,7 +26,7 @@ const WidgetBody: React.FC<IWidgetBody> = ({ children }): JSX.Element => (
|
|||
|
||||
interface IWidget {
|
||||
/** Widget title text. */
|
||||
title: React.ReactNode;
|
||||
title?: React.ReactNode;
|
||||
/** Callback when the widget action is clicked. */
|
||||
onActionClick?: () => void;
|
||||
/** URL to the svg icon for the widget action. */
|
||||
|
@ -47,17 +47,19 @@ const Widget: React.FC<IWidget> = ({
|
|||
action,
|
||||
}): JSX.Element => (
|
||||
<Stack space={4}>
|
||||
<HStack space={2} alignItems='center' justifyContent='between'>
|
||||
<WidgetTitle title={title} />
|
||||
{action || (onActionClick && (
|
||||
<IconButton
|
||||
className='ml-2 size-6 text-black dark:text-white rtl:rotate-180'
|
||||
src={actionIcon}
|
||||
onClick={onActionClick}
|
||||
title={actionTitle}
|
||||
/>
|
||||
))}
|
||||
</HStack>
|
||||
{title || action || onActionClick && (
|
||||
<HStack space={2} alignItems='center' justifyContent='between'>
|
||||
{title && <WidgetTitle title={title} />}
|
||||
{action || (onActionClick && (
|
||||
<IconButton
|
||||
className='ml-2 size-6 text-black dark:text-white rtl:rotate-180'
|
||||
src={actionIcon}
|
||||
onClick={onActionClick}
|
||||
title={actionTitle}
|
||||
/>
|
||||
))}
|
||||
</HStack>
|
||||
)}
|
||||
<WidgetBody>{children}</WidgetBody>
|
||||
</Stack>
|
||||
);
|
||||
|
|
|
@ -70,7 +70,7 @@ const AccountCard: React.FC<IAccountCard> = ({ id }) => {
|
|||
<Text
|
||||
truncate
|
||||
align='left'
|
||||
className='line-clamp-2 [&_br]:hidden [&_p:first-child]:inline [&_p:first-child]:truncate [&_p]:hidden'
|
||||
className='line-clamp-2 inline text-ellipsis [&_br]:hidden [&_p:first-child]:inline [&_p:first-child]:truncate [&_p]:hidden'
|
||||
dangerouslySetInnerHTML={{ __html: account.note_emojified || ' ' }}
|
||||
/>
|
||||
</Stack>
|
||||
|
|
|
@ -54,8 +54,6 @@ const DraftStatus: React.FC<IDraftStatus> = ({ draftStatus, ...other }) => {
|
|||
<Account
|
||||
key={account.id}
|
||||
account={account}
|
||||
timestamp={status.created_at}
|
||||
futureTimestamp
|
||||
action={<DraftStatusActionBar source={draftStatus} status={status} {...other} />}
|
||||
/>
|
||||
</HStack>
|
||||
|
|
|
@ -452,6 +452,7 @@ const EditProfile: React.FC = () => {
|
|||
onRemoveItem={handleRemoveField}
|
||||
component={ProfileField}
|
||||
maxItems={maxFields}
|
||||
draggable
|
||||
/>
|
||||
)}
|
||||
|
||||
|
|
|
@ -288,6 +288,7 @@ const PlFeConfig: React.FC = () => {
|
|||
onChange={handleStreamItemChange(['promoPanel', 'items'])}
|
||||
onAddItem={addStreamItem(['promoPanel', 'items'], templates.promoPanel)}
|
||||
onRemoveItem={deleteStreamItem(['promoPanel', 'items'])}
|
||||
draggable
|
||||
/>
|
||||
|
||||
<Streamfield
|
||||
|
@ -298,6 +299,7 @@ const PlFeConfig: React.FC = () => {
|
|||
onChange={handleStreamItemChange(['navlinks', 'homeFooter'])}
|
||||
onAddItem={addStreamItem(['navlinks', 'homeFooter'], templates.footerItem)}
|
||||
onRemoveItem={deleteStreamItem(['navlinks', 'homeFooter'])}
|
||||
draggable
|
||||
/>
|
||||
|
||||
<FormGroup labelText={intl.formatMessage(messages.copyrightFooterLabel)}>
|
||||
|
@ -347,6 +349,7 @@ const PlFeConfig: React.FC = () => {
|
|||
onChange={handleStreamItemChange(['cryptoAddresses'])}
|
||||
onAddItem={addStreamItem(['cryptoAddresses'], templates.cryptoAddress)}
|
||||
onRemoveItem={deleteStreamItem(['cryptoAddresses'])}
|
||||
draggable
|
||||
/>
|
||||
|
||||
<FormGroup labelText={intl.formatMessage(messages.cryptoDonatePanelLimitLabel)}>
|
||||
|
|
|
@ -20,15 +20,15 @@ const StatusInteractionBar: React.FC<IStatusInteractionBar> = ({ status }): JSX.
|
|||
|
||||
if (!account || typeof account !== 'object') return null;
|
||||
|
||||
const onOpenReblogsModal = (username: string, statusId: string): void => {
|
||||
const onOpenReblogsModal = (statusId: string): void => {
|
||||
openModal('REBLOGS', { statusId });
|
||||
};
|
||||
|
||||
const onOpenFavouritesModal = (username: string, statusId: string): void => {
|
||||
const onOpenFavouritesModal = (statusId: string): void => {
|
||||
openModal('FAVOURITES', { statusId });
|
||||
};
|
||||
|
||||
const onOpenDislikesModal = (username: string, statusId: string): void => {
|
||||
const onOpenDislikesModal = (statusId: string): void => {
|
||||
openModal('DISLIKES', { statusId });
|
||||
};
|
||||
|
||||
|
@ -36,7 +36,7 @@ const StatusInteractionBar: React.FC<IStatusInteractionBar> = ({ status }): JSX.
|
|||
e.preventDefault();
|
||||
|
||||
// if (!me) onOpenUnauthorizedModal();
|
||||
onOpenReblogsModal(account.acct, status.id);
|
||||
onOpenReblogsModal(status.id);
|
||||
};
|
||||
|
||||
const getReposts = () => {
|
||||
|
@ -75,14 +75,14 @@ const StatusInteractionBar: React.FC<IStatusInteractionBar> = ({ status }): JSX.
|
|||
e.preventDefault();
|
||||
|
||||
// if (!me) onOpenUnauthorizedModal();
|
||||
onOpenFavouritesModal(account.acct, status.id);
|
||||
onOpenFavouritesModal(status.id);
|
||||
};
|
||||
|
||||
const handleOpenDislikesModal: React.EventHandler<React.MouseEvent<HTMLButtonElement>> = (e) => {
|
||||
e.preventDefault();
|
||||
|
||||
// if (!me) onOpenUnauthorizedModal();
|
||||
onOpenDislikesModal(account.acct, status.id);
|
||||
onOpenDislikesModal(status.id);
|
||||
};
|
||||
|
||||
const getFavourites = () => {
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import React from 'react';
|
||||
import { FormattedMessage } from 'react-intl';
|
||||
|
||||
import { Widget, Stack } from 'pl-fe/components/ui';
|
||||
|
||||
|
@ -13,7 +12,7 @@ interface IProfileFieldsPanel {
|
|||
|
||||
/** Custom profile fields for sidebar. */
|
||||
const ProfileFieldsPanel: React.FC<IProfileFieldsPanel> = ({ account }) => (
|
||||
<Widget title={<FormattedMessage id='profile_fields_panel.title' defaultMessage='Profile fields' />}>
|
||||
<Widget>
|
||||
<Stack space={4}>
|
||||
{account.fields.map((field, i) => (
|
||||
<ProfileField field={field} key={i} />
|
||||
|
|
|
@ -1288,7 +1288,6 @@
|
|||
"profile_dropdown.logout": "Log out @{acct}",
|
||||
"profile_dropdown.switch_account": "Switch accounts",
|
||||
"profile_dropdown.theme": "Theme",
|
||||
"profile_fields_panel.title": "Profile fields",
|
||||
"reactions.all": "All",
|
||||
"regeneration_indicator.label": "Loading…",
|
||||
"regeneration_indicator.sublabel": "Your home feed is being prepared!",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
.detailed,
|
||||
.fullscreen {
|
||||
.video-player__volume__currnt,
|
||||
.video-player__volume__current,
|
||||
.video-player__volume::before {
|
||||
bottom: 27px;
|
||||
}
|
||||
|
|
|
@ -24,8 +24,7 @@
|
|||
"types": [
|
||||
"vite/client",
|
||||
"vitest/globals",
|
||||
"vite-plugin-compile-time/client",
|
||||
"@webbtc/webln-types"
|
||||
"vite-plugin-compile-time/client"
|
||||
],
|
||||
},
|
||||
"exclude": ["src/**/*.test.ts", "src/**/*.test.tsx"]
|
||||
|
|
|
@ -1488,26 +1488,10 @@
|
|||
resolved "https://registry.yarnpkg.com/@fontsource/tajawal/-/tajawal-5.0.8.tgz#cd8a593ec5062b283b093b56ee5d38b6b97fa93d"
|
||||
integrity sha512-KILlXB6B8YYcssz3pccPs/4s1XcXwTWogCtE4Ag3oTpK+81DIQLc2b9o77UiBP4yC17MmqeOp1lvoaJQP80RoA==
|
||||
|
||||
"@formatjs/cli@^6.2.0":
|
||||
version "6.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/cli/-/cli-6.2.0.tgz#17fbd40753eeb1f6e79c3caf25845c3a9c044d90"
|
||||
integrity sha512-sP04UpocRHYwSovUnunAZHYvCTVbNcaLtWKnr1lETGRUnRRQqnXy/3d2Ce271ELXmNUSde2eHRdu4rv2XaVaiQ==
|
||||
|
||||
"@formatjs/ecma402-abstract@1.17.2":
|
||||
version "1.17.2"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.17.2.tgz#d197c6e26b9fd96ff7ba3b3a0cc2f25f1f2dcac3"
|
||||
integrity sha512-k2mTh0m+IV1HRdU0xXM617tSQTi53tVR2muvYOsBeYcUgEAyxV1FOC7Qj279th3fBVQ+Dj6muvNJZcHSPNdbKg==
|
||||
dependencies:
|
||||
"@formatjs/intl-localematcher" "0.4.2"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@formatjs/ecma402-abstract@1.18.2":
|
||||
version "1.18.2"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-1.18.2.tgz#bf103712a406874eb1e387858d5be2371ab3aa14"
|
||||
integrity sha512-+QoPW4csYALsQIl8GbN14igZzDbuwzcpWrku9nyMXlaqAlwRBgl5V+p0vWMGFqHOw37czNXaP/lEk4wbLgcmtA==
|
||||
dependencies:
|
||||
"@formatjs/intl-localematcher" "0.5.4"
|
||||
tslib "^2.4.0"
|
||||
"@formatjs/cli@^6.2.12":
|
||||
version "6.2.12"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/cli/-/cli-6.2.12.tgz#5295e4f6351ed563bcd49fb6479905165098bcd4"
|
||||
integrity sha512-bt1NEgkeYN8N9zWcpsPu3fZ57vv+biA+NtIQBlyOZnCp1bcvh+vNTXvmwF4C5qxqDtCylpOIb3yi3Ktgp4v0JQ==
|
||||
|
||||
"@formatjs/ecma402-abstract@2.0.0":
|
||||
version "2.0.0"
|
||||
|
@ -1524,24 +1508,6 @@
|
|||
dependencies:
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@formatjs/icu-messageformat-parser@2.6.2":
|
||||
version "2.6.2"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.6.2.tgz#9bbb29099416e4ce2c7df50029c48985d4f901b3"
|
||||
integrity sha512-nF/Iww7sc5h+1MBCDRm68qpHTCG4xvGzYs/x9HFcDETSGScaJ1Fcadk5U/NXjXeCtzD+DhN4BAwKFVclHfKMdA==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.17.2"
|
||||
"@formatjs/icu-skeleton-parser" "1.6.2"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@formatjs/icu-messageformat-parser@2.7.6":
|
||||
version "2.7.6"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.6.tgz#3d69806de056d2919d53dad895a5ff4851e4e9ff"
|
||||
integrity sha512-etVau26po9+eewJKYoiBKP6743I1br0/Ie00Pb/S/PtmYfmjTcOn2YCh2yNkSZI12h6Rg+BOgQYborXk46BvkA==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.18.2"
|
||||
"@formatjs/icu-skeleton-parser" "1.8.0"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@formatjs/icu-messageformat-parser@2.7.8":
|
||||
version "2.7.8"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz#f6d7643001e9bb5930d812f1f9a9856f30fa0343"
|
||||
|
@ -1551,22 +1517,6 @@
|
|||
"@formatjs/icu-skeleton-parser" "1.8.2"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@formatjs/icu-skeleton-parser@1.6.2":
|
||||
version "1.6.2"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.6.2.tgz#00303034dc08583973c8aa67b96534c49c0bad8d"
|
||||
integrity sha512-VtB9Slo4ZL6QgtDFJ8Injvscf0xiDd4bIV93SOJTBjUF4xe2nAWOoSjLEtqIG+hlIs1sNrVKAaFo3nuTI4r5ZA==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.17.2"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@formatjs/icu-skeleton-parser@1.8.0":
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.0.tgz#5f3d3a620c687d6f8c180d80d1241e8f213acf79"
|
||||
integrity sha512-QWLAYvM0n8hv7Nq5BEs4LKIjevpVpbGLAJgOaYzg9wABEoX1j0JO1q2/jVkO6CVlq0dbsxZCngS5aXbysYueqA==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.18.2"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@formatjs/icu-skeleton-parser@1.8.2":
|
||||
version "1.8.2"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz#2252c949ae84ee66930e726130ea66731a123c9f"
|
||||
|
@ -1575,29 +1525,22 @@
|
|||
"@formatjs/ecma402-abstract" "2.0.0"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@formatjs/intl-displaynames@6.5.2":
|
||||
version "6.5.2"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-6.5.2.tgz#b14ffd0962d5b5cfd71457efc389f0bca83a00db"
|
||||
integrity sha512-uC2VBlz+WydGTDDpJwMTQuPH3CUpTricr91WH1QMfz5oEHg2sB7mUERcZONE/lu8MOe1jREIx4vBciZEVTqkmA==
|
||||
"@formatjs/intl-displaynames@6.6.8":
|
||||
version "6.6.8"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-displaynames/-/intl-displaynames-6.6.8.tgz#2f5afac8df83167f5a6ef8543600eaf1ef99c885"
|
||||
integrity sha512-Lgx6n5KxN16B3Pb05z3NLEBQkGoXnGjkTBNCZI+Cn17YjHJ3fhCeEJJUqRlIZmJdmaXQhjcQVDp6WIiNeRYT5g==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.17.2"
|
||||
"@formatjs/intl-localematcher" "0.4.2"
|
||||
"@formatjs/ecma402-abstract" "2.0.0"
|
||||
"@formatjs/intl-localematcher" "0.5.4"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@formatjs/intl-listformat@7.4.2":
|
||||
version "7.4.2"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-7.4.2.tgz#c8d86d3b15eead41f74748d1c79d6450fd1bad82"
|
||||
integrity sha512-+6bSVudEQkf12Hh7kuKt8Xv/MyFlqdwA4V4NLnTZW8uYdF9RxlOELDD0rPaOc2++TMKIzI5o6XXwHPvpL6VrPA==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.17.2"
|
||||
"@formatjs/intl-localematcher" "0.4.2"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@formatjs/intl-localematcher@0.4.2":
|
||||
version "0.4.2"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.4.2.tgz#7e6e596dbaf2f0c5a7c22da5a01d5c55f4c37e9a"
|
||||
integrity sha512-BGdtJFmaNJy5An/Zan4OId/yR9Ih1OojFjcduX/xOvq798OgWSyDtd6Qd5jqJXwJs1ipe4Fxu9+cshic5Ox2tA==
|
||||
"@formatjs/intl-listformat@7.5.7":
|
||||
version "7.5.7"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl-listformat/-/intl-listformat-7.5.7.tgz#125e05105fabd1ae5f11881d6ab74484f2098ee4"
|
||||
integrity sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "2.0.0"
|
||||
"@formatjs/intl-localematcher" "0.5.4"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@formatjs/intl-localematcher@0.5.4":
|
||||
|
@ -1607,17 +1550,17 @@
|
|||
dependencies:
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@formatjs/intl@2.9.3":
|
||||
version "2.9.3"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-2.9.3.tgz#e570c4b1afb173dfb1f80a42624425dde9841329"
|
||||
integrity sha512-hclPdyCF1zk2XmhgdXfl5Sd30QEdRBnIijH7Vc1AWz2K0/saVRrxuL3UYn+m3xEyfOa4yDbTWVbmXDL0XEzlsQ==
|
||||
"@formatjs/intl@2.10.5":
|
||||
version "2.10.5"
|
||||
resolved "https://registry.yarnpkg.com/@formatjs/intl/-/intl-2.10.5.tgz#1a83960fc1871f476385e006f2fee23cc439f416"
|
||||
integrity sha512-f9qPNNgLrh2KvoFvHGIfcPTmNGbyy7lyyV4/P6JioDqtTE7Akdmgt+ZzVndr+yMLZnssUShyTMXxM/6aV9eVuQ==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.17.2"
|
||||
"@formatjs/ecma402-abstract" "2.0.0"
|
||||
"@formatjs/fast-memoize" "2.2.0"
|
||||
"@formatjs/icu-messageformat-parser" "2.6.2"
|
||||
"@formatjs/intl-displaynames" "6.5.2"
|
||||
"@formatjs/intl-listformat" "7.4.2"
|
||||
intl-messageformat "10.5.3"
|
||||
"@formatjs/icu-messageformat-parser" "2.7.8"
|
||||
"@formatjs/intl-displaynames" "6.6.8"
|
||||
"@formatjs/intl-listformat" "7.5.7"
|
||||
intl-messageformat "10.5.14"
|
||||
tslib "^2.4.0"
|
||||
|
||||
"@formatjs/ts-transformer@3.13.14":
|
||||
|
@ -2103,11 +2046,6 @@
|
|||
resolved "https://registry.yarnpkg.com/@pkgr/core/-/core-0.1.1.tgz#1ec17e2edbec25c8306d424ecfbf13c7de1aaa31"
|
||||
integrity sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==
|
||||
|
||||
"@popperjs/core@^2.11.5":
|
||||
version "2.11.5"
|
||||
resolved "https://registry.yarnpkg.com/@popperjs/core/-/core-2.11.5.tgz#db5a11bf66bdab39569719555b0f76e138d7bd64"
|
||||
integrity sha512-9X2obfABZuDVLCgPK9aX0a/x4jaOEweTTWE2+9sr0Qqqevj2Uv5XorvusThmc9XGYpS9yI+fhh8RTafBtGposw==
|
||||
|
||||
"@prettier/eslint@npm:prettier-eslint@^15.0.1":
|
||||
version "15.0.1"
|
||||
resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-15.0.1.tgz#2543a43e9acec2a9767ad6458165ce81f353db9c"
|
||||
|
@ -2813,13 +2751,6 @@
|
|||
resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812"
|
||||
integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==
|
||||
|
||||
"@types/http-link-header@^1.0.3":
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/@types/http-link-header/-/http-link-header-1.0.3.tgz#899adf1d8d2036074514f3dbd148fb901ceff920"
|
||||
integrity sha512-y8HkoD/vyid+5MrJ3aas0FvU3/BVBGcyG9kgxL0Zn4JwstA8CglFPnrR0RuzOjRCXwqzL5uxWC2IO7Ub0rMU2A==
|
||||
dependencies:
|
||||
"@types/node" "*"
|
||||
|
||||
"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
|
||||
version "7.0.13"
|
||||
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.13.tgz#02c24f4363176d2d18fc8b70b9f3c54aba178a85"
|
||||
|
@ -3504,11 +3435,6 @@
|
|||
"@webassemblyjs/ast" "1.11.6"
|
||||
"@xtuc/long" "4.2.2"
|
||||
|
||||
"@webbtc/webln-types@^3.0.0":
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/@webbtc/webln-types/-/webln-types-3.0.0.tgz#448b2138423865087ba8859e9e6430fc2463b864"
|
||||
integrity sha512-aXfTHLKz5lysd+6xTeWl+qHNh/p3qVYbeLo+yDN5cUDmhie2ZoGvkppfWxzbGkcFBzb6dJyQ2/i2cbmDHas+zQ==
|
||||
|
||||
"@xtuc/ieee754@^1.2.0":
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
|
||||
|
@ -3964,16 +3890,16 @@ at-least-node@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2"
|
||||
integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==
|
||||
|
||||
autoprefixer@^10.4.15:
|
||||
version "10.4.15"
|
||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.15.tgz#a1230f4aeb3636b89120b34a1f513e2f6834d530"
|
||||
integrity sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==
|
||||
autoprefixer@^10.4.20:
|
||||
version "10.4.20"
|
||||
resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.20.tgz#5caec14d43976ef42e32dcb4bd62878e96be5b3b"
|
||||
integrity sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==
|
||||
dependencies:
|
||||
browserslist "^4.21.10"
|
||||
caniuse-lite "^1.0.30001520"
|
||||
fraction.js "^4.2.0"
|
||||
browserslist "^4.23.3"
|
||||
caniuse-lite "^1.0.30001646"
|
||||
fraction.js "^4.3.7"
|
||||
normalize-range "^0.1.2"
|
||||
picocolors "^1.0.0"
|
||||
picocolors "^1.0.1"
|
||||
postcss-value-parser "^4.2.0"
|
||||
|
||||
available-typed-arrays@^1.0.5:
|
||||
|
@ -4169,6 +4095,16 @@ browserslist@^4.23.1:
|
|||
node-releases "^2.0.18"
|
||||
update-browserslist-db "^1.1.0"
|
||||
|
||||
browserslist@^4.23.3:
|
||||
version "4.24.0"
|
||||
resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.24.0.tgz#a1325fe4bc80b64fda169629fc01b3d6cecd38d4"
|
||||
integrity sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==
|
||||
dependencies:
|
||||
caniuse-lite "^1.0.30001663"
|
||||
electron-to-chromium "^1.5.28"
|
||||
node-releases "^2.0.18"
|
||||
update-browserslist-db "^1.1.0"
|
||||
|
||||
buffer-equal-constant-time@1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819"
|
||||
|
@ -4291,7 +4227,7 @@ caniuse-api@^3.0.0:
|
|||
lodash.memoize "^4.1.2"
|
||||
lodash.uniq "^4.5.0"
|
||||
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001517, caniuse-lite@^1.0.30001520:
|
||||
caniuse-lite@^1.0.0, caniuse-lite@^1.0.30001517:
|
||||
version "1.0.30001660"
|
||||
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz"
|
||||
integrity sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==
|
||||
|
@ -4301,6 +4237,11 @@ caniuse-lite@^1.0.30001639, caniuse-lite@^1.0.30001646:
|
|||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz#3574b22dfec54a3f3b6787331da1040fe8e763ec"
|
||||
integrity sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA==
|
||||
|
||||
caniuse-lite@^1.0.30001663:
|
||||
version "1.0.30001664"
|
||||
resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001664.tgz#d588d75c9682d3301956b05a3749652a80677df4"
|
||||
integrity sha512-AmE7k4dXiNKQipgn7a2xg558IRqPN3jMQY/rOsbxDhrd0tyChwbITBfiwtnqz8bi2M5mIWbxAYBvk7W7QBUS2g==
|
||||
|
||||
chai@^5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/chai/-/chai-5.1.1.tgz#f035d9792a22b481ead1c65908d14bb62ec1c82c"
|
||||
|
@ -5228,6 +5169,11 @@ electron-to-chromium@^1.4.477:
|
|||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.519.tgz#01b9bc3f1bb50c4971bdd1eeca6d9a73575bd581"
|
||||
integrity sha512-kqs9oGYL4UFVkLKhqCTgBCYZv+wZ374yABDMqlDda9HvlkQxvSr7kgf4hfWVjMieDbX+1MwPHFBsOGCMIBaFKg==
|
||||
|
||||
electron-to-chromium@^1.5.28:
|
||||
version "1.5.29"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.29.tgz#aa592a3caa95d07cc26a66563accf99fa573a1ee"
|
||||
integrity sha512-PF8n2AlIhCKXQ+gTpiJi0VhcHDb69kYX4MtCiivctc2QD3XuNZ/XIOlbGzt7WAjjEev0TtaH6Cu3arZExm5DOw==
|
||||
|
||||
electron-to-chromium@^1.5.4:
|
||||
version "1.5.27"
|
||||
resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.27.tgz#5203ce5d6054857d84ba84d3681cbe59132ade78"
|
||||
|
@ -6505,10 +6451,10 @@ forwarded@0.2.0:
|
|||
resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
|
||||
integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
|
||||
|
||||
fraction.js@^4.2.0:
|
||||
version "4.3.6"
|
||||
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.6.tgz#e9e3acec6c9a28cf7bc36cbe35eea4ceb2c5c92d"
|
||||
integrity sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==
|
||||
fraction.js@^4.3.7:
|
||||
version "4.3.7"
|
||||
resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7"
|
||||
integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==
|
||||
|
||||
fresh@0.5.2:
|
||||
version "0.5.2"
|
||||
|
@ -7022,11 +6968,6 @@ http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3:
|
|||
setprototypeof "1.1.0"
|
||||
statuses ">= 1.4.0 < 2"
|
||||
|
||||
http-link-header@^1.0.2:
|
||||
version "1.0.3"
|
||||
resolved "https://registry.yarnpkg.com/http-link-header/-/http-link-header-1.0.3.tgz#abbc2cdc5e06dd7e196a4983adac08a2d085ec90"
|
||||
integrity sha512-nARK1wSKoBBrtcoESlHBx36c1Ln/gnbNQi1eB6MeTUefJIT3NvUOsV15bClga0k38f0q/kN5xxrGSDS3EFnm9w==
|
||||
|
||||
http-link-header@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/http-link-header/-/http-link-header-1.1.3.tgz#b367b7a0ad1cf14027953f31aa1df40bb433da2a"
|
||||
|
@ -7194,27 +7135,17 @@ intersection-observer@^0.12.2:
|
|||
resolved "https://registry.yarnpkg.com/intersection-observer/-/intersection-observer-0.12.2.tgz#4a45349cc0cd91916682b1f44c28d7ec737dc375"
|
||||
integrity sha512-7m1vEcPCxXYI8HqnL8CKI6siDyD+eIWSwgB3DZA+ZTogxk9I4CDnj4wilt9x/+/QbHI4YG5YZNmC6458/e9Ktg==
|
||||
|
||||
intl-messageformat@10.5.11:
|
||||
version "10.5.11"
|
||||
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.11.tgz#95d6a3b0b303f924d5d8c3f8d3ad057d1dc73c64"
|
||||
integrity sha512-eYq5fkFBVxc7GIFDzpFQkDOZgNayNTQn4Oufe8jw6YY6OHVw70/4pA3FyCsQ0Gb2DnvEJEMmN2tOaXUGByM+kg==
|
||||
intl-messageformat@10.5.14, intl-messageformat@^10.5.14:
|
||||
version "10.5.14"
|
||||
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.14.tgz#e5bb373f8a37b88fbe647d7b941f3ab2a37ed00a"
|
||||
integrity sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.18.2"
|
||||
"@formatjs/ecma402-abstract" "2.0.0"
|
||||
"@formatjs/fast-memoize" "2.2.0"
|
||||
"@formatjs/icu-messageformat-parser" "2.7.6"
|
||||
"@formatjs/icu-messageformat-parser" "2.7.8"
|
||||
tslib "^2.4.0"
|
||||
|
||||
intl-messageformat@10.5.3:
|
||||
version "10.5.3"
|
||||
resolved "https://registry.yarnpkg.com/intl-messageformat/-/intl-messageformat-10.5.3.tgz#db0779d4a1988faa2977d76574489b7a25f0d5d0"
|
||||
integrity sha512-TzKn1uhJBMyuKTO4zUX47SU+d66fu1W9tVzIiZrQ6hBqQQeYscBMIzKL/qEXnFbJrH9uU5VV3+T5fWib4SIcKA==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.17.2"
|
||||
"@formatjs/fast-memoize" "2.2.0"
|
||||
"@formatjs/icu-messageformat-parser" "2.6.2"
|
||||
tslib "^2.4.0"
|
||||
|
||||
intl-pluralrules@^2.0.0:
|
||||
intl-pluralrules@^2.0.1:
|
||||
version "2.0.1"
|
||||
resolved "https://registry.yarnpkg.com/intl-pluralrules/-/intl-pluralrules-2.0.1.tgz#de16c3df1e09437635829725e88ea70c9ad79569"
|
||||
integrity sha512-astxTLzIdXPeN0K9Rumi6LfMpm3rvNO0iJE+h/k8Kr/is+wPbRe4ikyDjlLr6VTh/mEfNv8RjN+gu3KwDiuhqg==
|
||||
|
@ -8529,12 +8460,13 @@ min-indent@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869"
|
||||
integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==
|
||||
|
||||
mini-css-extract-plugin@^2.6.0:
|
||||
version "2.6.0"
|
||||
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.0.tgz#578aebc7fc14d32c0ad304c2c34f08af44673f5e"
|
||||
integrity sha512-ndG8nxCEnAemsg4FSgS+yNyHKgkTB4nPKqCOgh65j3/30qqC5RaSQQXMm++Y6sb6E1zRSxPkztj9fqxhS1Eo6w==
|
||||
mini-css-extract-plugin@^2.9.1:
|
||||
version "2.9.1"
|
||||
resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.9.1.tgz#4d184f12ce90582e983ccef0f6f9db637b4be758"
|
||||
integrity sha512-+Vyi+GCCOHnrJ2VPS+6aPoXN2k2jgUzDRhTFLjjTBn23qyXJXkjUWQgTL+mXpF5/A8ixLdCc6kWsoeOjKGejKQ==
|
||||
dependencies:
|
||||
schema-utils "^4.0.0"
|
||||
tapable "^2.2.1"
|
||||
|
||||
mini-svg-data-uri@^1.2.3:
|
||||
version "1.4.3"
|
||||
|
@ -9425,7 +9357,7 @@ postcss-value-parser@^4.0.0, postcss-value-parser@^4.2.0:
|
|||
resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514"
|
||||
integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==
|
||||
|
||||
postcss@^8.4.23, postcss@^8.4.29, postcss@^8.4.32, postcss@^8.4.4:
|
||||
postcss@^8.4.23, postcss@^8.4.32, postcss@^8.4.4:
|
||||
version "8.4.32"
|
||||
resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.32.tgz#1dac6ac51ab19adb21b8b34fd2d93a86440ef6c9"
|
||||
integrity sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==
|
||||
|
@ -9702,7 +9634,7 @@ react-event-listener@^0.6.0:
|
|||
prop-types "^15.6.0"
|
||||
warning "^4.0.1"
|
||||
|
||||
react-fast-compare@^3.0.1, react-fast-compare@^3.1.1:
|
||||
react-fast-compare@^3.1.1:
|
||||
version "3.2.0"
|
||||
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-3.2.0.tgz#641a9da81b6a6320f270e89724fb45a0b39e43bb"
|
||||
integrity sha512-rtGImPZ0YyLrscKI9xTpV8psd6I8VAtjKCzQDlzyDvqJA8XOW78TXYQwNRNd8g8JZnDu8q9Fu/1v4HPAVwVdHA==
|
||||
|
@ -9741,20 +9673,20 @@ react-inlinesvg@^4.0.0:
|
|||
dependencies:
|
||||
react-from-dom "^0.6.2"
|
||||
|
||||
react-intl@^6.0.0:
|
||||
version "6.4.7"
|
||||
resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-6.4.7.tgz#28ec40350ff791a6a773f5e76b9e12835ae17e19"
|
||||
integrity sha512-0hnOHAZhxTFqD1hGTxrF40qNyZJPPYiGhWIIxIz0Udz+3e3c7sdN80qlxArR+AbJ+jb5ALXZkJYH20+GPFCM0Q==
|
||||
react-intl@^6.7.0:
|
||||
version "6.7.0"
|
||||
resolved "https://registry.yarnpkg.com/react-intl/-/react-intl-6.7.0.tgz#e84c20424017004f99e1af4e2cbc098f1eaace2e"
|
||||
integrity sha512-f5QhjuKb+WEqiAbL5hDqUs2+sSRkF0vxkTbJ4A8ompt55XTyOHcrDlCXGq4o73ywFFrpgz+78C9IXegSLlya2A==
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract" "1.17.2"
|
||||
"@formatjs/icu-messageformat-parser" "2.6.2"
|
||||
"@formatjs/intl" "2.9.3"
|
||||
"@formatjs/intl-displaynames" "6.5.2"
|
||||
"@formatjs/intl-listformat" "7.4.2"
|
||||
"@formatjs/ecma402-abstract" "2.0.0"
|
||||
"@formatjs/icu-messageformat-parser" "2.7.8"
|
||||
"@formatjs/intl" "2.10.5"
|
||||
"@formatjs/intl-displaynames" "6.6.8"
|
||||
"@formatjs/intl-listformat" "7.5.7"
|
||||
"@types/hoist-non-react-statics" "^3.3.1"
|
||||
"@types/react" "16 || 17 || 18"
|
||||
hoist-non-react-statics "^3.3.2"
|
||||
intl-messageformat "10.5.3"
|
||||
intl-messageformat "10.5.14"
|
||||
tslib "^2.4.0"
|
||||
|
||||
react-is@^16.13.1, react-is@^16.6.0, react-is@^16.7.0:
|
||||
|
@ -9776,14 +9708,6 @@ react-motion@^0.5.2:
|
|||
prop-types "^15.5.8"
|
||||
raf "^3.1.0"
|
||||
|
||||
react-popper@^2.3.0:
|
||||
version "2.3.0"
|
||||
resolved "https://registry.yarnpkg.com/react-popper/-/react-popper-2.3.0.tgz#17891c620e1320dce318bad9fede46a5f71c70ba"
|
||||
integrity sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==
|
||||
dependencies:
|
||||
react-fast-compare "^3.0.1"
|
||||
warning "^4.0.2"
|
||||
|
||||
react-property@2.0.2:
|
||||
version "2.0.2"
|
||||
resolved "https://registry.yarnpkg.com/react-property/-/react-property-2.0.2.tgz#d5ac9e244cef564880a610bc8d868bd6f60fdda6"
|
||||
|
@ -11209,7 +11133,7 @@ tailwindcss@^3.4.12:
|
|||
resolve "^1.22.2"
|
||||
sucrase "^3.32.0"
|
||||
|
||||
tapable@^2.1.1, tapable@^2.2.0:
|
||||
tapable@^2.1.1, tapable@^2.2.0, tapable@^2.2.1:
|
||||
version "2.2.1"
|
||||
resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
|
||||
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
|
||||
|
@ -12067,7 +11991,7 @@ warning@^3.0.0:
|
|||
dependencies:
|
||||
loose-envify "^1.0.0"
|
||||
|
||||
warning@^4.0.1, warning@^4.0.2:
|
||||
warning@^4.0.1:
|
||||
version "4.0.3"
|
||||
resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3"
|
||||
integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==
|
||||
|
|
Loading…
Reference in a new issue