17 lines
578 B
TypeScript
17 lines
578 B
TypeScript
import { datasetSchema, type DatasetManifest } from "./protocol";
|
|
|
|
export function selectDraftLocations(manifest: DatasetManifest, ids: string[]) {
|
|
const available = manifest.availableViewpoints ?? manifest.viewpoints;
|
|
const selected = new Set(ids);
|
|
if (
|
|
selected.size !== ids.length ||
|
|
ids.some((id) => !available.some((p) => p.id === id))
|
|
)
|
|
throw new Error("Choose unique locations from this capture");
|
|
return datasetSchema.parse({
|
|
...manifest,
|
|
availableViewpoints: available,
|
|
viewpoints: available.filter((p) => selected.has(p.id)),
|
|
});
|
|
}
|