mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-09 20:29:36 +02:00
remove memoization from individual table columns
- causes issues with drag/drop state
This commit is contained in:
@@ -1,5 +1,3 @@
|
|||||||
import { memo } from 'react';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ItemTableListInnerColumn,
|
ItemTableListInnerColumn,
|
||||||
TableColumnContainer,
|
TableColumnContainer,
|
||||||
@@ -7,7 +5,7 @@ import {
|
|||||||
import { ItemListItem } from '/@/renderer/components/item-list/types';
|
import { ItemListItem } from '/@/renderer/components/item-list/types';
|
||||||
import { ActionIcon } from '/@/shared/components/action-icon/action-icon';
|
import { ActionIcon } from '/@/shared/components/action-icon/action-icon';
|
||||||
|
|
||||||
const ActionsColumnBase = (props: ItemTableListInnerColumn) => {
|
export const ActionsColumn = (props: ItemTableListInnerColumn) => {
|
||||||
const row: any = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
const row: any = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
||||||
|
|
||||||
const handleActionClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
const handleActionClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
||||||
@@ -53,16 +51,3 @@ const ActionsColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
|
|
||||||
return <TableColumnContainer {...props}> </TableColumnContainer>;
|
return <TableColumnContainer {...props}> </TableColumnContainer>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ActionsColumn = memo(ActionsColumnBase, (prevProps, nextProps) => {
|
|
||||||
const prevItem = prevProps.getRowItem?.(prevProps.rowIndex);
|
|
||||||
const nextItem = nextProps.getRowItem?.(nextProps.rowIndex);
|
|
||||||
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevItem === nextItem
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { memo } from 'react';
|
|
||||||
|
|
||||||
import styles from './album-artists-column.module.css';
|
import styles from './album-artists-column.module.css';
|
||||||
|
|
||||||
@@ -54,14 +53,4 @@ const AlbumArtistsColumn = (props: ItemTableListInnerColumn) => {
|
|||||||
return <ColumnSkeletonVariable {...props} />;
|
return <ColumnSkeletonVariable {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const AlbumArtistsColumnMemo = memo(AlbumArtistsColumn, (prevProps, nextProps) => {
|
export { AlbumArtistsColumn };
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevProps.size === nextProps.size
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
export { AlbumArtistsColumnMemo as AlbumArtistsColumn };
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { memo, useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import { generatePath, Link } from 'react-router';
|
import { generatePath, Link } from 'react-router';
|
||||||
|
|
||||||
import styles from './album-column.module.css';
|
import styles from './album-column.module.css';
|
||||||
@@ -75,18 +75,4 @@ const AlbumColumn = (props: ItemTableListInnerColumn) => {
|
|||||||
return <ColumnSkeletonVariable {...props} />;
|
return <ColumnSkeletonVariable {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const AlbumColumnMemo = memo(AlbumColumn, (prevProps, nextProps) => {
|
export { AlbumColumn };
|
||||||
const prevItem = prevProps.getRowItem?.(prevProps.rowIndex);
|
|
||||||
const nextItem = nextProps.getRowItem?.(nextProps.rowIndex);
|
|
||||||
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevProps.size === nextProps.size &&
|
|
||||||
prevItem === nextItem
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
export { AlbumColumnMemo as AlbumColumn };
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { Fragment, memo, useMemo } from 'react';
|
import { Fragment, useMemo } from 'react';
|
||||||
import { generatePath, Link } from 'react-router';
|
import { generatePath, Link } from 'react-router';
|
||||||
|
|
||||||
import styles from './album-artists-column.module.css';
|
import styles from './album-artists-column.module.css';
|
||||||
@@ -109,15 +109,4 @@ const BaseArtistsColumn = (props: ItemTableListInnerColumn) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const ArtistsColumnMemo = memo(BaseArtistsColumn, (prevProps, nextProps) => {
|
export { BaseArtistsColumn as ArtistsColumn };
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevProps.itemType === nextProps.itemType &&
|
|
||||||
prevProps.size === nextProps.size
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
export { ArtistsColumnMemo as ArtistsColumn };
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { memo } from 'react';
|
|
||||||
|
|
||||||
import styles from './composer-column.module.css';
|
import styles from './composer-column.module.css';
|
||||||
|
|
||||||
@@ -12,7 +11,7 @@ import {
|
|||||||
import { JoinedArtists } from '/@/renderer/features/albums/components/joined-artists';
|
import { JoinedArtists } from '/@/renderer/features/albums/components/joined-artists';
|
||||||
import { Album, RelatedArtist, Song } from '/@/shared/types/domain-types';
|
import { Album, RelatedArtist, Song } from '/@/shared/types/domain-types';
|
||||||
|
|
||||||
const ComposerColumn = (props: ItemTableListInnerColumn) => {
|
export const ComposerColumn = (props: ItemTableListInnerColumn) => {
|
||||||
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
||||||
const item = rowItem as Album | Song | undefined;
|
const item = rowItem as Album | Song | undefined;
|
||||||
|
|
||||||
@@ -44,19 +43,3 @@ const ComposerColumn = (props: ItemTableListInnerColumn) => {
|
|||||||
|
|
||||||
return <ColumnSkeletonVariable {...props} />;
|
return <ColumnSkeletonVariable {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ComposerColumnMemo = memo(ComposerColumn, (prevProps, nextProps) => {
|
|
||||||
const prevItem = prevProps.getRowItem?.(prevProps.rowIndex);
|
|
||||||
const nextItem = nextProps.getRowItem?.(nextProps.rowIndex);
|
|
||||||
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevProps.size === nextProps.size &&
|
|
||||||
prevItem === nextItem
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
export { ComposerColumnMemo as ComposerColumn };
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { memo, useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ColumnNullFallback,
|
ColumnNullFallback,
|
||||||
@@ -62,14 +62,7 @@ const DateColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
return <ColumnSkeletonFixed {...props} />;
|
return <ColumnSkeletonFixed {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const DateColumn = memo(DateColumnBase, (prevProps, nextProps) => {
|
export const DateColumn = DateColumnBase;
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
const AbsoluteDateColumnBase = (props: ItemTableListInnerColumn) => {
|
const AbsoluteDateColumnBase = (props: ItemTableListInnerColumn) => {
|
||||||
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
||||||
@@ -152,15 +145,7 @@ const AbsoluteDateColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
return <ColumnSkeletonFixed {...props} />;
|
return <ColumnSkeletonFixed {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const AbsoluteDateColumn = memo(AbsoluteDateColumnBase, (prevProps, nextProps) => {
|
export const AbsoluteDateColumn = AbsoluteDateColumnBase;
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevProps.type === nextProps.type
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
const RelativeDateColumnBase = (props: ItemTableListInnerColumn) => {
|
const RelativeDateColumnBase = (props: ItemTableListInnerColumn) => {
|
||||||
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
||||||
@@ -193,11 +178,4 @@ const RelativeDateColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
return <ColumnSkeletonFixed {...props} />;
|
return <ColumnSkeletonFixed {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const RelativeDateColumn = memo(RelativeDateColumnBase, (prevProps, nextProps) => {
|
export const RelativeDateColumn = RelativeDateColumnBase;
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import { memo } from 'react';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ColumnNullFallback,
|
ColumnNullFallback,
|
||||||
ColumnSkeletonFixed,
|
ColumnSkeletonFixed,
|
||||||
@@ -7,7 +5,7 @@ import {
|
|||||||
TableColumnTextContainer,
|
TableColumnTextContainer,
|
||||||
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
|
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
|
||||||
|
|
||||||
const DefaultColumnBase = (props: ItemTableListInnerColumn) => {
|
export const DefaultColumn = (props: ItemTableListInnerColumn) => {
|
||||||
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
||||||
const row: any | undefined = (rowItem as any)?.[props.columns[props.columnIndex].id];
|
const row: any | undefined = (rowItem as any)?.[props.columns[props.columnIndex].id];
|
||||||
|
|
||||||
@@ -21,12 +19,3 @@ const DefaultColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
|
|
||||||
return <ColumnSkeletonFixed {...props} />;
|
return <ColumnSkeletonFixed {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const DefaultColumn = memo(DefaultColumnBase, (prevProps, nextProps) => {
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import formatDuration from 'format-duration';
|
import formatDuration from 'format-duration';
|
||||||
import React, { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ColumnNullFallback,
|
ColumnNullFallback,
|
||||||
@@ -27,11 +27,4 @@ const DurationColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
return <ColumnSkeletonFixed {...props} />;
|
return <ColumnSkeletonFixed {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const DurationColumn = React.memo(DurationColumnBase, (prevProps, nextProps) => {
|
export const DurationColumn = DurationColumnBase;
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import { memo } from 'react';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ItemTableListInnerColumn,
|
ItemTableListInnerColumn,
|
||||||
TableColumnContainer,
|
TableColumnContainer,
|
||||||
@@ -9,7 +7,7 @@ import { useIsMutatingCreateFavorite } from '/@/renderer/features/shared/mutatio
|
|||||||
import { useIsMutatingDeleteFavorite } from '/@/renderer/features/shared/mutations/delete-favorite-mutation';
|
import { useIsMutatingDeleteFavorite } from '/@/renderer/features/shared/mutations/delete-favorite-mutation';
|
||||||
import { ActionIcon } from '/@/shared/components/action-icon/action-icon';
|
import { ActionIcon } from '/@/shared/components/action-icon/action-icon';
|
||||||
|
|
||||||
const FavoriteColumnBase = (props: ItemTableListInnerColumn) => {
|
export const FavoriteColumn = (props: ItemTableListInnerColumn) => {
|
||||||
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
||||||
const row: boolean | undefined = rowItem?.[props.columns[props.columnIndex].id];
|
const row: boolean | undefined = rowItem?.[props.columns[props.columnIndex].id];
|
||||||
|
|
||||||
@@ -57,19 +55,3 @@ const FavoriteColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
|
|
||||||
return <TableColumnContainer {...props}> </TableColumnContainer>;
|
return <TableColumnContainer {...props}> </TableColumnContainer>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const FavoriteColumn = memo(FavoriteColumnBase, (prevProps, nextProps) => {
|
|
||||||
const prevItem = prevProps.getRowItem?.(prevProps.rowIndex);
|
|
||||||
const nextItem = nextProps.getRowItem?.(nextProps.rowIndex);
|
|
||||||
const prevFavorite = prevItem?.[prevProps.columns[prevProps.columnIndex].id];
|
|
||||||
const nextFavorite = nextItem?.[nextProps.columns[nextProps.columnIndex].id];
|
|
||||||
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevItem === nextItem &&
|
|
||||||
prevFavorite === nextFavorite
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { memo, useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import { generatePath, Link } from 'react-router';
|
import { generatePath, Link } from 'react-router';
|
||||||
|
|
||||||
import styles from './genre-badge-column.module.css';
|
import styles from './genre-badge-column.module.css';
|
||||||
@@ -60,13 +60,4 @@ const GenreBadgeColumn = (props: ItemTableListInnerColumn) => {
|
|||||||
return <ColumnSkeletonVariable {...props} />;
|
return <ColumnSkeletonVariable {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const GenreColumnMemo = memo(GenreBadgeColumn, (prevProps, nextProps) => {
|
export { GenreBadgeColumn };
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
export { GenreColumnMemo as GenreBadgeColumn };
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { Fragment, memo, useMemo } from 'react';
|
import { Fragment, useMemo } from 'react';
|
||||||
import { generatePath, Link } from 'react-router';
|
import { generatePath, Link } from 'react-router';
|
||||||
|
|
||||||
import styles from './genre-column.module.css';
|
import styles from './genre-column.module.css';
|
||||||
@@ -64,14 +64,4 @@ const GenreColumn = (props: ItemTableListInnerColumn) => {
|
|||||||
return <ColumnSkeletonVariable {...props} />;
|
return <ColumnSkeletonVariable {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const GenreColumnMemo = memo(GenreColumn, (prevProps, nextProps) => {
|
export { GenreColumn };
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevProps.size === nextProps.size
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
export { GenreColumnMemo as GenreColumn };
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { memo, useState } from 'react';
|
import { useState } from 'react';
|
||||||
|
|
||||||
import styles from './image-column.module.css';
|
import styles from './image-column.module.css';
|
||||||
|
|
||||||
@@ -137,17 +137,4 @@ const ImageColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ImageColumn = memo(ImageColumnBase, (prevProps, nextProps) => {
|
export const ImageColumn = ImageColumnBase;
|
||||||
const prevItem = prevProps.getRowItem?.(prevProps.rowIndex);
|
|
||||||
const nextItem = nextProps.getRowItem?.(nextProps.rowIndex);
|
|
||||||
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevProps.itemType === nextProps.itemType &&
|
|
||||||
prevProps.size === nextProps.size &&
|
|
||||||
prevItem === nextItem
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import { memo } from 'react';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ColumnNullFallback,
|
ColumnNullFallback,
|
||||||
ColumnSkeletonFixed,
|
ColumnSkeletonFixed,
|
||||||
@@ -7,7 +5,7 @@ import {
|
|||||||
TableColumnTextContainer,
|
TableColumnTextContainer,
|
||||||
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
|
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
|
||||||
|
|
||||||
const NumericColumnBase = (props: ItemTableListInnerColumn) => {
|
export const NumericColumn = (props: ItemTableListInnerColumn) => {
|
||||||
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
||||||
const row: number | undefined = (rowItem as any)?.[props.columns[props.columnIndex].id];
|
const row: number | undefined = (rowItem as any)?.[props.columns[props.columnIndex].id];
|
||||||
|
|
||||||
@@ -21,12 +19,3 @@ const NumericColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
|
|
||||||
return <ColumnSkeletonFixed {...props} />;
|
return <ColumnSkeletonFixed {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const NumericColumn = memo(NumericColumnBase, (prevProps, nextProps) => {
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import { memo } from 'react';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ColumnNullFallback,
|
ColumnNullFallback,
|
||||||
ColumnSkeletonVariable,
|
ColumnSkeletonVariable,
|
||||||
@@ -7,7 +5,7 @@ import {
|
|||||||
TableColumnTextContainer,
|
TableColumnTextContainer,
|
||||||
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
|
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
|
||||||
|
|
||||||
const PathColumnBase = (props: ItemTableListInnerColumn) => {
|
export const PathColumn = (props: ItemTableListInnerColumn) => {
|
||||||
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
||||||
const row: string | undefined = (rowItem as any)?.[props.columns[props.columnIndex].id];
|
const row: string | undefined = (rowItem as any)?.[props.columns[props.columnIndex].id];
|
||||||
|
|
||||||
@@ -25,12 +23,3 @@ const PathColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
|
|
||||||
return <ColumnSkeletonVariable {...props} />;
|
return <ColumnSkeletonVariable {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const PathColumn = memo(PathColumnBase, (prevProps, nextProps) => {
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
+2
-15
@@ -1,4 +1,4 @@
|
|||||||
import { memo, useCallback } from 'react';
|
import { useCallback } from 'react';
|
||||||
import { useTranslation } from 'react-i18next';
|
import { useTranslation } from 'react-i18next';
|
||||||
import { useParams } from 'react-router';
|
import { useParams } from 'react-router';
|
||||||
|
|
||||||
@@ -364,17 +364,4 @@ const PlaylistReorderColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const PlaylistReorderColumn = memo(PlaylistReorderColumnBase, (prevProps, nextProps) => {
|
export const PlaylistReorderColumn = PlaylistReorderColumnBase;
|
||||||
const prevItem = prevProps.getRowItem?.(prevProps.rowIndex);
|
|
||||||
const nextItem = nextProps.getRowItem?.(nextProps.rowIndex);
|
|
||||||
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevProps.itemType === nextProps.itemType &&
|
|
||||||
prevProps.enableHeader === nextProps.enableHeader &&
|
|
||||||
prevItem === nextItem
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import { memo } from 'react';
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ItemTableListInnerColumn,
|
ItemTableListInnerColumn,
|
||||||
TableColumnContainer,
|
TableColumnContainer,
|
||||||
@@ -8,7 +6,7 @@ import { ItemListItem } from '/@/renderer/components/item-list/types';
|
|||||||
import { useIsMutatingRating } from '/@/renderer/features/shared/mutations/set-rating-mutation';
|
import { useIsMutatingRating } from '/@/renderer/features/shared/mutations/set-rating-mutation';
|
||||||
import { Rating } from '/@/shared/components/rating/rating';
|
import { Rating } from '/@/shared/components/rating/rating';
|
||||||
|
|
||||||
const RatingColumnBase = (props: ItemTableListInnerColumn) => {
|
export const RatingColumn = (props: ItemTableListInnerColumn) => {
|
||||||
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
||||||
const row: null | number | undefined = rowItem?.[props.columns[props.columnIndex].id];
|
const row: null | number | undefined = rowItem?.[props.columns[props.columnIndex].id];
|
||||||
|
|
||||||
@@ -42,19 +40,3 @@ const RatingColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
|
|
||||||
return <TableColumnContainer {...props}> </TableColumnContainer>;
|
return <TableColumnContainer {...props}> </TableColumnContainer>;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const RatingColumn = memo(RatingColumnBase, (prevProps, nextProps) => {
|
|
||||||
const prevItem = prevProps.getRowItem?.(prevProps.rowIndex);
|
|
||||||
const nextItem = nextProps.getRowItem?.(nextProps.rowIndex);
|
|
||||||
const prevRating = prevItem?.[prevProps.columns[prevProps.columnIndex].id];
|
|
||||||
const nextRating = nextItem?.[nextProps.columns[nextProps.columnIndex].id];
|
|
||||||
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevItem === nextItem &&
|
|
||||||
prevRating === nextRating
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { memo } from 'react';
|
|
||||||
|
|
||||||
import styles from './row-index-column.module.css';
|
import styles from './row-index-column.module.css';
|
||||||
|
|
||||||
@@ -32,18 +31,7 @@ const RowIndexColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const RowIndexColumn = memo(RowIndexColumnBase, (prevProps, nextProps) => {
|
export const RowIndexColumn = RowIndexColumnBase;
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevProps.itemType === nextProps.itemType &&
|
|
||||||
prevProps.enableExpansion === nextProps.enableExpansion &&
|
|
||||||
prevProps.enableHeader === nextProps.enableHeader &&
|
|
||||||
prevProps.startRowIndex === nextProps.startRowIndex
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
const DefaultRowIndexColumn = (props: ItemTableListInnerColumn) => {
|
const DefaultRowIndexColumn = (props: ItemTableListInnerColumn) => {
|
||||||
const {
|
const {
|
||||||
@@ -125,30 +113,28 @@ const QueueSongRowIndexColumn = (props: ItemTableListInnerColumn) => {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const InnerQueueSongRowIndexColumn = memo(
|
const InnerQueueSongRowIndexColumn = (
|
||||||
(
|
props: ItemTableListInnerColumn & {
|
||||||
props: ItemTableListInnerColumn & {
|
adjustedRowIndex: number;
|
||||||
adjustedRowIndex: number;
|
isActive: boolean;
|
||||||
isActive: boolean;
|
isPlaying: boolean;
|
||||||
isPlaying: boolean;
|
|
||||||
},
|
|
||||||
) => {
|
|
||||||
return (
|
|
||||||
<TableColumnTextContainer {...props}>
|
|
||||||
{props.isActive ? (
|
|
||||||
props.isPlaying ? (
|
|
||||||
<Flex>
|
|
||||||
<Icon fill="primary" icon="mediaPlay" />
|
|
||||||
</Flex>
|
|
||||||
) : (
|
|
||||||
<Flex>
|
|
||||||
<Icon fill="primary" icon="mediaPause" />
|
|
||||||
</Flex>
|
|
||||||
)
|
|
||||||
) : (
|
|
||||||
props.adjustedRowIndex
|
|
||||||
)}
|
|
||||||
</TableColumnTextContainer>
|
|
||||||
);
|
|
||||||
},
|
},
|
||||||
);
|
) => {
|
||||||
|
return (
|
||||||
|
<TableColumnTextContainer {...props}>
|
||||||
|
{props.isActive ? (
|
||||||
|
props.isPlaying ? (
|
||||||
|
<Flex>
|
||||||
|
<Icon fill="primary" icon="mediaPlay" />
|
||||||
|
</Flex>
|
||||||
|
) : (
|
||||||
|
<Flex>
|
||||||
|
<Icon fill="primary" icon="mediaPause" />
|
||||||
|
</Flex>
|
||||||
|
)
|
||||||
|
) : (
|
||||||
|
props.adjustedRowIndex
|
||||||
|
)}
|
||||||
|
</TableColumnTextContainer>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { memo, useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ColumnNullFallback,
|
ColumnNullFallback,
|
||||||
@@ -27,11 +27,4 @@ const SizeColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
return <ColumnSkeletonFixed {...props} />;
|
return <ColumnSkeletonFixed {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const SizeColumn = memo(SizeColumnBase, (prevProps, nextProps) => {
|
export const SizeColumn = SizeColumnBase;
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { memo } from 'react';
|
|
||||||
|
|
||||||
import styles from './text-column.module.css';
|
import styles from './text-column.module.css';
|
||||||
|
|
||||||
@@ -10,7 +9,7 @@ import {
|
|||||||
TableColumnTextContainer,
|
TableColumnTextContainer,
|
||||||
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
|
} from '/@/renderer/components/item-list/item-table-list/item-table-list-column';
|
||||||
|
|
||||||
const TextColumnBase = (props: ItemTableListInnerColumn) => {
|
export const TextColumn = (props: ItemTableListInnerColumn) => {
|
||||||
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
||||||
const row: string | undefined = (rowItem as any)?.[props.columns[props.columnIndex].id];
|
const row: string | undefined = (rowItem as any)?.[props.columns[props.columnIndex].id];
|
||||||
|
|
||||||
@@ -34,13 +33,3 @@ const TextColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
|
|
||||||
return <ColumnSkeletonVariable {...props} />;
|
return <ColumnSkeletonVariable {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const TextColumn = memo(TextColumnBase, (prevProps, nextProps) => {
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevProps.size === nextProps.size
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { CSSProperties, memo } from 'react';
|
import { CSSProperties } from 'react';
|
||||||
import { Link } from 'react-router';
|
import { Link } from 'react-router';
|
||||||
|
|
||||||
import styles from './title-artist-column.module.css';
|
import styles from './title-artist-column.module.css';
|
||||||
@@ -208,17 +208,4 @@ const TitleArtistColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const TitleArtistColumn = memo(TitleArtistColumnBase, (prevProps, nextProps) => {
|
export const TitleArtistColumn = TitleArtistColumnBase;
|
||||||
const prevItem = prevProps.getRowItem?.(prevProps.rowIndex);
|
|
||||||
const nextItem = nextProps.getRowItem?.(nextProps.rowIndex);
|
|
||||||
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevProps.itemType === nextProps.itemType &&
|
|
||||||
prevProps.size === nextProps.size &&
|
|
||||||
prevItem === nextItem
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { memo } from 'react';
|
|
||||||
import { Link } from 'react-router';
|
import { Link } from 'react-router';
|
||||||
|
|
||||||
import styles from './title-column.module.css';
|
import styles from './title-column.module.css';
|
||||||
@@ -29,20 +28,7 @@ const TitleColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const TitleColumn = memo(TitleColumnBase, (prevProps, nextProps) => {
|
export const TitleColumn = TitleColumnBase;
|
||||||
const prevItem = prevProps.getRowItem?.(prevProps.rowIndex);
|
|
||||||
const nextItem = nextProps.getRowItem?.(nextProps.rowIndex);
|
|
||||||
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevProps.itemType === nextProps.itemType &&
|
|
||||||
prevProps.size === nextProps.size &&
|
|
||||||
prevItem === nextItem
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
function DefaultTitleColumn(props: ItemTableListInnerColumn) {
|
function DefaultTitleColumn(props: ItemTableListInnerColumn) {
|
||||||
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
const rowItem = props.getRowItem?.(props.rowIndex) ?? (props.data as any[])[props.rowIndex];
|
||||||
|
|||||||
+1
-16
@@ -361,8 +361,6 @@ export const QueueSongTitleCombinedColumn = (props: ItemTableListInnerColumn) =>
|
|||||||
return <ColumnSkeletonVariable {...props} />;
|
return <ColumnSkeletonVariable {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
import { memo } from 'react';
|
|
||||||
|
|
||||||
const TitleCombinedColumnBase = (props: ItemTableListInnerColumn) => {
|
const TitleCombinedColumnBase = (props: ItemTableListInnerColumn) => {
|
||||||
const { itemType } = props;
|
const { itemType } = props;
|
||||||
|
|
||||||
@@ -377,17 +375,4 @@ const TitleCombinedColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
export const TitleCombinedColumn = memo(TitleCombinedColumnBase, (prevProps, nextProps) => {
|
export const TitleCombinedColumn = TitleCombinedColumnBase;
|
||||||
const prevItem = prevProps.getRowItem?.(prevProps.rowIndex);
|
|
||||||
const nextItem = nextProps.getRowItem?.(nextProps.rowIndex);
|
|
||||||
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevProps.itemType === nextProps.itemType &&
|
|
||||||
prevProps.size === nextProps.size &&
|
|
||||||
prevItem === nextItem
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { memo, useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ColumnNullFallback,
|
ColumnNullFallback,
|
||||||
@@ -42,15 +42,4 @@ const YearColumnBase = (props: ItemTableListInnerColumn) => {
|
|||||||
return <ColumnSkeletonFixed {...props} />;
|
return <ColumnSkeletonFixed {...props} />;
|
||||||
};
|
};
|
||||||
|
|
||||||
export const YearColumn = memo(YearColumnBase, (prevProps, nextProps) => {
|
export const YearColumn = YearColumnBase;
|
||||||
const prevItem = prevProps.getRowItem?.(prevProps.rowIndex);
|
|
||||||
const nextItem = nextProps.getRowItem?.(nextProps.rowIndex);
|
|
||||||
|
|
||||||
return (
|
|
||||||
prevProps.rowIndex === nextProps.rowIndex &&
|
|
||||||
prevProps.columnIndex === nextProps.columnIndex &&
|
|
||||||
prevProps.data === nextProps.data &&
|
|
||||||
prevProps.columns === nextProps.columns &&
|
|
||||||
prevItem === nextItem
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|||||||
@@ -446,14 +446,16 @@ const VirtualizedTableGrid = ({
|
|||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
[pinnedLeftColumnCount, CellComponent],
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
[pinnedLeftColumnCount, CellComponent, featureFlags, calculatedColumnWidths],
|
||||||
);
|
);
|
||||||
|
|
||||||
const PinnedColumnCell = useCallback(
|
const PinnedColumnCell = useCallback(
|
||||||
(cellProps: CellComponentProps & TableItemProps) => {
|
(cellProps: CellComponentProps & TableItemProps) => {
|
||||||
return <CellComponent {...cellProps} rowIndex={cellProps.rowIndex + pinnedRowCount} />;
|
return <CellComponent {...cellProps} rowIndex={cellProps.rowIndex + pinnedRowCount} />;
|
||||||
},
|
},
|
||||||
[pinnedRowCount, CellComponent],
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
[pinnedRowCount, CellComponent, featureFlags, calculatedColumnWidths],
|
||||||
);
|
);
|
||||||
|
|
||||||
const PinnedRightColumnCell = useCallback(
|
const PinnedRightColumnCell = useCallback(
|
||||||
@@ -466,7 +468,15 @@ const VirtualizedTableGrid = ({
|
|||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
[pinnedLeftColumnCount, pinnedRowCount, totalColumnCount, CellComponent],
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
[
|
||||||
|
pinnedLeftColumnCount,
|
||||||
|
pinnedRowCount,
|
||||||
|
totalColumnCount,
|
||||||
|
CellComponent,
|
||||||
|
featureFlags,
|
||||||
|
calculatedColumnWidths,
|
||||||
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
const PinnedRightIntersectionCell = useCallback(
|
const PinnedRightIntersectionCell = useCallback(
|
||||||
@@ -478,7 +488,14 @@ const VirtualizedTableGrid = ({
|
|||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
[pinnedLeftColumnCount, totalColumnCount, CellComponent],
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
[
|
||||||
|
pinnedLeftColumnCount,
|
||||||
|
totalColumnCount,
|
||||||
|
CellComponent,
|
||||||
|
featureFlags,
|
||||||
|
calculatedColumnWidths,
|
||||||
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
const RowCell = useCallback(
|
const RowCell = useCallback(
|
||||||
@@ -491,7 +508,14 @@ const VirtualizedTableGrid = ({
|
|||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
[pinnedLeftColumnCount, pinnedRowCount, CellComponent],
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
[
|
||||||
|
pinnedLeftColumnCount,
|
||||||
|
pinnedRowCount,
|
||||||
|
CellComponent,
|
||||||
|
featureFlags,
|
||||||
|
calculatedColumnWidths,
|
||||||
|
],
|
||||||
);
|
);
|
||||||
|
|
||||||
const handleOnCellsRendered = useCallback(
|
const handleOnCellsRendered = useCallback(
|
||||||
|
|||||||
Reference in New Issue
Block a user