{#if combinedData && combinedData.length > 0}
{#if virtualize} {/if}
Legend: Caught Caught but needs to evolve In Home
Filters:
Caught {overallCaughtCount} Not caught {overallNotCaughtCount} Needs to evolve {overallNeedsToEvolveCount} In HOME {overallInHomeCount} Not in HOME {overallNotInHomeCount}
Showing {filteredTotal} of {overallTotal}
{#each boxNumbers as boxNumber (boxNumber)} {@const bulkMenuId = `box-${boxNumber}-bulk-menu`}
{#if !virtualize || renderAll || visibleBoxes.has(boxNumber) || focusedBox === boxNumber}

Box {boxNumber}

{#if !readOnly}
{#if openBulkMenuForBox === boxNumber} {/if}
{/if}
{#each BOX_POSITIONS as positionInBox} {@const globalIndex = (boxNumber - 1) * POKEMON_PER_BOX + positionInBox} {@const placement = calculateBoxPlacement(globalIndex)} {@const entry = combinedData?.[globalIndex]} {@const pokedexEntry = entry?.pokedexEntry} {@const catchRecord = entry?.catchRecord ?? null} {@const isFilteredOut = !!entry && filtersActive && !!filtersKey && !matchesFilters(catchRecord)} {#if entry && pokedexEntry} {:else} {/if} {/each}
{/if}
{/each}
{:else if failedToLoad} {#if retryLoad}

Unable to load Pokédex.

{:else if creatingRecords && totalRecordsCreated > 0}

Processed {totalRecordsCreated} Pokédex entries so far...

Please be patient, this may take some time.

{:else if creatingRecords}

Processing...

Please be patient, this may take some time.

{:else}

Failed to load

If you're seeing this, you probably haven't created your Pokédex data yet. Please do so by clicking this button.

{#if !readOnly} {/if} {/if} {:else if combinedData}

No entries match this Pokédex.

{:else}

Loading Pokédex

{/if}