perf(08-02): migrate cover-grid, artists-view, and genres-view virtualizers to repeat() directive
- cover-grid: all 3 virtualizers (single, before-split, after-split) use repeat() with album.ID key - artists-view uses repeat() with artist.ID key - genres-view uses repeat() with genre.name key - Removed gridKeyFunction (now inlined in repeat calls) - Removed .renderItem and .keyFunction properties from all virtualizers
This commit is contained in:
@@ -10,6 +10,7 @@ import type {
|
|||||||
VisibilityChangedEvent,
|
VisibilityChangedEvent,
|
||||||
} from '@lit-labs/virtualizer';
|
} from '@lit-labs/virtualizer';
|
||||||
import { grid } from '@lit-labs/virtualizer/layouts/grid.js';
|
import { grid } from '@lit-labs/virtualizer/layouts/grid.js';
|
||||||
|
import { repeat } from 'lit/directives/repeat.js';
|
||||||
import {
|
import {
|
||||||
GetAlbumsByArtist,
|
GetAlbumsByArtist,
|
||||||
GetAlbumTracks,
|
GetAlbumTracks,
|
||||||
@@ -1216,15 +1217,13 @@ export class ArtistsView
|
|||||||
>
|
>
|
||||||
<lit-virtualizer
|
<lit-virtualizer
|
||||||
.items=${entries}
|
.items=${entries}
|
||||||
.renderItem=${(
|
|
||||||
entry: ArtistEntry,
|
|
||||||
) =>
|
|
||||||
this.renderArtistCard(
|
|
||||||
entry,
|
|
||||||
)}
|
|
||||||
.layout=${this.gridLayout}
|
.layout=${this.gridLayout}
|
||||||
@visibilityChanged=${this.onVisibilityChanged}
|
@visibilityChanged=${this.onVisibilityChanged}
|
||||||
></lit-virtualizer>
|
>${repeat(
|
||||||
|
entries,
|
||||||
|
(entry) => entry.artist.ID,
|
||||||
|
(entry) => this.renderArtistCard(entry),
|
||||||
|
)}</lit-virtualizer>
|
||||||
</div>
|
</div>
|
||||||
${this.renderContextMenu()}
|
${this.renderContextMenu()}
|
||||||
`;
|
`;
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import type {
|
|||||||
VisibilityChangedEvent,
|
VisibilityChangedEvent,
|
||||||
} from '@lit-labs/virtualizer';
|
} from '@lit-labs/virtualizer';
|
||||||
import { grid } from '@lit-labs/virtualizer/layouts/grid.js';
|
import { grid } from '@lit-labs/virtualizer/layouts/grid.js';
|
||||||
|
import { repeat } from 'lit/directives/repeat.js';
|
||||||
import { GetAlbumTracks } from '@go/library/Library';
|
import { GetAlbumTracks } from '@go/library/Library';
|
||||||
import { library } from '@go/models';
|
import { library } from '@go/models';
|
||||||
import { LibraryController } from '@store/controllers/library-controller';
|
import { LibraryController } from '@store/controllers/library-controller';
|
||||||
@@ -924,12 +925,6 @@ export class CoverGrid
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private gridKeyFunction = (
|
|
||||||
entry: GridEntry,
|
|
||||||
) => {
|
|
||||||
return `a-${entry.album.ID}`;
|
|
||||||
};
|
|
||||||
|
|
||||||
/* ====================================================================
|
/* ====================================================================
|
||||||
* Dropdown (expand/collapse)
|
* Dropdown (expand/collapse)
|
||||||
* ==================================================================== */
|
* ==================================================================== */
|
||||||
@@ -1853,15 +1848,17 @@ export class CoverGrid
|
|||||||
<lit-virtualizer
|
<lit-virtualizer
|
||||||
id="grid-single"
|
id="grid-single"
|
||||||
.items=${this.buildGridEntries()}
|
.items=${this.buildGridEntries()}
|
||||||
.renderItem=${this.renderGridEntry}
|
|
||||||
.keyFunction=${this.gridKeyFunction}
|
|
||||||
.layout=${this.gridLayout}
|
.layout=${this.gridLayout}
|
||||||
@click=${this.onGridAlbumClick}
|
@click=${this.onGridAlbumClick}
|
||||||
@dblclick=${this.onGridAlbumDblClick}
|
@dblclick=${this.onGridAlbumDblClick}
|
||||||
@keydown=${this.onGridAlbumKeydown}
|
@keydown=${this.onGridAlbumKeydown}
|
||||||
@contextmenu=${this.onGridAlbumContextMenu}
|
@contextmenu=${this.onGridAlbumContextMenu}
|
||||||
@visibilityChanged=${this.onVisibilityChanged}
|
@visibilityChanged=${this.onVisibilityChanged}
|
||||||
></lit-virtualizer>
|
>${repeat(
|
||||||
|
this.buildGridEntries(),
|
||||||
|
(entry) => entry.album.ID,
|
||||||
|
(entry) => this.renderGridEntry(entry),
|
||||||
|
)}</lit-virtualizer>
|
||||||
`;
|
`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1880,15 +1877,17 @@ export class CoverGrid
|
|||||||
<lit-virtualizer
|
<lit-virtualizer
|
||||||
id="grid-before"
|
id="grid-before"
|
||||||
.items=${this.getBeforeEntries()}
|
.items=${this.getBeforeEntries()}
|
||||||
.renderItem=${this.renderGridEntry}
|
|
||||||
.keyFunction=${this.gridKeyFunction}
|
|
||||||
.layout=${this.gridLayout}
|
.layout=${this.gridLayout}
|
||||||
@click=${this.onGridAlbumClick}
|
@click=${this.onGridAlbumClick}
|
||||||
@dblclick=${this.onGridAlbumDblClick}
|
@dblclick=${this.onGridAlbumDblClick}
|
||||||
@keydown=${this.onGridAlbumKeydown}
|
@keydown=${this.onGridAlbumKeydown}
|
||||||
@contextmenu=${this.onGridAlbumContextMenu}
|
@contextmenu=${this.onGridAlbumContextMenu}
|
||||||
@visibilityChanged=${this.onVisibilityChanged}
|
@visibilityChanged=${this.onVisibilityChanged}
|
||||||
></lit-virtualizer>
|
>${repeat(
|
||||||
|
this.getBeforeEntries(),
|
||||||
|
(entry) => entry.album.ID,
|
||||||
|
(entry) => this.renderGridEntry(entry),
|
||||||
|
)}</lit-virtualizer>
|
||||||
|
|
||||||
<album-dropdown
|
<album-dropdown
|
||||||
.tracks=${this.expandedTracks}
|
.tracks=${this.expandedTracks}
|
||||||
@@ -1909,14 +1908,16 @@ export class CoverGrid
|
|||||||
<lit-virtualizer
|
<lit-virtualizer
|
||||||
id="grid-after"
|
id="grid-after"
|
||||||
.items=${afterEntries}
|
.items=${afterEntries}
|
||||||
.renderItem=${this.renderGridEntry}
|
|
||||||
.keyFunction=${this.gridKeyFunction}
|
|
||||||
.layout=${this.gridLayoutAfter}
|
.layout=${this.gridLayoutAfter}
|
||||||
@click=${this.onGridAlbumClick}
|
@click=${this.onGridAlbumClick}
|
||||||
@dblclick=${this.onGridAlbumDblClick}
|
@dblclick=${this.onGridAlbumDblClick}
|
||||||
@keydown=${this.onGridAlbumKeydown}
|
@keydown=${this.onGridAlbumKeydown}
|
||||||
@contextmenu=${this.onGridAlbumContextMenu}
|
@contextmenu=${this.onGridAlbumContextMenu}
|
||||||
></lit-virtualizer>
|
>${repeat(
|
||||||
|
afterEntries,
|
||||||
|
(entry) => entry.album.ID,
|
||||||
|
(entry) => this.renderGridEntry(entry),
|
||||||
|
)}</lit-virtualizer>
|
||||||
`
|
`
|
||||||
: nothing}
|
: nothing}
|
||||||
`;
|
`;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import type {
|
|||||||
VisibilityChangedEvent,
|
VisibilityChangedEvent,
|
||||||
} from '@lit-labs/virtualizer';
|
} from '@lit-labs/virtualizer';
|
||||||
import { grid } from '@lit-labs/virtualizer/layouts/grid.js';
|
import { grid } from '@lit-labs/virtualizer/layouts/grid.js';
|
||||||
|
import { repeat } from 'lit/directives/repeat.js';
|
||||||
import { GetTracksByGenre } from '@go/library/Library';
|
import { GetTracksByGenre } from '@go/library/Library';
|
||||||
import type { library } from '@go/models';
|
import type { library } from '@go/models';
|
||||||
import { LibraryController } from '@store/controllers/library-controller';
|
import { LibraryController } from '@store/controllers/library-controller';
|
||||||
@@ -1168,13 +1169,13 @@ export class GenresView
|
|||||||
>
|
>
|
||||||
<lit-virtualizer
|
<lit-virtualizer
|
||||||
.items=${entries}
|
.items=${entries}
|
||||||
.renderItem=${(
|
|
||||||
entry: GenreEntry,
|
|
||||||
) =>
|
|
||||||
this.renderGenreCard(entry)}
|
|
||||||
.layout=${this.gridLayout}
|
.layout=${this.gridLayout}
|
||||||
@visibilityChanged=${this.onVisibilityChanged}
|
@visibilityChanged=${this.onVisibilityChanged}
|
||||||
></lit-virtualizer>
|
>${repeat(
|
||||||
|
entries,
|
||||||
|
(entry) => entry.genre.name,
|
||||||
|
(entry) => this.renderGenreCard(entry),
|
||||||
|
)}</lit-virtualizer>
|
||||||
</div>
|
</div>
|
||||||
${this.renderContextMenu()}
|
${this.renderContextMenu()}
|
||||||
`;
|
`;
|
||||||
|
|||||||
Reference in New Issue
Block a user