+ {#if ctx.plans.length === 0}
+
+ Use the button below to upload a plan JSON file
+
+ {/if}
+
+ {#each ctx.plans as plan, i (plan.name)}
+ {@const isActive = ctx.activePlanIndex === i}
+
(isActive ? ctx.clearActivePlan() : ctx.selectPlan(i))}
+ onkeydown={(e) =>
+ e.key === 'Enter' && (isActive ? ctx.clearActivePlan() : ctx.selectPlan(i))}
+ >
+
+ {#if isActive}
+
+ {:else}
+
+ {/if}
+
+ {plan.name}
+
+
+
+
+ {#if plan.status === 'error'}
+
{plan.error}
+ {/if}
+ {#if plan.status === 'no-trajectory'}
+
No trajectory — nothing to replay
+ {/if}
+ {/each}
+
+
+ {#if extraSource}
+ {@render extraSource(ctx.addPlan)}
+ {/if}
+
+
+
+
+