{"version":3,"file":"state-geo.cjs","names":[],"sources":["../../src/br/state-geo.ts"],"sourcesContent":["import type { BrUfGeometry } from \"./br-geo\";\nimport type { UF } from \"./locations\";\n\n/** One municipality feature within a state. */\nexport interface MunicipalityFeature {\n    type: \"Feature\";\n    properties: {\n        /** 7-digit IBGE municipality code. */\n        id: string;\n        /** Municipality name. */\n        name: string;\n        /** Representative point `[longitude, latitude]` (area-weighted centroid). */\n        centroid: [number, number];\n    };\n    geometry: BrUfGeometry;\n}\n\n/** Municipality boundaries for a single federative unit. */\nexport interface StateMunicipalities {\n    type: \"FeatureCollection\";\n    /** The federative unit these municipalities belong to. */\n    uf: UF;\n    features: MunicipalityFeature[];\n}\n\ntype GeoModule = { default: StateMunicipalities };\n\n// One explicit dynamic import per UF — each `data/mun/<UF>.json` becomes its own\n// lazy chunk, so `loadStateMunicipalities(\"SP\")` fetches only São Paulo's\n// geometry and the full ~2 MB municipal dataset never lands in one bundle.\nconst LOADERS: Record<UF, () => Promise<GeoModule>> = {\n    AC: () => import(\"./data/mun/AC.json\") as unknown as Promise<GeoModule>,\n    AL: () => import(\"./data/mun/AL.json\") as unknown as Promise<GeoModule>,\n    AP: () => import(\"./data/mun/AP.json\") as unknown as Promise<GeoModule>,\n    AM: () => import(\"./data/mun/AM.json\") as unknown as Promise<GeoModule>,\n    BA: () => import(\"./data/mun/BA.json\") as unknown as Promise<GeoModule>,\n    CE: () => import(\"./data/mun/CE.json\") as unknown as Promise<GeoModule>,\n    DF: () => import(\"./data/mun/DF.json\") as unknown as Promise<GeoModule>,\n    ES: () => import(\"./data/mun/ES.json\") as unknown as Promise<GeoModule>,\n    GO: () => import(\"./data/mun/GO.json\") as unknown as Promise<GeoModule>,\n    MA: () => import(\"./data/mun/MA.json\") as unknown as Promise<GeoModule>,\n    MT: () => import(\"./data/mun/MT.json\") as unknown as Promise<GeoModule>,\n    MS: () => import(\"./data/mun/MS.json\") as unknown as Promise<GeoModule>,\n    MG: () => import(\"./data/mun/MG.json\") as unknown as Promise<GeoModule>,\n    PA: () => import(\"./data/mun/PA.json\") as unknown as Promise<GeoModule>,\n    PB: () => import(\"./data/mun/PB.json\") as unknown as Promise<GeoModule>,\n    PR: () => import(\"./data/mun/PR.json\") as unknown as Promise<GeoModule>,\n    PE: () => import(\"./data/mun/PE.json\") as unknown as Promise<GeoModule>,\n    PI: () => import(\"./data/mun/PI.json\") as unknown as Promise<GeoModule>,\n    RJ: () => import(\"./data/mun/RJ.json\") as unknown as Promise<GeoModule>,\n    RN: () => import(\"./data/mun/RN.json\") as unknown as Promise<GeoModule>,\n    RS: () => import(\"./data/mun/RS.json\") as unknown as Promise<GeoModule>,\n    RO: () => import(\"./data/mun/RO.json\") as unknown as Promise<GeoModule>,\n    RR: () => import(\"./data/mun/RR.json\") as unknown as Promise<GeoModule>,\n    SC: () => import(\"./data/mun/SC.json\") as unknown as Promise<GeoModule>,\n    SP: () => import(\"./data/mun/SP.json\") as unknown as Promise<GeoModule>,\n    SE: () => import(\"./data/mun/SE.json\") as unknown as Promise<GeoModule>,\n    TO: () => import(\"./data/mun/TO.json\") as unknown as Promise<GeoModule>,\n};\n\n/**\n * Lazily load the simplified municipality GeoJSON for a federative unit. Each\n * state's geometry is a separate chunk (~40-70 KB gzip), fetched on demand —\n * the full ~2 MB municipal dataset never lands in one bundle.\n *\n * @param uf - Federative unit acronym (e.g. `\"SP\"`).\n * @returns The municipality collection, or `null` for an unknown UF.\n *\n * @example\n * const sp = await loadStateMunicipalities(\"SP\");\n * sp?.features.length; // 644\n */\nexport async function loadStateMunicipalities(uf: UF): Promise<StateMunicipalities | null> {\n    const loader = LOADERS[uf];\n    if (!loader) return null;\n    const mod = await loader();\n    return mod.default ?? (mod as unknown as StateMunicipalities);\n}\n"],"mappings":"AA8BA,IAAM,EAAgD,CAClD,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,EACV,OAAA,QAAA,QAAA,CAAA,CAAA,SAAA,QAAU,mBAAA,CAAA,CACd,EAcA,eAAsB,EAAwB,EAA6C,CACvF,IAAM,EAAS,EAAQ,GACvB,GAAI,CAAC,EAAQ,OAAO,KACpB,IAAM,EAAM,MAAM,EAAO,EACzB,OAAO,EAAI,SAAY,CAC3B"}