data = [
{name: "Alabama", date: "April 4 at 5 p.m."},
{name: "Alaska", date: "March 28 at 5 p.m."},
{name: "Arizona", date: "March 31 at 5 p.m."},
{name: "Arkansas", date: null},
{name: "California", date: "March 19"},
{name: "Colorado", date: "March 26 at 6 a.m."},
{name: "Connecticut", date: "March 23 at 8 p.m."},
{name: "Delaware", date: "March 24 at 8 a.m."},
{name: "District of Columbia", date: "April 1 at 12:01 a.m."},
{name: "Florida", date: "April 3 at 12:01 a.m."},
{name: "Georgia", date: "April 3"},
{name: "Hawaii", date: "March 25 at 12:01 a.m."},
{name: "Idaho", date: "March 25 at 1:30 p.m."},
{name: "Illinois", date: "March 21 at 5 p.m."},
{name: "Indiana", date: "March 24 at 11:59 p.m."},
{name: "Iowa", date: null},
{name: "Kansas", date: "March 30 at 12:01 a.m."},
{name: "Kentucky", date: "March 26 at 8 p.m."},
{name: "Louisiana", date: "March 23 at 5 p.m."},
{name: "Maine", date: "April 2 at 12:01 a.m."},
{name: "Maryland", date: "March 30 at 8 p.m."},
{name: "Massachusetts", date: "March 24 at 12 p.m."},
{name: "Michigan", date: "March 24 at 12:01 a.m."},
{name: "Minnesota", date: "March 27 at 11:59 p.m."},
{name: "Mississippi", date: "April 3 at 5 p.m."},
{name: "Missouri", date: "April 6 at 12:01 a.m."},
{name: "Montana", date: "March 28 at 12:01 a.m."},
{name: "Nebraska", date: null},
{name: "Nevada", date: "April 1"},
{name: "New Hampshire", date: "March 27 at 11:59 p.m."},
{name: "New Jersey", date: "March 21 at 9 p.m."},
{name: "New Mexico", date: "March 24 at 8 a.m."},
{name: "New York", date: "March 22 at 8 p.m."},
{name: "North Carolina", date: "March 30 at 5 p.m."},
{name: "North Dakota", date: null},
{name: "Ohio", date: "March 23 at 11:59 p.m."},
{name: "Oklahoma", date: null, partial: true},
{name: "Oregon", date: "March 23"},
{name: "Pennsylvania", date: "April 1 at 8 p.m."},
{name: "Rhode Island", date: "March 28"},
{name: "South Carolina", date: "April 7 at 5 p.m."},
{name: "South Dakota", date: null},
{name: "Tennessee", date: "March 31 at 11:59 p.m."},
{name: "Texas", date: "April 2 at 12:01 a.m."},
{name: "Utah", date: null, partial: true},
{name: "Vermont", date: "March 25 at 5 p.m."},
{name: "Virginia", date: "March 30"},
{name: "Washington", date: "March 23"},
{name: "West Virginia", date: "March 24 at 8 p.m."},
{name: "Wisconsin", date: "March 25 at 8 a.m."},
{name: "Wyoming", date: null, partial: true}
]
.map(({date, ...rest}) => ({...rest, start: parseDate(date)}))
.sort((a, b) => d3.ascending(a.start === null, b.start === null) || d3.descending(!!a.partial, !!b.partial) || d3.ascending(a.start, b.start))