const fill = (keys) => keys.map((key, i) => ({ key, value: ((i * 37) % 80) + 10 }))
const STATES = [
'AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA', 'HI', 'ID', 'IL', 'IN', 'IA',
'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ',
'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT',
'VA', 'WA', 'WV', 'WI', 'WY', 'DC',
]
const series = (data) => ({
name: 'Adoption',
joinBy: { data: 'key' },
data,
scale: { palette: 'purples' },
drilldown: {
map: 'us/counties',
breadcrumb: { rootLabel: 'United States' },
},
})
const map = new ApexMaps(document.getElementById('map'), {
chart: { height: 520 },
geo: { map: 'us' },
series: [series(fill(STATES))],
})
map.on('drilldown', ({ name, featureCount }) => {
map.updateSeries([series(fill(map.geo.features.map((f) => f.key)))])
console.log(`${featureCount} counties in ${name}`)
})
map.on('drillup', ({ depth }) => {
if (depth === 0) map.updateSeries([series(fill(STATES))])
})
map.render()
document.getElementById('ca').addEventListener('click', () => map.drillTo('CA'))
document.getElementById('tx').addEventListener('click', () => map.drillTo('TX'))
document.getElementById('up').addEventListener('click', () => map.drillUp())