Merge commit 'a706fce6781104b3aa1315be14f1fb8ccd4fcb1b' into glitch-soc/merge-upstream
This commit is contained in:
commit
0b3c848958
26
Gemfile
26
Gemfile
@ -105,19 +105,19 @@ gem 'opentelemetry-api', '~> 1.9.0'
|
||||
|
||||
group :opentelemetry do
|
||||
gem 'opentelemetry-exporter-otlp', '~> 0.33.0', require: false
|
||||
gem 'opentelemetry-instrumentation-active_job', '~> 0.10.0', require: false
|
||||
gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.24.0', require: false
|
||||
gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.24.0', require: false
|
||||
gem 'opentelemetry-instrumentation-excon', '~> 0.28.0', require: false
|
||||
gem 'opentelemetry-instrumentation-faraday', '~> 0.32.0', require: false
|
||||
gem 'opentelemetry-instrumentation-http', '~> 0.29.0', require: false
|
||||
gem 'opentelemetry-instrumentation-http_client', '~> 0.28.0', require: false
|
||||
gem 'opentelemetry-instrumentation-net_http', '~> 0.28.0', require: false
|
||||
gem 'opentelemetry-instrumentation-pg', '~> 0.35.0', require: false
|
||||
gem 'opentelemetry-instrumentation-rack', '~> 0.30.0', require: false
|
||||
gem 'opentelemetry-instrumentation-rails', '~> 0.40.0', require: false
|
||||
gem 'opentelemetry-instrumentation-redis', '~> 0.28.0', require: false
|
||||
gem 'opentelemetry-instrumentation-sidekiq', '~> 0.28.0', require: false
|
||||
gem 'opentelemetry-instrumentation-active_job', '~> 0.11.0', require: false
|
||||
gem 'opentelemetry-instrumentation-active_model_serializers', '~> 0.25.0', require: false
|
||||
gem 'opentelemetry-instrumentation-concurrent_ruby', '~> 0.25.0', require: false
|
||||
gem 'opentelemetry-instrumentation-excon', '~> 0.29.0', require: false
|
||||
gem 'opentelemetry-instrumentation-faraday', '~> 0.33.0', require: false
|
||||
gem 'opentelemetry-instrumentation-http', '~> 0.30.0', require: false
|
||||
gem 'opentelemetry-instrumentation-http_client', '~> 0.29.0', require: false
|
||||
gem 'opentelemetry-instrumentation-net_http', '~> 0.29.0', require: false
|
||||
gem 'opentelemetry-instrumentation-pg', '~> 0.36.0', require: false
|
||||
gem 'opentelemetry-instrumentation-rack', '~> 0.31.0', require: false
|
||||
gem 'opentelemetry-instrumentation-rails', '~> 0.41.0', require: false
|
||||
gem 'opentelemetry-instrumentation-redis', '~> 0.29.0', require: false
|
||||
gem 'opentelemetry-instrumentation-sidekiq', '~> 0.29.0', require: false
|
||||
gem 'opentelemetry-sdk', '~> 1.4', require: false
|
||||
end
|
||||
|
||||
|
||||
90
Gemfile.lock
90
Gemfile.lock
@ -519,61 +519,61 @@ GEM
|
||||
opentelemetry-common (~> 0.20)
|
||||
opentelemetry-sdk (~> 1.10)
|
||||
opentelemetry-semantic_conventions
|
||||
opentelemetry-helpers-sql (0.3.0)
|
||||
opentelemetry-helpers-sql (0.4.0)
|
||||
opentelemetry-api (~> 1.7)
|
||||
opentelemetry-helpers-sql-processor (0.4.0)
|
||||
opentelemetry-helpers-sql-processor (0.5.0)
|
||||
opentelemetry-api (~> 1.0)
|
||||
opentelemetry-common (~> 0.21)
|
||||
opentelemetry-instrumentation-action_mailer (0.6.1)
|
||||
opentelemetry-instrumentation-action_mailer (0.7.0)
|
||||
opentelemetry-instrumentation-active_support (~> 0.10)
|
||||
opentelemetry-instrumentation-action_pack (0.16.0)
|
||||
opentelemetry-instrumentation-action_pack (0.17.0)
|
||||
opentelemetry-instrumentation-rack (~> 0.29)
|
||||
opentelemetry-instrumentation-action_view (0.11.2)
|
||||
opentelemetry-instrumentation-action_view (0.12.0)
|
||||
opentelemetry-instrumentation-active_support (~> 0.10)
|
||||
opentelemetry-instrumentation-active_job (0.10.1)
|
||||
opentelemetry-instrumentation-active_job (0.11.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-active_model_serializers (0.24.0)
|
||||
opentelemetry-instrumentation-active_model_serializers (0.25.0)
|
||||
opentelemetry-instrumentation-active_support (>= 0.7.0)
|
||||
opentelemetry-instrumentation-active_record (0.11.1)
|
||||
opentelemetry-instrumentation-active_record (0.12.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-active_storage (0.3.1)
|
||||
opentelemetry-instrumentation-active_storage (0.4.0)
|
||||
opentelemetry-instrumentation-active_support (~> 0.10)
|
||||
opentelemetry-instrumentation-active_support (0.10.1)
|
||||
opentelemetry-instrumentation-active_support (0.11.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-base (0.25.0)
|
||||
opentelemetry-instrumentation-base (0.26.0)
|
||||
opentelemetry-api (~> 1.7)
|
||||
opentelemetry-common (~> 0.21)
|
||||
opentelemetry-registry (~> 0.1)
|
||||
opentelemetry-instrumentation-concurrent_ruby (0.24.0)
|
||||
opentelemetry-instrumentation-concurrent_ruby (0.25.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-excon (0.28.0)
|
||||
opentelemetry-instrumentation-excon (0.29.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-faraday (0.32.0)
|
||||
opentelemetry-instrumentation-faraday (0.33.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-http (0.29.0)
|
||||
opentelemetry-instrumentation-http (0.30.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-http_client (0.28.0)
|
||||
opentelemetry-instrumentation-http_client (0.29.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-net_http (0.28.0)
|
||||
opentelemetry-instrumentation-net_http (0.29.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-pg (0.35.0)
|
||||
opentelemetry-instrumentation-pg (0.36.0)
|
||||
opentelemetry-helpers-sql
|
||||
opentelemetry-helpers-sql-processor
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-rack (0.30.0)
|
||||
opentelemetry-instrumentation-rack (0.31.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-rails (0.40.0)
|
||||
opentelemetry-instrumentation-action_mailer (~> 0.6)
|
||||
opentelemetry-instrumentation-action_pack (~> 0.15)
|
||||
opentelemetry-instrumentation-action_view (~> 0.11)
|
||||
opentelemetry-instrumentation-active_job (~> 0.10)
|
||||
opentelemetry-instrumentation-active_record (~> 0.11)
|
||||
opentelemetry-instrumentation-active_storage (~> 0.3)
|
||||
opentelemetry-instrumentation-active_support (~> 0.10)
|
||||
opentelemetry-instrumentation-concurrent_ruby (~> 0.23)
|
||||
opentelemetry-instrumentation-redis (0.28.0)
|
||||
opentelemetry-instrumentation-rails (0.41.0)
|
||||
opentelemetry-instrumentation-action_mailer (~> 0.7)
|
||||
opentelemetry-instrumentation-action_pack (~> 0.17)
|
||||
opentelemetry-instrumentation-action_view (~> 0.12)
|
||||
opentelemetry-instrumentation-active_job (~> 0.11)
|
||||
opentelemetry-instrumentation-active_record (~> 0.12)
|
||||
opentelemetry-instrumentation-active_storage (~> 0.4)
|
||||
opentelemetry-instrumentation-active_support (~> 0.11)
|
||||
opentelemetry-instrumentation-concurrent_ruby (~> 0.25)
|
||||
opentelemetry-instrumentation-redis (0.29.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-instrumentation-sidekiq (0.28.1)
|
||||
opentelemetry-instrumentation-sidekiq (0.29.0)
|
||||
opentelemetry-instrumentation-base (~> 0.25)
|
||||
opentelemetry-registry (0.5.0)
|
||||
opentelemetry-api (~> 1.1)
|
||||
@ -597,8 +597,8 @@ GEM
|
||||
pastel (0.8.0)
|
||||
tty-color (~> 0.5)
|
||||
pg (1.6.3)
|
||||
pghero (3.7.0)
|
||||
activerecord (>= 7.1)
|
||||
pghero (3.8.0)
|
||||
activerecord (>= 7.2)
|
||||
playwright-ruby-client (1.59.0)
|
||||
base64
|
||||
concurrent-ruby (>= 1.1.6)
|
||||
@ -1022,19 +1022,19 @@ DEPENDENCIES
|
||||
omniauth_openid_connect (~> 0.8.0)
|
||||
opentelemetry-api (~> 1.9.0)
|
||||
opentelemetry-exporter-otlp (~> 0.33.0)
|
||||
opentelemetry-instrumentation-active_job (~> 0.10.0)
|
||||
opentelemetry-instrumentation-active_model_serializers (~> 0.24.0)
|
||||
opentelemetry-instrumentation-concurrent_ruby (~> 0.24.0)
|
||||
opentelemetry-instrumentation-excon (~> 0.28.0)
|
||||
opentelemetry-instrumentation-faraday (~> 0.32.0)
|
||||
opentelemetry-instrumentation-http (~> 0.29.0)
|
||||
opentelemetry-instrumentation-http_client (~> 0.28.0)
|
||||
opentelemetry-instrumentation-net_http (~> 0.28.0)
|
||||
opentelemetry-instrumentation-pg (~> 0.35.0)
|
||||
opentelemetry-instrumentation-rack (~> 0.30.0)
|
||||
opentelemetry-instrumentation-rails (~> 0.40.0)
|
||||
opentelemetry-instrumentation-redis (~> 0.28.0)
|
||||
opentelemetry-instrumentation-sidekiq (~> 0.28.0)
|
||||
opentelemetry-instrumentation-active_job (~> 0.11.0)
|
||||
opentelemetry-instrumentation-active_model_serializers (~> 0.25.0)
|
||||
opentelemetry-instrumentation-concurrent_ruby (~> 0.25.0)
|
||||
opentelemetry-instrumentation-excon (~> 0.29.0)
|
||||
opentelemetry-instrumentation-faraday (~> 0.33.0)
|
||||
opentelemetry-instrumentation-http (~> 0.30.0)
|
||||
opentelemetry-instrumentation-http_client (~> 0.29.0)
|
||||
opentelemetry-instrumentation-net_http (~> 0.29.0)
|
||||
opentelemetry-instrumentation-pg (~> 0.36.0)
|
||||
opentelemetry-instrumentation-rack (~> 0.31.0)
|
||||
opentelemetry-instrumentation-rails (~> 0.41.0)
|
||||
opentelemetry-instrumentation-redis (~> 0.29.0)
|
||||
opentelemetry-instrumentation-sidekiq (~> 0.29.0)
|
||||
opentelemetry-sdk (~> 1.4)
|
||||
ox (~> 2.14)
|
||||
parslet
|
||||
|
||||
6
app/helpers/media_player_helper.rb
Normal file
6
app/helpers/media_player_helper.rb
Normal file
@ -0,0 +1,6 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module MediaPlayerHelper
|
||||
PLAYER_HEIGHT = 380
|
||||
PLAYER_WIDTH = 670
|
||||
end
|
||||
@ -26,7 +26,6 @@
|
||||
z-index: 9999;
|
||||
box-sizing: border-box;
|
||||
max-height: min(320px, 50dvh);
|
||||
padding: 4px;
|
||||
border-radius: 4px;
|
||||
color: var(--color-text-primary);
|
||||
background: var(--color-bg-primary);
|
||||
@ -38,22 +37,18 @@
|
||||
overscroll-behavior-y: contain;
|
||||
}
|
||||
|
||||
.groupLabel {
|
||||
padding-block: 12px 4px;
|
||||
padding-inline: 12px;
|
||||
.groupTitle {
|
||||
padding: 8px 16px 4px;
|
||||
font-size: 13px;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
|
||||
ul:first-child > & {
|
||||
padding-top: 4px;
|
||||
}
|
||||
}
|
||||
|
||||
.menuItem {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 8px 12px;
|
||||
margin-inline: 4px;
|
||||
gap: 12px;
|
||||
font-size: 14px;
|
||||
line-height: 20px;
|
||||
@ -62,6 +57,14 @@
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
|
||||
&:first-child {
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
&[data-highlighted='true'] {
|
||||
background: var(--color-bg-overlay-highlight);
|
||||
}
|
||||
|
||||
@ -2,7 +2,7 @@ import { useCallback, useState } from 'react';
|
||||
|
||||
import type { Meta, StoryObj } from '@storybook/react-vite';
|
||||
|
||||
import { ComboboxField } from './combobox_field';
|
||||
import { ComboboxField, ComboboxMenuItem } from './combobox_field';
|
||||
|
||||
interface Fruit {
|
||||
id: string;
|
||||
@ -60,7 +60,7 @@ const ComboboxDemo: React.FC<{ withGroups?: boolean }> = ({ withGroups }) => {
|
||||
}, []);
|
||||
|
||||
const renderItem = useCallback(
|
||||
(fruit: Fruit) => <span>{fruit.name}</span>,
|
||||
(fruit: Fruit) => <ComboboxMenuItem>{fruit.name}</ComboboxMenuItem>,
|
||||
[],
|
||||
);
|
||||
|
||||
@ -93,6 +93,7 @@ const ComboboxDemo: React.FC<{ withGroups?: boolean }> = ({ withGroups }) => {
|
||||
const meta = {
|
||||
title: 'Components/Form Fields/ComboboxField',
|
||||
component: ComboboxField,
|
||||
subcomponents: { ComboboxMenuItem },
|
||||
render: () => <ComboboxDemo />,
|
||||
} satisfies Meta<typeof ComboboxField>;
|
||||
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
import {
|
||||
createContext,
|
||||
forwardRef,
|
||||
useCallback,
|
||||
useContext,
|
||||
useId,
|
||||
useMemo,
|
||||
useRef,
|
||||
@ -109,6 +111,58 @@ interface ComboboxProps<
|
||||
interface Props<Item extends ComboboxItem, GroupKey extends string>
|
||||
extends ComboboxProps<Item, GroupKey>, CommonFieldWrapperProps {}
|
||||
|
||||
interface ComboboxItemPropsContext {
|
||||
role: 'option';
|
||||
'data-highlighted': boolean;
|
||||
'aria-selected': boolean;
|
||||
'aria-disabled': boolean;
|
||||
'data-item-id': string;
|
||||
onMouseEnter: React.MouseEventHandler<HTMLLIElement>;
|
||||
onClick: React.MouseEventHandler<HTMLLIElement>;
|
||||
}
|
||||
|
||||
const ComboboxItemPropsContext = createContext<ComboboxItemPropsContext | null>(
|
||||
null,
|
||||
);
|
||||
|
||||
export function useComboboxItemProps() {
|
||||
const context = useContext(ComboboxItemPropsContext);
|
||||
|
||||
if (context === null) {
|
||||
throw new Error(
|
||||
'useComboboxItemProps must be used within a Combobox component',
|
||||
);
|
||||
}
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
export const ComboboxMenuItem: React.FC<{
|
||||
className?: string;
|
||||
children: React.ReactNode;
|
||||
}> = ({ className, children }) => {
|
||||
const props = useComboboxItemProps();
|
||||
return (
|
||||
<li className={classNames(className, classes.menuItem)} {...props}>
|
||||
{children}
|
||||
</li>
|
||||
);
|
||||
};
|
||||
|
||||
export const ComboboxMenuGroupTitle: React.FC<
|
||||
React.ComponentPropsWithoutRef<'li'>
|
||||
> = ({ className, children, ...otherProps }) => {
|
||||
return (
|
||||
<li
|
||||
{...otherProps}
|
||||
role='presentation'
|
||||
className={classNames(className, classes.groupTitle)}
|
||||
>
|
||||
{children}
|
||||
</li>
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* The combobox field allows users to select one or more items
|
||||
* by searching or filtering a large or dynamic list of options.
|
||||
@ -371,7 +425,7 @@ const ComboboxWithRef = <Item extends ComboboxItem, GroupKey extends string>(
|
||||
const renderItems = (items: Item[]) =>
|
||||
items.map((item) => {
|
||||
const id = getItemId(item);
|
||||
const isDisabled = getIsItemDisabled?.(item);
|
||||
const isDisabled = getIsItemDisabled?.(item) ?? false;
|
||||
const isHighlighted = id === highlightedItemId;
|
||||
// If `getIsItemSelected` is defined, we assume 'multi-select'
|
||||
// behaviour and don't set `aria-selected` based on highlight,
|
||||
@ -380,23 +434,23 @@ const ComboboxWithRef = <Item extends ComboboxItem, GroupKey extends string>(
|
||||
? getIsItemSelected(item)
|
||||
: isHighlighted;
|
||||
return (
|
||||
// eslint-disable-next-line jsx-a11y/click-events-have-key-events
|
||||
<li
|
||||
<ComboboxItemPropsContext.Provider
|
||||
key={id}
|
||||
role='option'
|
||||
className={classes.menuItem}
|
||||
data-highlighted={isHighlighted}
|
||||
aria-selected={isSelected}
|
||||
aria-disabled={isDisabled}
|
||||
data-item-id={id}
|
||||
onMouseEnter={handleItemMouseEnter}
|
||||
onClick={handleSelectItem}
|
||||
value={{
|
||||
role: 'option',
|
||||
'data-highlighted': isHighlighted,
|
||||
'aria-selected': isSelected,
|
||||
'aria-disabled': isDisabled,
|
||||
'data-item-id': id,
|
||||
onMouseEnter: handleItemMouseEnter,
|
||||
onClick: handleSelectItem,
|
||||
}}
|
||||
>
|
||||
{renderItem(item, {
|
||||
isSelected,
|
||||
isDisabled: isDisabled ?? false,
|
||||
isDisabled,
|
||||
})}
|
||||
</li>
|
||||
</ComboboxItemPropsContext.Provider>
|
||||
);
|
||||
});
|
||||
|
||||
@ -498,16 +552,12 @@ const ComboboxWithRef = <Item extends ComboboxItem, GroupKey extends string>(
|
||||
role='group'
|
||||
aria-labelledby={hasTitle ? groupTitleId : undefined}
|
||||
>
|
||||
{hasTitle && (
|
||||
<li
|
||||
role='presentation'
|
||||
className={classes.groupLabel}
|
||||
>
|
||||
{customGroupTitle ?? (
|
||||
<span id={groupTitleId}>{groupKey}</span>
|
||||
)}
|
||||
</li>
|
||||
)}
|
||||
{hasTitle &&
|
||||
(customGroupTitle ?? (
|
||||
<ComboboxMenuGroupTitle id={groupTitleId}>
|
||||
{groupKey}
|
||||
</ComboboxMenuGroupTitle>
|
||||
))}
|
||||
{renderItems(groupItems)}
|
||||
</ul>
|
||||
);
|
||||
|
||||
@ -4,6 +4,7 @@ import { useCallback, useId, useState } from 'react';
|
||||
import { defineMessages, useIntl } from 'react-intl';
|
||||
|
||||
import { Combobox } from '@/mastodon/components/form_fields';
|
||||
import { ComboboxMenuItem } from '@/mastodon/components/form_fields/combobox_field';
|
||||
import { useSearchTags } from '@/mastodon/hooks/useSearchTags';
|
||||
import type { TagSearchResult } from '@/mastodon/hooks/useSearchTags';
|
||||
import { addFeaturedTags } from '@/mastodon/reducers/slices/profile_edit';
|
||||
@ -77,4 +78,6 @@ export const AccountEditTagSearch: FC = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const renderItem = (item: TagSearchResult) => item.label ?? `#${item.name}`;
|
||||
const renderItem = (item: TagSearchResult) => (
|
||||
<ComboboxMenuItem>{item.label ?? `#${item.name}`}</ComboboxMenuItem>
|
||||
);
|
||||
|
||||
@ -65,16 +65,23 @@ export const ImageUploadModal: FC<
|
||||
|
||||
const handleFile = useCallback((file: File) => {
|
||||
try {
|
||||
parseImageFile(file, (result, isAnimated) => {
|
||||
if (isAnimated) {
|
||||
// If the image is animated, skip cropping and go straight to alt text.
|
||||
setImageBlob(file);
|
||||
setStep('alt');
|
||||
} else {
|
||||
setImageSrc(result);
|
||||
setStep('crop');
|
||||
// If the image is animated, skip cropping and go straight to alt text.
|
||||
if (file.type === 'image/gif') {
|
||||
setImageBlob(file);
|
||||
setStep('alt');
|
||||
return;
|
||||
}
|
||||
|
||||
const reader = new FileReader();
|
||||
reader.onload = () => {
|
||||
const dataUri = reader.result;
|
||||
if (typeof dataUri !== 'string') {
|
||||
throw new Error('Expected a string');
|
||||
}
|
||||
});
|
||||
setImageSrc(dataUri);
|
||||
setStep('crop');
|
||||
};
|
||||
reader.readAsDataURL(file);
|
||||
} catch (error) {
|
||||
console.warn('Error with image parsing:', error);
|
||||
setStep('select');
|
||||
@ -408,54 +415,6 @@ const StepAlt: FC<{
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Parses an image file and determines if it's an animated GIF and returns a data URI for cropping.
|
||||
* Based on https://gist.github.com/zakirt/faa4a58cec5a7505b10e3686a226f285.
|
||||
*/
|
||||
function parseImageFile(
|
||||
file: File,
|
||||
cb: (buffer: string, isAnimated: boolean) => void,
|
||||
): void {
|
||||
const reader = new FileReader();
|
||||
reader.onload = () => {
|
||||
const buffer = reader.result;
|
||||
if (!(buffer instanceof ArrayBuffer)) {
|
||||
throw new Error('Expected an ArrayBuffer');
|
||||
}
|
||||
|
||||
// Convert the ArrayBuffer to a base64 data URI.
|
||||
const bytes = new Uint8Array(buffer);
|
||||
const base64 = btoa(String.fromCharCode(...bytes));
|
||||
const dataUri = `data:${file.type};base64,${base64}`;
|
||||
|
||||
// If the file type is not a GIF, then it's not animated as we don't support animated WebP or PNG.
|
||||
if (file.type !== 'image/gif') {
|
||||
cb(dataUri, false);
|
||||
}
|
||||
|
||||
const view = new DataView(buffer, 10); // Start from the last 4 bytes of the Logical Screen Descriptor.
|
||||
let offset = 3;
|
||||
|
||||
// Check the first bit for the global color table flag.
|
||||
const globalColorTable = view.getInt8(0);
|
||||
if (globalColorTable & 0x08) {
|
||||
// Grab last three bits to calculate the global color table size, and skip it.
|
||||
offset += 3 * Math.pow(2, (globalColorTable & 0x7) + 1);
|
||||
}
|
||||
|
||||
// Check Graphics Control Extension and Graphics Control Label to access animated data.
|
||||
let delayTime = 0;
|
||||
if (view.getUint8(offset) & 0x21 && view.getUint8(offset + 1) & 0xf9) {
|
||||
// Skip to the delay time, which is stored in the next two bytes.
|
||||
delayTime = view.getUint16(offset + 4);
|
||||
}
|
||||
|
||||
// If there is a delay time, the GIF is animated.
|
||||
cb(dataUri, delayTime > 0);
|
||||
};
|
||||
reader.readAsArrayBuffer(file);
|
||||
}
|
||||
|
||||
async function calculateCroppedImage(
|
||||
imageSrc: string,
|
||||
crop: Area,
|
||||
|
||||
@ -4,6 +4,9 @@ import { FormattedMessage, useIntl } from 'react-intl';
|
||||
|
||||
import { useHistory } from 'react-router-dom';
|
||||
|
||||
import type { Map as ImmutableMap } from 'immutable';
|
||||
|
||||
import { useComboboxItemProps } from '@/mastodon/components/form_fields/combobox_field';
|
||||
import type { ApiMutedAccountJSON } from 'mastodon/api_types/accounts';
|
||||
import type { ApiCollectionJSON } from 'mastodon/api_types/collections';
|
||||
import { AccountListItem } from 'mastodon/components/account_list_item';
|
||||
@ -25,6 +28,7 @@ import {
|
||||
import { useAccount } from 'mastodon/hooks/useAccount';
|
||||
import { useSearchAccounts } from 'mastodon/hooks/useSearchAccounts';
|
||||
import { domain } from 'mastodon/initial_state';
|
||||
import type { Relationship } from 'mastodon/models/relationship';
|
||||
import {
|
||||
addCollectionItem,
|
||||
getCollectionItemIds,
|
||||
@ -64,18 +68,18 @@ const AddedAccountItem: React.FC<{
|
||||
const SuggestedAccountItem: React.FC<{ id: string }> = ({ id }) => {
|
||||
const account = useAccount(id);
|
||||
const handle = useAccountHandle(account, domain);
|
||||
const comboboxItemProps = useComboboxItemProps();
|
||||
|
||||
if (!account) return null;
|
||||
|
||||
return (
|
||||
<ListItemWrapper
|
||||
className={classes.suggestion}
|
||||
icon={<Avatar account={account} size={40} />}
|
||||
>
|
||||
<ListItemContent subtitle={handle}>
|
||||
<DisplayName account={account} variant='simple' />
|
||||
</ListItemContent>
|
||||
</ListItemWrapper>
|
||||
<li {...comboboxItemProps} className={classes.suggestion}>
|
||||
<ListItemWrapper icon={<Avatar account={account} size={40} />}>
|
||||
<ListItemContent subtitle={handle}>
|
||||
<DisplayName account={account} variant='simple' />
|
||||
</ListItemContent>
|
||||
</ListItemWrapper>
|
||||
</li>
|
||||
);
|
||||
};
|
||||
|
||||
@ -85,19 +89,37 @@ const renderAccountItem = (account: ApiMutedAccountJSON) => (
|
||||
|
||||
type GroupKey = 'available' | 'mustFollow' | 'disabled';
|
||||
|
||||
function groupSuggestions(accounts: ApiMutedAccountJSON[]) {
|
||||
const { available, disabled } = Object.groupBy(accounts, (account) => {
|
||||
if (getIsItemDisabled(account)) {
|
||||
const canAccountBeAdded = (account: ApiMutedAccountJSON) =>
|
||||
['automatic', 'manual'].includes(account.feature_approval.current_user);
|
||||
|
||||
function groupSuggestions(
|
||||
accounts: ApiMutedAccountJSON[],
|
||||
relationships: ImmutableMap<string, Relationship>,
|
||||
) {
|
||||
const { available, mustFollow, disabled } = Object.groupBy(
|
||||
accounts,
|
||||
(account): GroupKey => {
|
||||
if (canAccountBeAdded(account)) {
|
||||
return 'available';
|
||||
}
|
||||
|
||||
const canAccountBeAddedByFollowers =
|
||||
account.feature_approval.automatic.includes('followers') ||
|
||||
account.feature_approval.manual.includes('followers');
|
||||
|
||||
if (
|
||||
canAccountBeAddedByFollowers &&
|
||||
!relationships.get(account.id)?.following
|
||||
) {
|
||||
return 'mustFollow';
|
||||
}
|
||||
|
||||
return 'disabled';
|
||||
}
|
||||
// if (account.locked && !relationship?.following) {
|
||||
// return 'mustFollow';
|
||||
// }
|
||||
return 'available';
|
||||
});
|
||||
},
|
||||
);
|
||||
|
||||
// Returning a new object ensures a fixed property order
|
||||
return { available, disabled };
|
||||
return { available, mustFollow, disabled };
|
||||
}
|
||||
|
||||
const renderGroupTitle = (groupKey: GroupKey, titleId: string) => {
|
||||
@ -137,19 +159,19 @@ const renderGroupTitle = (groupKey: GroupKey, titleId: string) => {
|
||||
}
|
||||
|
||||
return (
|
||||
<ListItemWrapper className={classes.suggestionGroup}>
|
||||
<ListItemContent id={titleId} subtitle={description}>
|
||||
{title}
|
||||
</ListItemContent>
|
||||
</ListItemWrapper>
|
||||
<li role='presentation'>
|
||||
<ListItemWrapper className={classes.suggestionGroup}>
|
||||
<ListItemContent id={titleId} subtitle={description}>
|
||||
{title}
|
||||
</ListItemContent>
|
||||
</ListItemWrapper>
|
||||
</li>
|
||||
);
|
||||
};
|
||||
|
||||
const getItemId = (account: ApiMutedAccountJSON) => account.id;
|
||||
|
||||
// Disable accounts who can't be added to a collection
|
||||
const getIsItemDisabled = (account: ApiMutedAccountJSON) =>
|
||||
!['automatic', 'manual'].includes(account.feature_approval.current_user);
|
||||
!canAccountBeAdded(account);
|
||||
|
||||
export const CollectionAccounts: React.FC<{
|
||||
collection?: ApiCollectionJSON | null;
|
||||
@ -189,6 +211,10 @@ export const CollectionAccounts: React.FC<{
|
||||
filterResults: (account) => !accountIds.includes(account.id),
|
||||
});
|
||||
|
||||
const relationships = useAppSelector((state) => state.relationships);
|
||||
|
||||
const groupedItems = groupSuggestions(suggestedAccounts, relationships);
|
||||
|
||||
const handleSearchValueChange = useCallback(
|
||||
(e: React.ChangeEvent<HTMLInputElement>) => {
|
||||
setSearchValue(e.target.value);
|
||||
@ -330,7 +356,7 @@ export const CollectionAccounts: React.FC<{
|
||||
onKeyDown={handleSearchKeyDown}
|
||||
disabled={hasMaxAccounts}
|
||||
isLoading={isLoadingSuggestions}
|
||||
items={groupSuggestions(suggestedAccounts)}
|
||||
items={groupedItems}
|
||||
getItemId={getItemId}
|
||||
getIsItemDisabled={getIsItemDisabled}
|
||||
renderItem={renderAccountItem}
|
||||
|
||||
@ -6,6 +6,7 @@ import { useHistory } from 'react-router-dom';
|
||||
|
||||
import { isFulfilled } from '@reduxjs/toolkit';
|
||||
|
||||
import { ComboboxMenuItem } from '@/mastodon/components/form_fields/combobox_field';
|
||||
import { languages } from '@/mastodon/initial_state';
|
||||
import {
|
||||
hasSpecialCharacters,
|
||||
@ -373,7 +374,9 @@ const TopicField: React.FC = () => {
|
||||
);
|
||||
};
|
||||
|
||||
const renderTagItem = (item: TagSearchResult) => item.label ?? `#${item.name}`;
|
||||
const renderTagItem = (item: TagSearchResult) => (
|
||||
<ComboboxMenuItem>{item.label ?? `#${item.name}`}</ComboboxMenuItem>
|
||||
);
|
||||
|
||||
const LanguageField: React.FC = () => {
|
||||
const dispatch = useAppDispatch();
|
||||
|
||||
@ -60,17 +60,20 @@
|
||||
}
|
||||
|
||||
.suggestion {
|
||||
padding: 4px 0;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
border-bottom: 1px solid var(--color-border-primary);
|
||||
|
||||
[aria-disabled='true'] & {
|
||||
&[data-highlighted='true'] {
|
||||
background: var(--color-bg-overlay-highlight);
|
||||
}
|
||||
|
||||
&[aria-disabled='true'] {
|
||||
opacity: 0.6;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
|
||||
.suggestionGroup {
|
||||
padding: 4px 0;
|
||||
|
||||
// Undo default group styles:
|
||||
font-weight: 400;
|
||||
text-transform: none;
|
||||
padding-bottom: 4px;
|
||||
}
|
||||
|
||||
@ -411,7 +411,9 @@
|
||||
"collections.sensitive": "Inhaltswarnung",
|
||||
"collections.share_short": "Teilen",
|
||||
"collections.suggestions.can_not_add": "Kann nicht hinzugefügt werden",
|
||||
"collections.suggestions.can_not_add_desc": "Diese Konten möchten möglicherweise nicht entdeckt werden oder deren Server unterstützt noch keine Sammlungen.",
|
||||
"collections.suggestions.must_follow": "Zuerst Profil folgen",
|
||||
"collections.suggestions.must_follow_desc": "Diese Konten überprüfen ihre Follower-Anfragen manuell. Follower können sie zu Sammlungen hinzufügen.",
|
||||
"collections.topic_hint": "Ein Hashtag für diese Sammlung kann anderen dabei helfen, dein Anliegen besser einordnen zu können.",
|
||||
"collections.topic_special_chars_hint": "Sonderzeichen werden beim Speichern entfernt",
|
||||
"collections.unlisted_collections_description": "Die Sammlungen sind für andere nicht auf deinem Profil sichtbar. Ein direkter Zugriff ist per Link möglich.",
|
||||
|
||||
@ -666,7 +666,7 @@
|
||||
"featured_carousel.header": "{count, plural, one {Καρφιτσωμένη Ανάρτηση} other {Καρφιτσωμένες Αναρτήσεις}}",
|
||||
"featured_carousel.slide": "Ανάρτηση {current, number} από {max, number}",
|
||||
"featured_tags.more_items": "+{count}",
|
||||
"featured_tags.suggestions": "Τον τελευταίο καιρό έχετε δημοσιεύσει για {items}. Προσθέστε αυτά ως αναδεδειγμένες ετικέτες;",
|
||||
"featured_tags.suggestions": "Τον τελευταίο καιρό έχεις δημοσιεύσει για {items}. Να προστεθούν αυτά ως αναδεδειγμένες ετικέτες;",
|
||||
"featured_tags.suggestions.add": "Προσθήκη",
|
||||
"featured_tags.suggestions.added": "Διαχειριστείτε τις αναδεδειγμένες ετικέτες σας οποιαδήποτε στιγμή κάτω από το <link>Επεξεργασία προφίλ > Αναδεδειγμένες ετικέτες</link>.",
|
||||
"featured_tags.suggestions.dismiss": "Όχι, ευχαριστώ",
|
||||
|
||||
@ -106,6 +106,7 @@
|
||||
"account.name.copy": "Copy handle",
|
||||
"account.name.help.domain": "{domain} is the server that hosts the user’s profile and posts.",
|
||||
"account.name.help.domain_self": "{domain} is your server that hosts your profile and posts.",
|
||||
"account.name.help.footer": "Just like you can send emails to people using different email providers, you can interact with people on other Mastodon servers, and with anyone on other Mastodon-compatible social apps.",
|
||||
"account.name.help.header": "A handle is like an email address",
|
||||
"account.name.help.username": "{username} is this account’s username on their server. Someone on another server might have the same username.",
|
||||
"account.name.help.username_self": "{username} is your username on this server. Someone on another server might have the same username.",
|
||||
@ -350,6 +351,7 @@
|
||||
"closed_registrations_modal.find_another_server": "Find another server",
|
||||
"closed_registrations_modal.preamble": "Mastodon is decentralised, so no matter where you create your account, you will be able to follow and interact with anyone on this server. You can even self-host it!",
|
||||
"closed_registrations_modal.title": "Signing up on Mastodon",
|
||||
"collection.share_modal.share_link_label": "Share link",
|
||||
"collection.share_modal.share_via_post": "Post on Mastodon",
|
||||
"collection.share_modal.share_via_system": "Share to…",
|
||||
"collection.share_modal.title": "Share collection",
|
||||
@ -357,7 +359,10 @@
|
||||
"collection.share_template_other": "Check out this cool collection: {link}",
|
||||
"collection.share_template_own": "Check out my new collection: {link}",
|
||||
"collections.account_count": "{count, plural, one {# account} other {# accounts}}",
|
||||
"collections.accounts.empty_description": "Add up to {count} accounts",
|
||||
"collections.accounts.empty_editor_title": "No one is in this collection yet",
|
||||
"collections.accounts.empty_title": "This collection is empty",
|
||||
"collections.block_collection_owner": "Block account",
|
||||
"collections.by_account": "Delete",
|
||||
"collections.collection_description": "Description",
|
||||
"collections.collection_language": "Language",
|
||||
@ -367,6 +372,8 @@
|
||||
"collections.confirm_account_removal": "Are you sure you want to remove this account from this collection?",
|
||||
"collections.content_warning": "Content warning",
|
||||
"collections.continue": "Continue",
|
||||
"collections.copy_link": "Copy link",
|
||||
"collections.copy_link_confirmation": "Copied collection link to clipboard",
|
||||
"collections.create.accounts_title": "Who will you feature in this collection?",
|
||||
"collections.create.basic_details_title": "Basic details",
|
||||
"collections.create.steps": "Step {step}/{total}",
|
||||
@ -384,6 +391,9 @@
|
||||
"collections.detail.you_are_in_this_collection": "You're featured in this collection",
|
||||
"collections.edit_details": "Edit details",
|
||||
"collections.error_loading_collections": "There was an error when trying to load your collections.",
|
||||
"collections.hidden_accounts_description": "You’ve blocked or muted {count, plural, one {this user} other {these users}}",
|
||||
"collections.hidden_accounts_link": "{count, plural, one {# hidden account} other {# hidden accounts}}",
|
||||
"collections.hints.accounts_counter": "{count}/{max} accounts",
|
||||
"collections.last_updated_at": "Last updated: {date}",
|
||||
"collections.manage_accounts": "Manage accounts",
|
||||
"collections.mark_as_sensitive": "Mark as sensitive",
|
||||
@ -391,14 +401,23 @@
|
||||
"collections.name_length_hint": "40 characters limit",
|
||||
"collections.new_collection": "New collection",
|
||||
"collections.no_collections_yet": "No collections yet.",
|
||||
"collections.remove_account": "Remove",
|
||||
"collections.report_collection": "Report this collection",
|
||||
"collections.revoke_collection_inclusion": "Remove myself from this collection",
|
||||
"collections.revoke_inclusion.confirmation": "You've been removed from \"{collection}\"",
|
||||
"collections.revoke_inclusion.error": "There was an error, please try again later.",
|
||||
"collections.search_accounts_label": "Search for an account to add",
|
||||
"collections.search_accounts_max_reached": "You have added the maximum number of accounts",
|
||||
"collections.sensitive": "Sensitive",
|
||||
"collections.share_short": "Share",
|
||||
"collections.suggestions.can_not_add": "Can’t be added",
|
||||
"collections.suggestions.can_not_add_desc": "These accounts may have opted out of discovery, or they might be on a server that doesn’t support collections.",
|
||||
"collections.suggestions.must_follow": "Must follow first",
|
||||
"collections.suggestions.must_follow_desc": "These accounts review all follow requests. Followers can add them to collections.",
|
||||
"collections.topic_hint": "Add a hashtag that helps others understand the main topic of this collection.",
|
||||
"collections.topic_special_chars_hint": "Special characters will be removed when saving",
|
||||
"collections.unlisted_collections_description": "These don’t appear on your profile to others. Anyone with the link can discover them.",
|
||||
"collections.unlisted_collections_with_count": "Unlisted collections ({count})",
|
||||
"collections.view_collection": "View collection",
|
||||
"collections.visibility_public": "Public",
|
||||
"collections.visibility_public_hint": "Discoverable in search results and other areas where recommendations appear.",
|
||||
@ -891,6 +910,7 @@
|
||||
"navigation_panel.expand_followed_tags": "Expand followed hashtags menu",
|
||||
"navigation_panel.expand_lists": "Expand list menu",
|
||||
"not_signed_in_indicator.not_signed_in": "You need to sign in to access this resource.",
|
||||
"notification.added_to_collection": "{name} added you to a collection",
|
||||
"notification.admin.report": "{name} reported {target}",
|
||||
"notification.admin.report_account": "{name} reported {count, plural, one {one post} other {# posts}} from {target} for {category}",
|
||||
"notification.admin.report_account_other": "{name} reported {count, plural, one {one post} other {# posts}} from {target}",
|
||||
@ -900,6 +920,7 @@
|
||||
"notification.admin.sign_up.name_and_others": "{name} and {count, plural, one {# other} other {# others}} signed up",
|
||||
"notification.annual_report.message": "Your {year} #Wrapstodon awaits! Unveil your year's highlights and memorable moments on Mastodon!",
|
||||
"notification.annual_report.view": "View #Wrapstodon",
|
||||
"notification.collection_update": "{name} edited a collection you’re in",
|
||||
"notification.favourite": "{name} favourited your post",
|
||||
"notification.favourite.name_and_others_with_link": "{name} and <a>{count, plural, one {# other} other {# others}}</a> favourited your post",
|
||||
"notification.favourite_pm": "{name} favourited your private mention",
|
||||
|
||||
@ -141,8 +141,8 @@
|
||||
"account.unmute_notifications_short": "Lõpeta teavituste summutamine",
|
||||
"account.unmute_short": "Lõpeta summutamine",
|
||||
"account_edit.advanced_settings.bot_hint": "Teavita teisi, et sel kontol tehakse peamiselt automatiseeritud toiminguid ja seda ei pruugita jälgida",
|
||||
"account_edit.advanced_settings.bot_label": "Automatiseeritud konto",
|
||||
"account_edit.advanced_settings.title": "Täpsemad seaded",
|
||||
"account_edit.advanced_settings.bot_label": "Automatiseeritud kasutajakonto",
|
||||
"account_edit.advanced_settings.title": "Täpsemad seadistused",
|
||||
"account_edit.bio.add_label": "Lisa elulugu",
|
||||
"account_edit.bio.edit_label": "Muuda elulugu",
|
||||
"account_edit.bio.placeholder": "Lisa lühike tutvustus, et aidata teistel sinust pilti luua.",
|
||||
@ -158,7 +158,7 @@
|
||||
"account_edit.custom_fields.tip_content": "Saad Mastodoni konto usaldusväärsust hõlpsasti suurendada, kinnitades lingid lehtedele, mis sulle kuuluvad.",
|
||||
"account_edit.custom_fields.tip_title": "Soovitus: Kinnitatud linkide lisamine",
|
||||
"account_edit.custom_fields.title": "Kohandatud väljad",
|
||||
"account_edit.custom_fields.verified_hint": "Kuidas lisada kinnitatud link?",
|
||||
"account_edit.custom_fields.verified_hint": "Kuidas lisada kinnitatud linki?",
|
||||
"account_edit.display_name.add_label": "Lisa kuvatav nimi",
|
||||
"account_edit.display_name.edit_label": "Muuda kuvatavat nime",
|
||||
"account_edit.display_name.placeholder": "Kuvatav nimi määrab, kuidas sinu nimi on näha sinu profiilis ja ajajoontel.",
|
||||
@ -170,7 +170,7 @@
|
||||
"account_edit.field_actions.edit": "Muuda välja",
|
||||
"account_edit.field_delete_modal.confirm": "Kas oled kindel, et soovid selle kohandatud välja kustutada? Seda toimingut ei saa tagasi võtta.",
|
||||
"account_edit.field_delete_modal.delete_button": "Kustuta",
|
||||
"account_edit.field_delete_modal.title": "Kustutada kohandatud väli?",
|
||||
"account_edit.field_delete_modal.title": "Kas kustutame kohandatud välja?",
|
||||
"account_edit.field_edit_modal.add_title": "Lisa kohandatud väli",
|
||||
"account_edit.field_edit_modal.discard_confirm": "Loobu",
|
||||
"account_edit.field_edit_modal.discard_message": "Sul on salvestamata muudatusi. Kas soovid tõesti neist loobuda?",
|
||||
@ -211,14 +211,14 @@
|
||||
"account_edit.profile_tab.button_label": "Kohanda",
|
||||
"account_edit.profile_tab.hint.description": "Need seaded määravad, mida kasutajad näevad {server} ametlikes rakendustes, kuid ei pruugi kehtida teiste serverite kasutajate ja kolmandate osapoolte rakenduste puhul.",
|
||||
"account_edit.profile_tab.hint.title": "Näitamine siiski erinev",
|
||||
"account_edit.profile_tab.show_featured.description": "\"Esile tõstetud\" on valikuline taab, kus saad näidata teisi kontosid.",
|
||||
"account_edit.profile_tab.show_featured.title": "Näita esiletõstetute taabi",
|
||||
"account_edit.profile_tab.show_media.description": "\"Meedia\" on valikuline taab, mis näitab sinu piltide või videotega postitusi.",
|
||||
"account_edit.profile_tab.show_media.title": "Näita meedia taabi",
|
||||
"account_edit.profile_tab.show_media_replies.description": "Sisse lülitatuna näitab meedia taab mõlemat, nii sinu postitusi kui su vastuseid teiste postitustele.",
|
||||
"account_edit.profile_tab.show_media_replies.title": "Kaasa meedia taabile ka vastused",
|
||||
"account_edit.profile_tab.show_featured.description": "„Esiletõstetud“ on valikuline vahekaart, kus saad näidata teisi kontosid.",
|
||||
"account_edit.profile_tab.show_featured.title": "Näita vahekaarti „Esiletõstetud“",
|
||||
"account_edit.profile_tab.show_media.description": "„Meedium“ on valikuline vahekaart, mis näitab sinu piltide või videotega postitusi.",
|
||||
"account_edit.profile_tab.show_media.title": "Näita multimeedia vahekaarti",
|
||||
"account_edit.profile_tab.show_media_replies.description": "Sisselülitatuna näitab mediumi vahekaart, nii sinu postitusi kui su vastuseid teiste kasutajate postitustele.",
|
||||
"account_edit.profile_tab.show_media_replies.title": "Kaasa vahekaardile „Meedium“ ka vastused",
|
||||
"account_edit.profile_tab.subtitle": "Kohanda oma profiili vahekaarte ja nende sisu.",
|
||||
"account_edit.profile_tab.title": "Profiili taabide seaded",
|
||||
"account_edit.profile_tab.title": "Profiili vahekaartide seadistused",
|
||||
"account_edit.save": "Salvesta",
|
||||
"account_edit.upload_modal.back": "Tagasi",
|
||||
"account_edit.upload_modal.done": "Valmis",
|
||||
@ -511,10 +511,10 @@
|
||||
"confirmations.follow_to_list.confirm": "Jälgi ja lisa loetellu",
|
||||
"confirmations.follow_to_list.message": "Pead jälgima kasutajat {name}, et lisada teda loetellu.",
|
||||
"confirmations.follow_to_list.title": "Jälgida kasutajat?",
|
||||
"confirmations.hide_featured_tab.confirm": "Peida taab",
|
||||
"confirmations.hide_featured_tab.confirm": "Peida vahekaart",
|
||||
"confirmations.hide_featured_tab.intro": "Saad seda igal ajal muuta menüüs <i>Profiili muutmine > Profiili vahekaardi seaded</i>.",
|
||||
"confirmations.hide_featured_tab.message": "See peidab vahekaardi serveri {serverName} kasutajatel ja teistel serveritel, kus kasutatakse Mastodoni uusimat versiooni. Muudel serveritel võib kuvamine erineda.",
|
||||
"confirmations.hide_featured_tab.title": "Peita taab Esiletõstetud?",
|
||||
"confirmations.hide_featured_tab.title": "Kas peidame vahekaardi „Esiletõstetud“?",
|
||||
"confirmations.logout.confirm": "Välju",
|
||||
"confirmations.logout.message": "Kas oled kindel, et soovid välja logida?",
|
||||
"confirmations.logout.title": "Logida välja?",
|
||||
@ -621,7 +621,7 @@
|
||||
"emoji_button.travel": "Reisimine & kohad",
|
||||
"empty_column.account_featured.other": "{acct} pole veel midagi esile tõstnud.",
|
||||
"empty_column.account_featured_self.no_collections_button": "Loo kogumik",
|
||||
"empty_column.account_featured_self.no_collections_hide_tab": "Selle asemel peida see taab",
|
||||
"empty_column.account_featured_self.no_collections_hide_tab": "Selle asemel peida see vahekaart",
|
||||
"empty_column.account_featured_self.pre_collections": "Jälgi kogumikke",
|
||||
"empty_column.account_featured_self.pre_collections_desc": "Kogumikud (lisanduvad Mastodon V4.6) võimaldavad sul luua enda koostatud kontode nimekirju, mida teistele soovitada.",
|
||||
"empty_column.account_featured_self.showcase_accounts": "Näita oma lemmikkontosid",
|
||||
|
||||
@ -64,6 +64,7 @@
|
||||
"account.media": "Multivide",
|
||||
"account.mention": "Pieminēt @{name}",
|
||||
"account.menu.block": "Bloķēt kontu",
|
||||
"account.menu.copy": "Kopēt saiti",
|
||||
"account.moved_to": "{name} norādīja, ka viņu jaunais konts tagad ir:",
|
||||
"account.mute": "Apklusināt @{name}",
|
||||
"account.mute_notifications_short": "Apklusināt paziņojumus",
|
||||
@ -71,8 +72,10 @@
|
||||
"account.muted": "Apklusināts",
|
||||
"account.muting": "Apklusināts",
|
||||
"account.mutual": "Jūs sekojat viens otram",
|
||||
"account.name_info": "Ko tas nozīmē?",
|
||||
"account.no_bio": "Apraksts nav sniegts.",
|
||||
"account.node_modal.save": "Saglabāt",
|
||||
"account.note.edit_button": "Labot",
|
||||
"account.open_original_page": "Atvērt pirmavota lapu",
|
||||
"account.posts": "Ieraksti",
|
||||
"account.remove_from_followers": "Dzēst sekotāju {name}",
|
||||
@ -91,6 +94,7 @@
|
||||
"account.unmute": "Noņemt apklusinājumu @{name}",
|
||||
"account.unmute_notifications_short": "Atcelet paziņojumu apklusināšanu",
|
||||
"account.unmute_short": "Noņemt apklusinājumu",
|
||||
"account_edit.bio.edit_label": "Labot biogrāfiju",
|
||||
"account_edit.bio.title": "Biogrāfija",
|
||||
"account_edit.bio_modal.add_title": "Pievienot biogrāfiju",
|
||||
"account_edit.bio_modal.edit_title": "Labot biogrāfiju",
|
||||
@ -98,8 +102,23 @@
|
||||
"account_edit.column_title": "Labot profilu",
|
||||
"account_edit.custom_fields.add_label": "Pievienot lauku",
|
||||
"account_edit.custom_fields.edit_label": "Labot lauku",
|
||||
"account_edit.field_actions.delete": "Dzēst lauku",
|
||||
"account_edit.field_actions.edit": "Labot lauku",
|
||||
"account_edit.field_delete_modal.delete_button": "Dzēst",
|
||||
"account_edit.field_edit_modal.discard_confirm": "Atmest",
|
||||
"account_edit.image_delete_modal.delete_button": "Dzēst",
|
||||
"account_edit.image_delete_modal.title": "Dzēst attēlu?",
|
||||
"account_edit.image_edit.add_button": "Pievienot attēlu",
|
||||
"account_edit.image_edit.remove_button": "Noņemt attēlu",
|
||||
"account_edit.save": "Saglabāt",
|
||||
"account_edit.upload_modal.back": "Atpakaļ",
|
||||
"account_edit.upload_modal.done": "Gatavs",
|
||||
"account_edit.upload_modal.step_upload.button": "Pārlūkot failus",
|
||||
"account_edit.upload_modal.title_add.avatar": "Pievienot profila fotoattēlu",
|
||||
"account_edit.upload_modal.title_add.header": "Pievienot titullapas fotoattēlu",
|
||||
"account_edit.upload_modal.title_replace.avatar": "Nomainīt profila fotoattēlu",
|
||||
"account_edit.upload_modal.title_replace.header": "Nomainīt titullapas fotoattēlu",
|
||||
"account_edit_tags.suggestions": "Ieteikumi:",
|
||||
"account_note.placeholder": "Noklikšķini, lai pievienotu piezīmi",
|
||||
"admin.dashboard.daily_retention": "Lietotāju saglabāšanas rādītājs dienā pēc reģistrēšanās",
|
||||
"admin.dashboard.monthly_retention": "Lietotāju saglabāšanas rādītājs mēnesī pēc reģistrēšanās",
|
||||
@ -123,6 +142,11 @@
|
||||
"alt_text_modal.describe_for_people_with_visual_impairments": "Aprakstīt šo cilvēkiem ar redzes traucējumiem…",
|
||||
"alt_text_modal.done": "Gatavs",
|
||||
"announcement.announcement": "Paziņojums",
|
||||
"annual_report.shared_page.donate": "Ziedot",
|
||||
"annual_report.summary.archetype.title_public": "Lietotāja \"{name}\" arhetips",
|
||||
"annual_report.summary.archetype.title_self": "Tavs arhetips",
|
||||
"annual_report.summary.close": "Aizvērt",
|
||||
"annual_report.summary.copy_link": "Kopēt saiti",
|
||||
"annual_report.summary.most_used_app.most_used_app": "visizmantotākā lietotne",
|
||||
"annual_report.summary.most_used_hashtag.most_used_hashtag": "visizmantotākais tēmturis",
|
||||
"annual_report.summary.new_posts.new_posts": "jauni ieraksti",
|
||||
@ -158,6 +182,19 @@
|
||||
"closed_registrations_modal.find_another_server": "Atrast citu serveri",
|
||||
"closed_registrations_modal.preamble": "Mastodon ir decentralizēts, tāpēc neatkarīgi no tā, kur Tu izveido savu kontu, varēsi sekot un mijiedarboties ar ikvienu šajā serverī. Tu pat vari to pašizvietot!",
|
||||
"closed_registrations_modal.title": "Reģistrēšanās Mastodon",
|
||||
"collections.accounts.empty_title": "Šī kolekcija ir tukša",
|
||||
"collections.block_collection_owner": "Bloķēt kontu",
|
||||
"collections.collection_description": "Apraksts",
|
||||
"collections.collection_language": "Valoda",
|
||||
"collections.collection_language_none": "Nav",
|
||||
"collections.collection_name": "Nosaukums",
|
||||
"collections.collection_topic": "Tēma",
|
||||
"collections.continue": "Turpināt",
|
||||
"collections.copy_link": "Kopēt saiti",
|
||||
"collections.manage_accounts": "Pārvaldīt kontus",
|
||||
"collections.remove_account": "Noņemt",
|
||||
"collections.suggestions.can_not_add": "Nevar pievienot",
|
||||
"collections.visibility_title": "Redzamība",
|
||||
"column.about": "Par",
|
||||
"column.blocks": "Liegtie lietotāji",
|
||||
"column.bookmarks": "Grāmatzīmes",
|
||||
@ -185,6 +222,8 @@
|
||||
"column_header.show_settings": "Rādīt iestatījumus",
|
||||
"column_header.unpin": "Atspraust",
|
||||
"column_search.cancel": "Atcelt",
|
||||
"combobox.loading": "Ielādē",
|
||||
"combobox.open_results": "Atvērt rezultātus",
|
||||
"community.column_settings.local_only": "Tikai vietējie",
|
||||
"community.column_settings.media_only": "Tikai multivide",
|
||||
"community.column_settings.remote_only": "Tikai attālinātie",
|
||||
@ -218,6 +257,7 @@
|
||||
"confirmations.delete.confirm": "Dzēst",
|
||||
"confirmations.delete.message": "Vai tiešām izdzēst šo ierakstu?",
|
||||
"confirmations.delete.title": "Izdzēst ierakstu?",
|
||||
"confirmations.delete_collection.confirm": "Dzēst",
|
||||
"confirmations.delete_list.confirm": "Dzēst",
|
||||
"confirmations.delete_list.message": "Vai tiešām neatgriezeniski izdzēst šo sarakstu?",
|
||||
"confirmations.delete_list.title": "Izdzēst sarakstu?",
|
||||
|
||||
@ -96,7 +96,7 @@ class ReportService < BaseService
|
||||
def domain_mentions(domain)
|
||||
Mention
|
||||
.joins(:account)
|
||||
.where(Account.arel_table[:domain].lower.eq domain)
|
||||
.merge(Account.with_domain(domain))
|
||||
.select(1).arel.exists
|
||||
end
|
||||
|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
detailed: true,
|
||||
editable: true,
|
||||
frameRate: meta.dig('original', 'frame_rate'),
|
||||
height: 380,
|
||||
height: MediaPlayerHelper::PLAYER_HEIGHT,
|
||||
inline: true,
|
||||
media: [ActiveModelSerializers::SerializableResource.new(@media_attachment, serializer: REST::MediaAttachmentSerializer)].as_json,
|
||||
preview: @media_attachment.thumbnail.present? ? @media_attachment.thumbnail.url : @media_attachment.file.url(:small),
|
||||
@ -25,7 +25,7 @@
|
||||
- elsif @media_attachment.gifv?
|
||||
= react_component :media_gallery,
|
||||
autoplay: true,
|
||||
height: 380,
|
||||
height: MediaPlayerHelper::PLAYER_HEIGHT,
|
||||
media: [ActiveModelSerializers::SerializableResource.new(@media_attachment, serializer: REST::MediaAttachmentSerializer).as_json],
|
||||
standalone: true do
|
||||
%video{ autoplay: 'autoplay', muted: 'muted', loop: 'loop' }
|
||||
@ -38,9 +38,9 @@
|
||||
duration: meta.dig(:original, :duration),
|
||||
foregroundColor: meta.dig('colors', 'foreground'),
|
||||
fullscreen: true,
|
||||
height: 380,
|
||||
height: MediaPlayerHelper::PLAYER_HEIGHT,
|
||||
poster: @media_attachment.thumbnail.present? ? @media_attachment.thumbnail.url : @media_attachment.account.avatar_static_url,
|
||||
src: @media_attachment.file.url(:original),
|
||||
width: 670 do
|
||||
width: MediaPlayerHelper::PLAYER_WIDTH do
|
||||
%audio{ controls: 'controls' }
|
||||
%source{ src: @media_attachment.file.url(:original) }
|
||||
|
||||
@ -38,8 +38,8 @@
|
||||
= opengraph 'twitter:player', player_medium_url(media)
|
||||
= opengraph 'twitter:player:stream', full_asset_url(media.file.url(:original))
|
||||
= opengraph 'twitter:player:stream:content_type', media.file_content_type
|
||||
= opengraph 'twitter:player:width', '670'
|
||||
= opengraph 'twitter:player:height', '380'
|
||||
= opengraph 'twitter:player:width', MediaPlayerHelper::PLAYER_WIDTH
|
||||
= opengraph 'twitter:player:height', MediaPlayerHelper::PLAYER_HEIGHT
|
||||
- if player_card
|
||||
= opengraph 'twitter:card', 'player'
|
||||
- else
|
||||
|
||||
@ -83,6 +83,10 @@ et:
|
||||
access_denied: Ressursi omanik või autoriseerimisserver lükkas taotluse tagasi.
|
||||
credential_flow_not_configured: Resource Owner Password Credentials vool ebaõnnestus, kuna Doorkeeper.configure.resource_owner_from_credentials ei ole seadistatud.
|
||||
invalid_client: Kliendi autentimine ebaõnnestus. Põhjus kas tundmatu klient, puudulik autentimine või toetamata autentimismeetod.
|
||||
invalid_code_challenge_method:
|
||||
one: "„code_challenge_method“ meetod peab olema selline: %{challenge_methods}."
|
||||
other: "„code_challenge_method“ meetod peab olema üks neist: %{challenge_methods}."
|
||||
zero: Kuna sobilikke „code_challenge_method“ meetodi väärtusi ei leidu, siis autentimisserver ei toeta PKCE-d.
|
||||
invalid_grant: Antud autoriseerimisluba on vale, aegunud, tagasi võetud, ei kattu kasutatud ümbersuunamise URLid või oli antud teisele kliendile.
|
||||
invalid_redirect_uri: Antud ümbersuunamise URL ei ole õige.
|
||||
invalid_request:
|
||||
|
||||
@ -2238,7 +2238,7 @@ et:
|
||||
extra_instructions_html: <strong>Soovitus:</strong> Sinu kodulehel olev link võib olla nähtamatu. Oluline osa on <code>rel="me"</code>, mis väldib kasutaja loodud sisuga lehtedel libaisikustamist. Sa saad isegi kasutada lehe HEADER osas silti <code>link</code> sildi <code>a</code> asemel, kuid HTML peab olema kättesaadav ilma JavaScripti käivitamata.
|
||||
here_is_how: Siin on, kuidas
|
||||
hint_html: "<strong>Oma isiku tuvastamine on Mastodonis kõigi jaoks.</strong> Toetub avatud veebistandarditele, nüüd ja igavesti tasuta. Kõik, mida vajad, on isiklik veebileht, mille järgi inimesed sind tunnevad. Kui lingid oma profiililt sellele veebilehele, kontrollime me, et see veebileht lingib tagasi sinu profiilile ning näitame profiilil visuaalset tähist."
|
||||
instructions_html: Kopeeri ja kleebi allpool olev kood oma lehe HTML lähtekoodi. Seejärel lisa oma kodulehe aadress profiili "Muuda profiili" vahekaardi ühte lisavälja ning salvesta muudatused.
|
||||
instructions_html: Kopeeri ja aseta allpool olev kood oma lehe HTML lähtekoodi. Seejärel lisa oma kodulehe aadress profiili „Muuda profiili“ vahekaardi ühte lisavälja ning salvesta muudatused.
|
||||
verification: Kinnitamine
|
||||
verified_links: Sinu kontrollitud lingid
|
||||
website_verification: Veebilehe kontrollimine
|
||||
|
||||
@ -61,6 +61,9 @@ en-GB:
|
||||
setting_default_quote_policy_private: Followers-only posts authored on Mastodon can't be quoted by others.
|
||||
setting_default_quote_policy_unlisted: When people quote you, their post will also be hidden from trending timelines.
|
||||
setting_default_sensitive: Sensitive media is hidden by default and can be revealed with a click
|
||||
setting_display_media_default: Warn before showing media marked as sensitive
|
||||
setting_display_media_hide_all: Warn before showing all media
|
||||
setting_display_media_show_all: Show all media without warning, including media marked as sensitive
|
||||
setting_emoji_style: How to display emojis. "Auto" will try using native emoji, but falls back to Twemoji for legacy browsers.
|
||||
setting_quick_boosting_html: When enabled, clicking on the %{boost_icon} Boost icon will immediately boost instead of opening the boost/quote dropdown menu. Relocates the quoting action to the %{options_icon} (Options) menu.
|
||||
setting_system_scrollbars_ui: Applies only to desktop browsers based on Safari and Chrome
|
||||
|
||||
@ -134,6 +134,7 @@ et:
|
||||
otp: 'Kaheastmelise autentimise kood telefonirakendusest või mõni taastekood:'
|
||||
webauthn: Kui see on USB-võti, sisesta see ning vajadusel aktiveeri.
|
||||
settings:
|
||||
email_subscriptions: Funktsionaalsuse keelamine säilitab olemasolevad tellijad, kuid peatab e-kirjade saatmise.
|
||||
indexable: Su profiilileht võib ilmuda Google, Bingi ja teiste otsimootorite tulemustes.
|
||||
show_application: Sa saad sõltumata sellest vaadata, milline äpp su postituse postitas.
|
||||
tag:
|
||||
@ -153,6 +154,7 @@ et:
|
||||
jurisdiction: Nimeta riik, kus elab see, kes arveid maksab. Kui tegemist on äriühingu või muu üksusega, märgi riik, kus see on asutatud, ning vajaduse korral linn, piirkond, territoorium või osariik.
|
||||
min_age: Vanus ei tohiks olla väiksem, kui sinu õigusruumis nõutav alampiir.
|
||||
user:
|
||||
chosen_languages: Kui see valik on märgitud, kuvatakse avalikul ajajoonel ainult valitud keeltes postitusi. See seadistus ei mõjuta sinu avalehe ajajoont ega loendeid.
|
||||
date_of_birth:
|
||||
one: "%{domain} saidi teenuste kasutamiseks pead olema vähemalt %{count} aastat vana. Me ei salvesta neid andmeid."
|
||||
other: "%{domain} saidi teenuste kasutamiseks pead olema vähemalt %{count} aastat vana. Me ei salvesta neid andmeid."
|
||||
@ -175,6 +177,7 @@ et:
|
||||
labels:
|
||||
account:
|
||||
attribution_domains: Veebisaidid, mis võivad sind algallikana mainida
|
||||
discoverable: Võimalda mind teistel avatada
|
||||
fields:
|
||||
name: Nimetus
|
||||
value: Sisu
|
||||
@ -222,6 +225,7 @@ et:
|
||||
email: E-posti aadress
|
||||
expires_in: Aegu pärast
|
||||
fields: Veebiviited
|
||||
filter_action: Filtritoimingud
|
||||
header: Päis
|
||||
honeypot: "%{label} (ära sisesta)"
|
||||
inbox_url: Sõnumivahendusserveri sisendkausta võrguaadress
|
||||
@ -353,6 +357,7 @@ et:
|
||||
hint: Lisainfo
|
||||
text: Reegel
|
||||
settings:
|
||||
email_subscriptions: Luba e-posti aadressiga liitumised
|
||||
indexable: Kaasa profiilileht otsimootoritesse
|
||||
show_application: Näita, millisest äpist postituse saatsid
|
||||
tag:
|
||||
|
||||
@ -27,7 +27,7 @@
|
||||
"pino": "^10.0.0",
|
||||
"pino-http": "^11.0.0",
|
||||
"prom-client": "^15.0.0",
|
||||
"uuid": "^13.0.0",
|
||||
"uuid": "^14.0.0",
|
||||
"ws": "^8.12.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
308
yarn.lock
308
yarn.lock
@ -2411,6 +2411,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@formatjs/bigdecimal@npm:0.2.1":
|
||||
version: 0.2.1
|
||||
resolution: "@formatjs/bigdecimal@npm:0.2.1"
|
||||
checksum: 10c0/04b72caf1608afe59f20313b73b80dba474b65485076c0f9a72b8145fcb0e04580a7a0592c2f88f739f4997b51326e2b9d6142e6c5b04c0c941d0294e2aa2f20
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@formatjs/cli@npm:^6.1.1":
|
||||
version: 6.7.4
|
||||
resolution: "@formatjs/cli@npm:6.7.4"
|
||||
@ -2461,6 +2468,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@formatjs/fast-memoize@npm:3.1.2":
|
||||
version: 3.1.2
|
||||
resolution: "@formatjs/fast-memoize@npm:3.1.2"
|
||||
checksum: 10c0/25af387ebb53146c8c09af34cda4ce82768f0855227ec854fb315d6dc2e7859e16724860fdea7991b3c7c5741154e3fcdd5169ef7a11ba1afb3ffd860613931c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@formatjs/icu-messageformat-parser@npm:3.5.3":
|
||||
version: 3.5.3
|
||||
resolution: "@formatjs/icu-messageformat-parser@npm:3.5.3"
|
||||
@ -2471,6 +2485,15 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@formatjs/icu-messageformat-parser@npm:3.5.4":
|
||||
version: 3.5.4
|
||||
resolution: "@formatjs/icu-messageformat-parser@npm:3.5.4"
|
||||
dependencies:
|
||||
"@formatjs/icu-skeleton-parser": "npm:2.1.4"
|
||||
checksum: 10c0/3ff5ab209b63113d6b1779a4e8de6ee2cf941f3ad3f3ede2c8e425953a25456b6a1d880d734845244615dc9887fad10b62e75dee38858c731e45812402110efb
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@formatjs/icu-skeleton-parser@npm:2.1.3":
|
||||
version: 2.1.3
|
||||
resolution: "@formatjs/icu-skeleton-parser@npm:2.1.3"
|
||||
@ -2480,6 +2503,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@formatjs/icu-skeleton-parser@npm:2.1.4":
|
||||
version: 2.1.4
|
||||
resolution: "@formatjs/icu-skeleton-parser@npm:2.1.4"
|
||||
checksum: 10c0/9d6292443e4079c5718c50e32041a3bd192047449d181ae87e8cb6ef78c90f156f8b2d454008c9d0c2920c215daee5250c0eb214d13a105522a631f269e71b3c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@formatjs/intl-localematcher@npm:0.8.2":
|
||||
version: 0.8.2
|
||||
resolution: "@formatjs/intl-localematcher@npm:0.8.2"
|
||||
@ -2489,26 +2519,33 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@formatjs/intl-pluralrules@npm:^6.0.0":
|
||||
version: 6.3.1
|
||||
resolution: "@formatjs/intl-pluralrules@npm:6.3.1"
|
||||
"@formatjs/intl-localematcher@npm:0.8.3":
|
||||
version: 0.8.3
|
||||
resolution: "@formatjs/intl-localematcher@npm:0.8.3"
|
||||
dependencies:
|
||||
"@formatjs/bigdecimal": "npm:0.2.0"
|
||||
"@formatjs/ecma402-abstract": "npm:3.2.0"
|
||||
"@formatjs/intl-localematcher": "npm:0.8.2"
|
||||
checksum: 10c0/8c0847d21d06276557316a01998528b79310b1c5411b0932b51dc88640a8ed6181c2221694d1d206a217f5a2be29227edfa52d1eca0873bc7c8c04b9a7dc2cc7
|
||||
"@formatjs/fast-memoize": "npm:3.1.2"
|
||||
checksum: 10c0/4693548ee9df74deb5f548635242ede0254507a531e04bb52d0983a653e7103bd4bfa1024e0b5b784fce1dadab57a31062bd7412b142f954c6614a7c9ee4cae7
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@formatjs/intl@npm:4.1.5":
|
||||
version: 4.1.5
|
||||
resolution: "@formatjs/intl@npm:4.1.5"
|
||||
"@formatjs/intl-pluralrules@npm:^6.0.0":
|
||||
version: 6.3.2
|
||||
resolution: "@formatjs/intl-pluralrules@npm:6.3.2"
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract": "npm:3.2.0"
|
||||
"@formatjs/fast-memoize": "npm:3.1.1"
|
||||
"@formatjs/icu-messageformat-parser": "npm:3.5.3"
|
||||
intl-messageformat: "npm:11.2.0"
|
||||
checksum: 10c0/2fd7c6211b38fd6178093e7358f015dc461bc80d428372064a0c144b1a32fce4050c34fa58b77af715b8dbf77909d408b59c7e714b0c612d1b573defe70828b2
|
||||
"@formatjs/bigdecimal": "npm:0.2.1"
|
||||
"@formatjs/intl-localematcher": "npm:0.8.3"
|
||||
checksum: 10c0/7ff9a9a48efc970d6ebcb0902dc28fcf6577fd53f07c2b775ac918858a08d934317c654f6e481a978eeea2146a0e84ab7604f991d8bbdb147b42a004f582bec8
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@formatjs/intl@npm:4.1.6":
|
||||
version: 4.1.6
|
||||
resolution: "@formatjs/intl@npm:4.1.6"
|
||||
dependencies:
|
||||
"@formatjs/fast-memoize": "npm:3.1.2"
|
||||
"@formatjs/icu-messageformat-parser": "npm:3.5.4"
|
||||
intl-messageformat: "npm:11.2.1"
|
||||
checksum: 10c0/d1bdd4ba373efc249090970c54bb7b5373f88d4294b9e6c889f91c8214b047715578b4fde4c917f809fddd0d52d3ec360ddc9a96def9e7c237c4024161ca29a0
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -2529,11 +2566,11 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@formatjs/ts-transformer@npm:4.4.3":
|
||||
version: 4.4.3
|
||||
resolution: "@formatjs/ts-transformer@npm:4.4.3"
|
||||
"@formatjs/ts-transformer@npm:4.4.4":
|
||||
version: 4.4.4
|
||||
resolution: "@formatjs/ts-transformer@npm:4.4.4"
|
||||
dependencies:
|
||||
"@formatjs/icu-messageformat-parser": "npm:3.5.3"
|
||||
"@formatjs/icu-messageformat-parser": "npm:3.5.4"
|
||||
"@types/node": "npm:22 || 24"
|
||||
json-stable-stringify: "npm:^1.3.0"
|
||||
typescript: "npm:^5.6 || 6"
|
||||
@ -2542,18 +2579,18 @@ __metadata:
|
||||
peerDependenciesMeta:
|
||||
ts-jest:
|
||||
optional: true
|
||||
checksum: 10c0/f5a4b32098e2c37c7ab7b40a798b6fa8e24e23516384579a698175ab214e2052e45256cc39880891de8db583c326a2e9f8581e1d4f7a0dc5d4aaa2291dec058d
|
||||
checksum: 10c0/88aecd69792c34d3dbe3da3866422c3c6668102d316dd0bad848ec56ac1cd11d011e4b9253b72e0241e934a68d6b0144dda85ab0e200019c572edab4b257d93b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@formatjs/unplugin@npm:^1.1.5":
|
||||
version: 1.1.6
|
||||
resolution: "@formatjs/unplugin@npm:1.1.6"
|
||||
version: 1.1.7
|
||||
resolution: "@formatjs/unplugin@npm:1.1.7"
|
||||
dependencies:
|
||||
"@formatjs/icu-messageformat-parser": "npm:3.5.3"
|
||||
"@formatjs/ts-transformer": "npm:4.4.3"
|
||||
"@formatjs/icu-messageformat-parser": "npm:3.5.4"
|
||||
"@formatjs/ts-transformer": "npm:4.4.4"
|
||||
magic-string: "npm:^0.30.0"
|
||||
oxc-parser: "npm:^0.120.0"
|
||||
oxc-parser: "npm:^0.124.0"
|
||||
unplugin: "npm:^3.0.0"
|
||||
peerDependencies:
|
||||
"@rspack/core": ">=1"
|
||||
@ -2572,7 +2609,7 @@ __metadata:
|
||||
optional: true
|
||||
webpack:
|
||||
optional: true
|
||||
checksum: 10c0/9371206edfb7d0197a04fc64b6095eea759b04a135fc766a9fe49b9252a65c7fae1c487f40952e3ae6e82ca77ee0aae456c46e42ecc7753f1990bc95e673f064
|
||||
checksum: 10c0/4578e27f0063095ac11dc717c42a483bd5e29e8eeba5ddafe95238f7c124a1c3f86edf933591f7efa3af950e5031bda77dd639fc10a11e11aae88ccdee61a0d2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -2995,7 +3032,7 @@ __metadata:
|
||||
typescript: "npm:~6.0.0"
|
||||
typescript-eslint: "npm:^8.55.0"
|
||||
utf-8-validate: "npm:^6.0.3"
|
||||
uuid: "npm:^13.0.0"
|
||||
uuid: "npm:^14.0.0"
|
||||
ws: "npm:^8.12.1"
|
||||
dependenciesMeta:
|
||||
bufferutil:
|
||||
@ -3042,7 +3079,7 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@napi-rs/wasm-runtime@npm:^1.1.1, @napi-rs/wasm-runtime@npm:^1.1.3":
|
||||
"@napi-rs/wasm-runtime@npm:^1.1.2, @napi-rs/wasm-runtime@npm:^1.1.3":
|
||||
version: 1.1.3
|
||||
resolution: "@napi-rs/wasm-runtime@npm:1.1.3"
|
||||
dependencies:
|
||||
@ -3156,162 +3193,155 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-android-arm-eabi@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-android-arm-eabi@npm:0.120.0"
|
||||
"@oxc-parser/binding-android-arm-eabi@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-android-arm-eabi@npm:0.124.0"
|
||||
conditions: os=android & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-android-arm64@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-android-arm64@npm:0.120.0"
|
||||
"@oxc-parser/binding-android-arm64@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-android-arm64@npm:0.124.0"
|
||||
conditions: os=android & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-darwin-arm64@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-darwin-arm64@npm:0.120.0"
|
||||
"@oxc-parser/binding-darwin-arm64@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-darwin-arm64@npm:0.124.0"
|
||||
conditions: os=darwin & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-darwin-x64@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-darwin-x64@npm:0.120.0"
|
||||
"@oxc-parser/binding-darwin-x64@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-darwin-x64@npm:0.124.0"
|
||||
conditions: os=darwin & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-freebsd-x64@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-freebsd-x64@npm:0.120.0"
|
||||
"@oxc-parser/binding-freebsd-x64@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-freebsd-x64@npm:0.124.0"
|
||||
conditions: os=freebsd & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-linux-arm-gnueabihf@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-linux-arm-gnueabihf@npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-arm-gnueabihf@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-linux-arm-gnueabihf@npm:0.124.0"
|
||||
conditions: os=linux & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-linux-arm-musleabihf@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-linux-arm-musleabihf@npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-arm-musleabihf@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-linux-arm-musleabihf@npm:0.124.0"
|
||||
conditions: os=linux & cpu=arm
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-linux-arm64-gnu@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-linux-arm64-gnu@npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-arm64-gnu@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-linux-arm64-gnu@npm:0.124.0"
|
||||
conditions: os=linux & cpu=arm64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-linux-arm64-musl@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-linux-arm64-musl@npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-arm64-musl@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-linux-arm64-musl@npm:0.124.0"
|
||||
conditions: os=linux & cpu=arm64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-linux-ppc64-gnu@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-linux-ppc64-gnu@npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-ppc64-gnu@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-linux-ppc64-gnu@npm:0.124.0"
|
||||
conditions: os=linux & cpu=ppc64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-linux-riscv64-gnu@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-linux-riscv64-gnu@npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-riscv64-gnu@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-linux-riscv64-gnu@npm:0.124.0"
|
||||
conditions: os=linux & cpu=riscv64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-linux-riscv64-musl@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-linux-riscv64-musl@npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-riscv64-musl@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-linux-riscv64-musl@npm:0.124.0"
|
||||
conditions: os=linux & cpu=riscv64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-linux-s390x-gnu@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-linux-s390x-gnu@npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-s390x-gnu@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-linux-s390x-gnu@npm:0.124.0"
|
||||
conditions: os=linux & cpu=s390x & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-linux-x64-gnu@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-linux-x64-gnu@npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-x64-gnu@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-linux-x64-gnu@npm:0.124.0"
|
||||
conditions: os=linux & cpu=x64 & libc=glibc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-linux-x64-musl@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-linux-x64-musl@npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-x64-musl@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-linux-x64-musl@npm:0.124.0"
|
||||
conditions: os=linux & cpu=x64 & libc=musl
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-openharmony-arm64@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-openharmony-arm64@npm:0.120.0"
|
||||
"@oxc-parser/binding-openharmony-arm64@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-openharmony-arm64@npm:0.124.0"
|
||||
conditions: os=openharmony & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-wasm32-wasi@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-wasm32-wasi@npm:0.120.0"
|
||||
"@oxc-parser/binding-wasm32-wasi@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-wasm32-wasi@npm:0.124.0"
|
||||
dependencies:
|
||||
"@napi-rs/wasm-runtime": "npm:^1.1.1"
|
||||
"@napi-rs/wasm-runtime": "npm:^1.1.2"
|
||||
conditions: cpu=wasm32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-win32-arm64-msvc@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-win32-arm64-msvc@npm:0.120.0"
|
||||
"@oxc-parser/binding-win32-arm64-msvc@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-win32-arm64-msvc@npm:0.124.0"
|
||||
conditions: os=win32 & cpu=arm64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-win32-ia32-msvc@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-win32-ia32-msvc@npm:0.120.0"
|
||||
"@oxc-parser/binding-win32-ia32-msvc@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-win32-ia32-msvc@npm:0.124.0"
|
||||
conditions: os=win32 & cpu=ia32
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-parser/binding-win32-x64-msvc@npm:0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-parser/binding-win32-x64-msvc@npm:0.120.0"
|
||||
"@oxc-parser/binding-win32-x64-msvc@npm:0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-parser/binding-win32-x64-msvc@npm:0.124.0"
|
||||
conditions: os=win32 & cpu=x64
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-project/types@npm:=0.124.0":
|
||||
"@oxc-project/types@npm:=0.124.0, @oxc-project/types@npm:^0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "@oxc-project/types@npm:0.124.0"
|
||||
checksum: 10c0/9564ee3ce41f4b87802ffd0d62a7602d27f4503fbd39c1bedab98d54fde06e2ac254a8f85d8f679af1281a26e8fc7aa053fadbb3e09e786b38178eb38a8e2fb3
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxc-project/types@npm:^0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "@oxc-project/types@npm:0.120.0"
|
||||
checksum: 10c0/3090ca95ed1467ae790a79cf7aa49d1ea4ac390dbfccb7afb914c138034d01e72115e2e137a3cc76f409ba424e4d2b160a599fe137c88033ad68ba2df1e40b29
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@oxfmt/binding-android-arm-eabi@npm:0.33.0":
|
||||
version: 0.33.0
|
||||
resolution: "@oxfmt/binding-android-arm-eabi@npm:0.33.0"
|
||||
@ -8801,14 +8831,13 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"intl-messageformat@npm:11.2.0, intl-messageformat@npm:^11.0.0":
|
||||
version: 11.2.0
|
||||
resolution: "intl-messageformat@npm:11.2.0"
|
||||
"intl-messageformat@npm:11.2.1, intl-messageformat@npm:^11.0.0":
|
||||
version: 11.2.1
|
||||
resolution: "intl-messageformat@npm:11.2.1"
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract": "npm:3.2.0"
|
||||
"@formatjs/fast-memoize": "npm:3.1.1"
|
||||
"@formatjs/icu-messageformat-parser": "npm:3.5.3"
|
||||
checksum: 10c0/0f0a92324ef61c885902ff41c99754a65f0cc5cbe25d690c1771605117df4f97a786bb06dec50f12a7047e4cb2fab1f2516002df32e93be6ac02e1967e928e44
|
||||
"@formatjs/fast-memoize": "npm:3.1.2"
|
||||
"@formatjs/icu-messageformat-parser": "npm:3.5.4"
|
||||
checksum: 10c0/c4d2e43c2e7940a8dbd75d7a3b77d722c7ac8802707f7410067097e3a923243343bd36367edb4e922b13d1a10425a2f52c544c65c9368841d481816ed04c6c2b
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -10674,31 +10703,31 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"oxc-parser@npm:^0.120.0":
|
||||
version: 0.120.0
|
||||
resolution: "oxc-parser@npm:0.120.0"
|
||||
"oxc-parser@npm:^0.124.0":
|
||||
version: 0.124.0
|
||||
resolution: "oxc-parser@npm:0.124.0"
|
||||
dependencies:
|
||||
"@oxc-parser/binding-android-arm-eabi": "npm:0.120.0"
|
||||
"@oxc-parser/binding-android-arm64": "npm:0.120.0"
|
||||
"@oxc-parser/binding-darwin-arm64": "npm:0.120.0"
|
||||
"@oxc-parser/binding-darwin-x64": "npm:0.120.0"
|
||||
"@oxc-parser/binding-freebsd-x64": "npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-arm-gnueabihf": "npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-arm-musleabihf": "npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-arm64-gnu": "npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-arm64-musl": "npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-ppc64-gnu": "npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-riscv64-gnu": "npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-riscv64-musl": "npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-s390x-gnu": "npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-x64-gnu": "npm:0.120.0"
|
||||
"@oxc-parser/binding-linux-x64-musl": "npm:0.120.0"
|
||||
"@oxc-parser/binding-openharmony-arm64": "npm:0.120.0"
|
||||
"@oxc-parser/binding-wasm32-wasi": "npm:0.120.0"
|
||||
"@oxc-parser/binding-win32-arm64-msvc": "npm:0.120.0"
|
||||
"@oxc-parser/binding-win32-ia32-msvc": "npm:0.120.0"
|
||||
"@oxc-parser/binding-win32-x64-msvc": "npm:0.120.0"
|
||||
"@oxc-project/types": "npm:^0.120.0"
|
||||
"@oxc-parser/binding-android-arm-eabi": "npm:0.124.0"
|
||||
"@oxc-parser/binding-android-arm64": "npm:0.124.0"
|
||||
"@oxc-parser/binding-darwin-arm64": "npm:0.124.0"
|
||||
"@oxc-parser/binding-darwin-x64": "npm:0.124.0"
|
||||
"@oxc-parser/binding-freebsd-x64": "npm:0.124.0"
|
||||
"@oxc-parser/binding-linux-arm-gnueabihf": "npm:0.124.0"
|
||||
"@oxc-parser/binding-linux-arm-musleabihf": "npm:0.124.0"
|
||||
"@oxc-parser/binding-linux-arm64-gnu": "npm:0.124.0"
|
||||
"@oxc-parser/binding-linux-arm64-musl": "npm:0.124.0"
|
||||
"@oxc-parser/binding-linux-ppc64-gnu": "npm:0.124.0"
|
||||
"@oxc-parser/binding-linux-riscv64-gnu": "npm:0.124.0"
|
||||
"@oxc-parser/binding-linux-riscv64-musl": "npm:0.124.0"
|
||||
"@oxc-parser/binding-linux-s390x-gnu": "npm:0.124.0"
|
||||
"@oxc-parser/binding-linux-x64-gnu": "npm:0.124.0"
|
||||
"@oxc-parser/binding-linux-x64-musl": "npm:0.124.0"
|
||||
"@oxc-parser/binding-openharmony-arm64": "npm:0.124.0"
|
||||
"@oxc-parser/binding-wasm32-wasi": "npm:0.124.0"
|
||||
"@oxc-parser/binding-win32-arm64-msvc": "npm:0.124.0"
|
||||
"@oxc-parser/binding-win32-ia32-msvc": "npm:0.124.0"
|
||||
"@oxc-parser/binding-win32-x64-msvc": "npm:0.124.0"
|
||||
"@oxc-project/types": "npm:^0.124.0"
|
||||
dependenciesMeta:
|
||||
"@oxc-parser/binding-android-arm-eabi":
|
||||
optional: true
|
||||
@ -10740,7 +10769,7 @@ __metadata:
|
||||
optional: true
|
||||
"@oxc-parser/binding-win32-x64-msvc":
|
||||
optional: true
|
||||
checksum: 10c0/12b717560645480f12954b2eaaabcf8043dfc7a8bc0105627ff11d7958d52a90eaf9f5cfb6af82f148d5e69ef7c57ac5a84f8834fc1edda695b2b09d6bb4e73d
|
||||
checksum: 10c0/06bd6b937f0574f49b74112cf2af3fb9990e7445d40126fca2c6ceb950c7ba5e10fbb223d941341c8207376620f6ee37466779a4fbff78ed7a67e15df3459d9c
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -12052,17 +12081,16 @@ __metadata:
|
||||
linkType: hard
|
||||
|
||||
"react-intl@npm:^10.0.0":
|
||||
version: 10.1.1
|
||||
resolution: "react-intl@npm:10.1.1"
|
||||
version: 10.1.2
|
||||
resolution: "react-intl@npm:10.1.2"
|
||||
dependencies:
|
||||
"@formatjs/ecma402-abstract": "npm:3.2.0"
|
||||
"@formatjs/icu-messageformat-parser": "npm:3.5.3"
|
||||
"@formatjs/intl": "npm:4.1.5"
|
||||
intl-messageformat: "npm:11.2.0"
|
||||
"@formatjs/icu-messageformat-parser": "npm:3.5.4"
|
||||
"@formatjs/intl": "npm:4.1.6"
|
||||
intl-messageformat: "npm:11.2.1"
|
||||
peerDependencies:
|
||||
"@types/react": 19
|
||||
react: 19
|
||||
checksum: 10c0/97ac04e5813d22bb0f7cbc7332c41a683b61deddd9f1e2720c72536bc74abb23713b02602bf69c1fbd99ab1d087ff1b334a1ef89b2332c867b9030187d128dd9
|
||||
checksum: 10c0/785a4c0d16a5cb64888b23f6f2d8a87296bde05f1f834c34c5f7f6a73dcab6115afbbb0d4e71471fb287a9c919f32b54ed4b6284e60d21368dec1244eaf3e736
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
@ -14666,12 +14694,12 @@ __metadata:
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"uuid@npm:^13.0.0":
|
||||
version: 13.0.0
|
||||
resolution: "uuid@npm:13.0.0"
|
||||
"uuid@npm:^14.0.0":
|
||||
version: 14.0.0
|
||||
resolution: "uuid@npm:14.0.0"
|
||||
bin:
|
||||
uuid: dist-node/bin/uuid
|
||||
checksum: 10c0/950e4c18d57fef6c69675344f5700a08af21e26b9eff2bf2180427564297368c538ea11ac9fb2e6528b17fc3966a9fd2c5049361b0b63c7d654f3c550c9b3d67
|
||||
checksum: 10c0/a57ae7794c45005c1a9208989196c5baf79a7679c30f43c1bee9033a2c4d113a2cea216fa6fcc9663b08b0d55635df1a7c6eb7e7f3d21c3e50688c698fa39a50
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user