@plenustech/design-system 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +8 -0
- package/dist/components/actions/ButtonTile/ButtonTile.module.css.cjs +1 -1
- package/dist/components/actions/ButtonTile/ButtonTile.module.css.js +10 -10
- package/dist/components/actions/Toolbar/Toolbar.cjs +1 -1
- package/dist/components/actions/Toolbar/Toolbar.cjs.map +1 -1
- package/dist/components/actions/Toolbar/Toolbar.js +64 -53
- package/dist/components/actions/Toolbar/Toolbar.js.map +1 -1
- package/dist/components/charts/ChartGauge/ChartGauge.cjs +2 -0
- package/dist/components/charts/ChartGauge/ChartGauge.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/ChartGauge.js +307 -0
- package/dist/components/charts/ChartGauge/ChartGauge.js.map +1 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs +2 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.js +76 -0
- package/dist/components/charts/ChartGauge/ChartGauge.module.css.js.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.cjs +2 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.js +107 -0
- package/dist/components/charts/ChartGauge/gaugeLayout.js.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeReading.cjs +2 -0
- package/dist/components/charts/ChartGauge/gaugeReading.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeReading.js +112 -0
- package/dist/components/charts/ChartGauge/gaugeReading.js.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeScale.cjs +2 -0
- package/dist/components/charts/ChartGauge/gaugeScale.cjs.map +1 -0
- package/dist/components/charts/ChartGauge/gaugeScale.js +57 -0
- package/dist/components/charts/ChartGauge/gaugeScale.js.map +1 -0
- package/dist/components/charts/ChartMap/ChartMap.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMap.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMap.js +523 -0
- package/dist/components/charts/ChartMap/ChartMap.js.map +1 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.js +124 -0
- package/dist/components/charts/ChartMap/ChartMap.module.css.js.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.js +102 -0
- package/dist/components/charts/ChartMap/ChartMapLegend.js.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapTable.cjs +2 -0
- package/dist/components/charts/ChartMap/ChartMapTable.cjs.map +1 -0
- package/dist/components/charts/ChartMap/ChartMapTable.js +118 -0
- package/dist/components/charts/ChartMap/ChartMapTable.js.map +1 -0
- package/dist/components/charts/ChartMap/mapGeometry.cjs +2 -0
- package/dist/components/charts/ChartMap/mapGeometry.cjs.map +1 -0
- package/dist/components/charts/ChartMap/mapGeometry.js +113 -0
- package/dist/components/charts/ChartMap/mapGeometry.js.map +1 -0
- package/dist/components/charts/ChartMap/mapLabels.cjs +2 -0
- package/dist/components/charts/ChartMap/mapLabels.cjs.map +1 -0
- package/dist/components/charts/ChartMap/mapLabels.js +80 -0
- package/dist/components/charts/ChartMap/mapLabels.js.map +1 -0
- package/dist/components/charts/ChartMap/mapScales.cjs +2 -0
- package/dist/components/charts/ChartMap/mapScales.cjs.map +1 -0
- package/dist/components/charts/ChartMap/mapScales.js +131 -0
- package/dist/components/charts/ChartMap/mapScales.js.map +1 -0
- package/dist/components/charts/ChartMap/polylabel.cjs +2 -0
- package/dist/components/charts/ChartMap/polylabel.cjs.map +1 -0
- package/dist/components/charts/ChartMap/polylabel.js +50 -0
- package/dist/components/charts/ChartMap/polylabel.js.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.cjs +2 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.js +703 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.js.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs +2 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js +124 -0
- package/dist/components/charts/ChartTimeline/ChartTimeline.module.css.js.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs +2 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.js +42 -0
- package/dist/components/charts/ChartTimeline/ChartTimelineTable.js.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.cjs +2 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.js +109 -0
- package/dist/components/charts/ChartTimeline/timelineLayout.js.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTime.cjs +2 -0
- package/dist/components/charts/ChartTimeline/timelineTime.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTime.js +91 -0
- package/dist/components/charts/ChartTimeline/timelineTime.js.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.cjs +2 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.cjs.map +1 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.js +77 -0
- package/dist/components/charts/ChartTimeline/timelineTooltip.js.map +1 -0
- package/dist/components/charts/core/ChartLegend.cjs +1 -1
- package/dist/components/charts/core/ChartLegend.cjs.map +1 -1
- package/dist/components/charts/core/ChartLegend.js +37 -25
- package/dist/components/charts/core/ChartLegend.js.map +1 -1
- package/dist/components/charts/core/useChartMetrics.cjs +1 -1
- package/dist/components/charts/core/useChartMetrics.cjs.map +1 -1
- package/dist/components/charts/core/useChartMetrics.js +20 -25
- package/dist/components/charts/core/useChartMetrics.js.map +1 -1
- package/dist/components/data-display/CodeBlock/syntax.cjs +10 -3
- package/dist/components/data-display/CodeBlock/syntax.cjs.map +1 -1
- package/dist/components/data-display/CodeBlock/syntax.js +68 -48
- package/dist/components/data-display/CodeBlock/syntax.js.map +1 -1
- package/dist/components/data-display/List/List.cjs.map +1 -1
- package/dist/components/data-display/List/List.js.map +1 -1
- package/dist/components/data-display/List/List.module.css.cjs +1 -1
- package/dist/components/data-display/List/List.module.css.js +34 -24
- package/dist/components/data-display/List/List.module.css.js.map +1 -1
- package/dist/components/data-display/List/ListingOptions.cjs +1 -1
- package/dist/components/data-display/List/ListingOptions.cjs.map +1 -1
- package/dist/components/data-display/List/ListingOptions.js +98 -74
- package/dist/components/data-display/List/ListingOptions.js.map +1 -1
- package/dist/components/data-display/List/useListing.cjs.map +1 -1
- package/dist/components/data-display/List/useListing.js.map +1 -1
- package/dist/components/data-display/Timeline/Timeline.cjs +1 -1
- package/dist/components/data-display/Timeline/Timeline.cjs.map +1 -1
- package/dist/components/data-display/Timeline/Timeline.js +6 -6
- package/dist/components/data-display/Timeline/Timeline.js.map +1 -1
- package/dist/components/data-display/Timeline/Timeline.module.css.cjs +1 -1
- package/dist/components/data-display/Timeline/Timeline.module.css.js +18 -16
- package/dist/components/data-display/Timeline/Timeline.module.css.js.map +1 -1
- package/dist/components/forms/Checkbox/Checkbox.module.css.cjs +1 -1
- package/dist/components/forms/Checkbox/Checkbox.module.css.js +5 -5
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.cjs +1 -1
- package/dist/components/forms/CheckboxGroup/CheckboxGroup.module.css.js +1 -1
- package/dist/components/forms/ComboBox/ComboBox.cjs.map +1 -1
- package/dist/components/forms/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/forms/Field/Field.cjs +1 -1
- package/dist/components/forms/Field/Field.cjs.map +1 -1
- package/dist/components/forms/Field/Field.js +22 -22
- package/dist/components/forms/Field/Field.js.map +1 -1
- package/dist/components/forms/Field/Field.module.css.cjs +1 -1
- package/dist/components/forms/Field/Field.module.css.js +19 -17
- package/dist/components/forms/Field/Field.module.css.js.map +1 -1
- package/dist/components/forms/InputText/InputText.cjs +1 -1
- package/dist/components/forms/InputText/InputText.cjs.map +1 -1
- package/dist/components/forms/InputText/InputText.js +24 -24
- package/dist/components/forms/InputText/InputText.js.map +1 -1
- package/dist/components/forms/InputText/InputText.module.css.cjs +1 -1
- package/dist/components/forms/InputText/InputText.module.css.js +9 -7
- package/dist/components/forms/InputText/InputText.module.css.js.map +1 -1
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.cjs +1 -1
- package/dist/components/forms/RadioGroup/RadioGroup.module.css.js +4 -4
- package/dist/components/forms/Select/Select.cjs.map +1 -1
- package/dist/components/forms/Select/Select.js.map +1 -1
- package/dist/components/forms/Switch/Switch.module.css.cjs +1 -1
- package/dist/components/forms/Switch/Switch.module.css.js +6 -6
- package/dist/components/icons/suite.cjs +1 -0
- package/dist/components/icons/suite.js +10894 -0
- package/dist/components/navigation/Pagination/Pagination.cjs +1 -1
- package/dist/components/navigation/Pagination/Pagination.cjs.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +71 -44
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.module.css.cjs +1 -1
- package/dist/components/navigation/Pagination/Pagination.module.css.js +18 -14
- package/dist/components/navigation/Pagination/Pagination.module.css.js.map +1 -1
- package/dist/components/navigation/TabsNav/TabsNav.cjs +2 -0
- package/dist/components/navigation/TabsNav/TabsNav.cjs.map +1 -0
- package/dist/components/navigation/TabsNav/TabsNav.js +21 -0
- package/dist/components/navigation/TabsNav/TabsNav.js.map +1 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs +2 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.cjs.map +1 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.js +18 -0
- package/dist/components/navigation/TabsNav/TabsNav.module.css.js.map +1 -0
- package/dist/components/overlays/Dialog/Dialog.cjs.map +1 -1
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogFrame.cjs +1 -1
- package/dist/components/overlays/Dialog/DialogFrame.cjs.map +1 -1
- package/dist/components/overlays/Dialog/DialogFrame.js +30 -30
- package/dist/components/overlays/Dialog/DialogFrame.js.map +1 -1
- package/dist/components/overlays/Drawer/Drawer.cjs.map +1 -1
- package/dist/components/overlays/Drawer/Drawer.js.map +1 -1
- package/dist/components/overlays/Menu/Menu.cjs +1 -1
- package/dist/components/overlays/Menu/Menu.cjs.map +1 -1
- package/dist/components/overlays/Menu/Menu.js +37 -36
- package/dist/components/overlays/Menu/Menu.js.map +1 -1
- package/dist/components/overlays/Menu/keyShortcuts.cjs +2 -0
- package/dist/components/overlays/Menu/keyShortcuts.cjs.map +1 -0
- package/dist/components/overlays/Menu/keyShortcuts.js +55 -0
- package/dist/components/overlays/Menu/keyShortcuts.js.map +1 -0
- package/dist/components/overlays/Tooltip/Tooltip.cjs +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.cjs.map +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +81 -56
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
- package/dist/design-system.css +1 -1
- package/dist/icons.cjs +2 -0
- package/dist/icons.cjs.map +1 -0
- package/dist/icons.js +2054 -0
- package/dist/icons.js.map +1 -0
- package/dist/index.cjs +1 -1
- package/dist/index.js +184 -174
- package/dist/index.js.map +1 -1
- package/dist/types/components/charts/ChartGauge/ChartGauge.d.ts +83 -0
- package/dist/types/components/charts/ChartGauge/gaugeLayout.d.ts +64 -0
- package/dist/types/components/charts/ChartGauge/gaugeReading.d.ts +97 -0
- package/dist/types/components/charts/ChartGauge/gaugeScale.d.ts +38 -0
- package/dist/types/components/charts/ChartGauge/index.d.ts +2 -0
- package/dist/types/components/charts/ChartMap/ChartMap.d.ts +104 -0
- package/dist/types/components/charts/ChartMap/ChartMapLegend.d.ts +44 -0
- package/dist/types/components/charts/ChartMap/ChartMapTable.d.ts +38 -0
- package/dist/types/components/charts/ChartMap/index.d.ts +4 -0
- package/dist/types/components/charts/ChartMap/mapGeometry.d.ts +56 -0
- package/dist/types/components/charts/ChartMap/mapLabels.d.ts +51 -0
- package/dist/types/components/charts/ChartMap/mapScales.d.ts +76 -0
- package/dist/types/components/charts/ChartMap/polylabel.d.ts +9 -0
- package/dist/types/components/charts/ChartTimeline/ChartTimeline.d.ts +137 -0
- package/dist/types/components/charts/ChartTimeline/ChartTimelineTable.d.ts +25 -0
- package/dist/types/components/charts/ChartTimeline/index.d.ts +2 -0
- package/dist/types/components/charts/ChartTimeline/timelineLayout.d.ts +70 -0
- package/dist/types/components/charts/ChartTimeline/timelineTime.d.ts +16 -0
- package/dist/types/components/charts/ChartTimeline/timelineTooltip.d.ts +45 -0
- package/dist/types/components/charts/core/ChartLegend.d.ts +3 -1
- package/dist/types/components/data-display/CodeBlock/syntax.d.ts +1 -1
- package/dist/types/components/data-display/List/List.d.ts +1 -1
- package/dist/types/components/data-display/List/useListing.d.ts +7 -1
- package/dist/types/components/data-display/Timeline/Timeline.d.ts +4 -1
- package/dist/types/components/data-display/Timeline/index.d.ts +1 -1
- package/dist/types/components/forms/ComboBox/ComboBox.d.ts +7 -1
- package/dist/types/components/forms/Field/Field.d.ts +1 -1
- package/dist/types/components/forms/InputText/InputText.d.ts +1 -1
- package/dist/types/components/forms/Select/Select.d.ts +5 -1
- package/dist/types/components/icons/suite.d.ts +2051 -0
- package/dist/types/components/navigation/Pagination/Pagination.d.ts +13 -1
- package/dist/types/components/navigation/Pagination/index.d.ts +1 -1
- package/dist/types/components/navigation/TabsNav/TabsNav.d.ts +20 -0
- package/dist/types/components/navigation/TabsNav/index.d.ts +2 -0
- package/dist/types/components/overlays/Dialog/Dialog.d.ts +19 -7
- package/dist/types/components/overlays/Dialog/DialogFrame.d.ts +8 -2
- package/dist/types/components/overlays/Drawer/Drawer.d.ts +2 -2
- package/dist/types/components/overlays/Menu/Menu.d.ts +3 -1
- package/dist/types/components/overlays/Menu/keyShortcuts.d.ts +2 -0
- package/dist/types/components/overlays/Tooltip/Tooltip.d.ts +26 -5
- package/dist/types/icons.d.ts +6 -0
- package/dist/types/index.d.ts +11 -3
- package/dist/types/utils/formatters/formatarDuracao.d.ts +5 -0
- package/dist/types/utils/formatters/index.d.ts +1 -0
- package/dist/utils/formatters/formatarDuracao.cjs +2 -0
- package/dist/utils/formatters/formatarDuracao.cjs.map +1 -0
- package/dist/utils/formatters/formatarDuracao.js +10 -0
- package/dist/utils/formatters/formatarDuracao.js.map +1 -0
- package/package.json +10 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartMap.js","sources":["../../../../src/components/charts/ChartMap/ChartMap.tsx"],"sourcesContent":["import { sum } from 'd3-array';\nimport { geoPath, type GeoProjection } from 'd3-geo';\nimport { scaleSqrt } from 'd3-scale';\nimport { useEffect, useId, useMemo, useRef, useState, type KeyboardEvent, type SyntheticEvent } from 'react';\nimport { Button } from '../../actions/Button';\nimport { EmptyState } from '../../feedback/EmptyState';\nimport { IconChartBar } from '../../icons';\nimport { ChartTooltip, type ChartTooltipProps, type ChartTooltipRow } from '../ChartTooltip';\nimport {\n measureLabel,\n useChartMetrics,\n useSeriesToggle,\n type ChartHeight,\n type ChartLegendAlign,\n type LabelFont,\n type MarkVisibility,\n} from '../core';\nimport { resolveSeriesColors, type SeriesAppearance } from '../palette';\nimport { formatarNumero, formatarPercentual } from '../../../utils/formatters';\nimport { ChartMapLegend } from './ChartMapLegend';\nimport { ChartMapTable, type MapTableMarkerRow, type MapTableRegionRow } from './ChartMapTable';\nimport {\n fitProjection,\n naturalHeight,\n projectedBounds,\n projectedParts,\n regionsOf,\n type ChartMapFeature,\n type ChartMapFeatureCollection,\n type MapRegion,\n} from './mapGeometry';\nimport { CALLOUT_GAP, calloutWidth, planLabels, type LabelCandidate, type LabelPlan } from './mapLabels';\nimport { buildMapScale, type ChartMapColorScale, type MapScale } from './mapScales';\nimport type { Point, Ring } from './polylabel';\nimport styles from './ChartMap.module.css';\n\nexport interface ChartMapRegionDatum {\n /** `id` da categoria, na escala categorica. */\n category?: string;\n /** Casa com o identificador da feicao, lido por `featureIdKey`. */\n id: string;\n value?: number | null;\n}\n\nexport interface ChartMapMarker {\n id: string;\n label: string;\n latitude: number;\n longitude: number;\n value: number;\n}\n\nexport interface ChartMapMarkerSeries extends SeriesAppearance {\n id: string;\n label: string;\n points: readonly ChartMapMarker[];\n}\n\n/** Argumento de `onRegionClick`. */\nexport interface ChartMapRegion {\n category: string | null;\n feature: ChartMapFeature;\n id: string;\n name: string;\n value: number | null;\n}\n\n/** Argumento de `onMarkerClick`. */\nexport interface ChartMapMarkerEvent {\n id: string;\n /** `id` da serie. */\n series: string;\n value: number;\n}\n\nexport type ChartMapLegendPosition = 'top' | 'bottom' | 'right' | 'none';\n\nexport interface ChartMapProps {\n /** Cor de tema que abre a paleta das categorias e dos marcadores, como nos demais gráficos. */\n accent?: string;\n colorScale?: ChartMapColorScale;\n data?: readonly ChartMapRegionDatum[];\n /** Series ocultas de inicio, no modo nao controlado: categorias e series de marcadores, pelo `id`. */\n defaultHiddenSeries?: readonly string[];\n emptyMessage?: string;\n /** Caminho do identificador na feicao, como `properties.sigla`. E por ele que o dado casa. */\n featureIdKey?: string;\n /** Caminho do texto curto do rotulo no desenho. Sem ele, o identificador, como a sigla da UF. */\n featureLabelKey?: string;\n /** Caminho do nome exibido no balao, na tabela e na descricao. */\n featureNameKey?: string;\n /** Ids que o enquadramento abraca. As demais regioes ficam em cinza, como contexto, sem interacao. */\n focus?: readonly string[];\n formatPercent?: (ratio: number) => string;\n formatTooltipValue?: (value: number) => string;\n formatValue?: (value: number) => string;\n /** Fronteiras em GeoJSON, fornecidas pelo produto, que responde pela licenca delas. */\n geometry: ChartMapFeatureCollection;\n /** Altura maxima em px, ou `fill`. Na largura estreita, a altura encolhe ate a proporcao da geometria. */\n height?: ChartHeight;\n /** Faixas ocultas pelo indice, na escala por classes (controlado). */\n hiddenClasses?: readonly number[];\n /** Categorias e series de marcadores desligadas, pelo `id` (controlado). */\n hiddenSeries?: readonly string[];\n /** Abaixo de 640 px de largura, `right` cai para `bottom`. */\n legend?: ChartMapLegendPosition;\n legendAlign?: ChartLegendAlign;\n /** Raio maximo do marcador, em px. O raio cresce pela raiz do valor, entao a area e proporcional. */\n markerMaxSize?: number;\n markerMinSize?: number;\n markers?: readonly ChartMapMarkerSeries[];\n markerValueLabel?: string;\n noDataLabel?: string;\n noDataStyle?: 'hatch' | 'neutral';\n onHiddenClassesChange?: (hidden: readonly number[]) => void;\n onHiddenSeriesChange?: (hidden: readonly string[]) => void;\n /** Regiao sob o ponteiro ou o foco, para paineis vizinhos. */\n onHoverRegion?: (id: string | null) => void;\n /** Com ele, os marcadores viram botoes e entram no teclado. */\n onMarkerClick?: (marker: ChartMapMarkerEvent) => void;\n /** Com ele, as regioes viram botoes e entram no teclado. */\n onRegionClick?: (region: ChartMapRegion) => void;\n regionLabels?: MarkVisibility;\n selectedRegion?: string | null;\n showDataLabels?: MarkVisibility;\n /** Parte do total no balao e na tabela. So faz sentido em grandeza somavel. */\n showShare?: boolean;\n showTableToggle?: boolean;\n showTooltip?: boolean;\n /** O rotulo que nao cabe na regiao vai para uma coluna junto ao desenho, com linha guia, ou some. */\n smallRegionLabels?: 'callout' | 'hidden';\n /** Linha sob o titulo, como o total do nivel. */\n subtitle?: string;\n title: string;\n valueLabel?: string;\n}\n\ninterface RegionEntry {\n category: string | null;\n /** Nome, valor e posicao, para o leitor de tela. */\n description: string;\n /** Cor da escala; `undefined` sem dado. */\n fill: string | undefined;\n hidden: boolean;\n key: string | undefined;\n rank: number | undefined;\n region: MapRegion;\n value: number | null;\n /** Valor formatado, ou a categoria; `undefined` sem dado. */\n valueText: string | undefined;\n}\n\ninterface PlacedMarker {\n color: string;\n key: string;\n point: ChartMapMarker;\n radius: number;\n series: ChartMapMarkerSeries;\n x: number;\n y: number;\n}\n\ntype Target = { kind: 'region'; entry: RegionEntry } | { kind: 'marker'; marker: PlacedMarker };\n\nconst DEFAULT_SCALE: ChartMapColorScale = { type: 'sequential' };\nconst NARROW = 640;\nconst MIN_HEIGHT = 160;\nconst SIDE_LEGEND_MAX = 240;\nconst NO_DATA_HATCH =\n 'repeating-linear-gradient(45deg, var(--pl-chart-no-data-hatch) 0 1.5px, var(--pl-chart-no-data) 1.5px 4px)';\nconst HIDDEN_FILL = 'var(--pl-color-surface-subtle)';\n\nconst defaultPercent = (ratio: number) => formatarPercentual(ratio, { casasDecimais: 1 });\nconst plural = (count: number, one: string, many: string) => `${count} ${count === 1 ? one : many}`;\n\n/** Traco mais fino quanto mais regioes: nos municipios, a borda inteira escurecia o mapa. */\nfunction strokeWidthFor(count: number) {\n return count > 1000 ? 0.25 : count > 100 ? 0.5 : 0.8;\n}\n\ndeclare const process: { env: { NODE_ENV?: string } };\n\n// O bundler de quem consome substitui a expressão inteira; sem bundler e sem `process`, o aviso apenas não sai.\nfunction isDevelopment() {\n try {\n return process.env.NODE_ENV !== 'production';\n } catch {\n return false;\n }\n}\n\ninterface MapLayout {\n height: number;\n plan: LabelPlan;\n projection: GeoProjection;\n}\n\ninterface LayoutInput {\n all: readonly MapRegion[];\n callouts: boolean;\n /** Em `fill`, a altura e a do conteiner, e nao a que a geometria pede. */\n fixedHeight: boolean;\n font: LabelFont;\n labels: boolean;\n maxHeight: number;\n target: readonly MapRegion[];\n valueOf: (region: MapRegion) => string | undefined;\n width: number;\n}\n\n/**\n * Enquadra e rotula. A altura e a que a geometria pede na largura, ate a maxima, sem faixa vazia. Quando algum rotulo\n * vai para a coluna, o desenho cede a largura dela e e enquadrado e rotulado de novo.\n */\nfunction layoutMap({ all, callouts, fixedHeight, font, labels, maxHeight, target, valueOf, width }: LayoutInput): MapLayout {\n const measure = (text: string) => measureLabel(text, font);\n const lineHeight = font.size + 1;\n\n const pass = (drawingWidth: number): MapLayout => {\n const height = fixedHeight\n ? maxHeight\n : Math.round(Math.min(maxHeight, Math.max(MIN_HEIGHT, naturalHeight(target, drawingWidth))));\n const projection = fitProjection(target, all, drawingWidth, height);\n\n if (!labels) {\n return { height, plan: { callouts: [], inside: [] }, projection };\n }\n\n const candidates = target.map((region): LabelCandidate => {\n let parts: Ring[][] | undefined;\n\n return {\n bounds: projectedBounds(region, projection),\n id: region.id,\n get parts() {\n parts ??= projectedParts(region, projection);\n return parts;\n },\n title: region.label,\n value: valueOf(region),\n };\n });\n\n return {\n height,\n plan: planLabels(candidates, {\n callouts,\n calloutStep: font.lineHeight,\n height,\n lineHeight,\n measure,\n right: drawingWidth,\n }),\n projection,\n };\n };\n\n const first = pass(width);\n\n if (first.plan.callouts.length === 0) {\n return first;\n }\n\n const gutter = Math.ceil(Math.max(...first.plan.callouts.map((label) => calloutWidth(label, measure))) + CALLOUT_GAP + 4);\n\n return pass(Math.max(width - gutter, width / 2));\n}\n\n/**\n * Regioes pintadas pelo valor e marcadores por coordenada, sobre a geometria GeoJSON que o produto fornece. O desenho\n * e imagem nomeada pelo titulo; com `onRegionClick` ou `onMarkerClick`, um grupo cujas marcas sao botoes de tabulacao\n * movel. A leitura completa, com busca, esta na visao em tabela.\n */\nexport function ChartMap({\n accent,\n colorScale = DEFAULT_SCALE,\n data = [],\n defaultHiddenSeries,\n emptyMessage = 'Sem dados',\n featureIdKey = 'id',\n featureLabelKey,\n featureNameKey = 'properties.name',\n focus,\n formatPercent = defaultPercent,\n formatTooltipValue,\n formatValue = formatarNumero,\n geometry,\n height = 440,\n hiddenClasses,\n hiddenSeries,\n legend = 'bottom',\n legendAlign = 'center',\n markerMaxSize = 20,\n markerMinSize = 3,\n markers,\n markerValueLabel = 'Valor',\n noDataLabel = 'Sem dado',\n noDataStyle = 'hatch',\n onHiddenClassesChange,\n onHiddenSeriesChange,\n onHoverRegion,\n onMarkerClick,\n onRegionClick,\n regionLabels = 'visible',\n selectedRegion,\n showDataLabels = 'hidden',\n showShare = false,\n showTableToggle = true,\n showTooltip = true,\n smallRegionLabels = 'callout',\n subtitle,\n title,\n valueLabel = 'Valor',\n}: ChartMapProps) {\n const titleId = useId();\n const summaryId = useId();\n const hatchId = `${useId().replace(/[^\\w-]/g, '')}-hatch`;\n const outer = useChartMetrics();\n const plot = useChartMetrics();\n const svgRef = useRef<SVGSVGElement>(null);\n const seriesToggle = useSeriesToggle({ defaultHiddenSeries, hiddenSeries, onHiddenSeriesChange });\n // As faixas sao indices; a legenda liga e desliga por texto.\n const hiddenClassKeys = useMemo(() => hiddenClasses?.map(String), [hiddenClasses]);\n const classToggle = useSeriesToggle({\n hiddenSeries: hiddenClassKeys,\n onHiddenSeriesChange: onHiddenClassesChange && ((hidden) => onHiddenClassesChange(hidden.map(Number))),\n });\n const [target, setTarget] = useState<Target | null>(null);\n const [focusedMark, setFocusedMark] = useState<string | null>(null);\n const [tabStopMark, setTabStopMark] = useState<string | null>(null);\n const [highlightedKey, setHighlightedKey] = useState<string | null>(null);\n const [tableView, setTableView] = useState(false);\n\n const regions = useMemo(\n () => regionsOf(geometry, { idKey: featureIdKey, labelKey: featureLabelKey, nameKey: featureNameKey }),\n [featureIdKey, featureLabelKey, featureNameKey, geometry],\n );\n // A chave textual mantem o recorte memorizado enquanto os ids nao mudam, mesmo com outra lista a cada desenho.\n const focusKey = (focus ?? []).join('\\u0000');\n const { context, inPlay } = useMemo(() => {\n const ids = new Set(focusKey ? focusKey.split('\\u0000') : []);\n const focused = regions.filter((region) => ids.has(region.id));\n\n return focused.length > 0\n ? { context: regions.filter((region) => !ids.has(region.id)), inPlay: focused }\n : { context: [], inPlay: regions };\n }, [focusKey, regions]);\n\n const legendToggle = colorScale.type === 'categorical' ? seriesToggle : classToggle;\n const isLegendHidden = legendToggle.isHidden;\n\n // Memorizado contra o ponteiro: com milhares de municipios, refazer escala e descricoes a cada passagem pesaria.\n const { entries, ranked, scale } = useMemo(() => {\n const datumById = new Map<string, ChartMapRegionDatum>();\n data.forEach((datum) => {\n if (!datumById.has(datum.id)) {\n datumById.set(datum.id, datum);\n }\n });\n\n const read = inPlay.map((region) => {\n const datum = datumById.get(region.id);\n const value = datum?.value;\n\n return {\n category: datum?.category ?? null,\n region,\n value: typeof value === 'number' && Number.isFinite(value) ? value : null,\n };\n });\n const mapScale = buildMapScale(colorScale, read.flatMap((item) => item.value ?? []), formatValue, accent);\n const withValue = read.filter((item) => item.value !== null).sort((a, b) => b.value! - a.value!);\n const rankOf = new Map(withValue.map((item, index) => [item.region.id, index + 1]));\n const all = read.map((item): RegionEntry => {\n const key = mapScale.keyOf(item);\n const rank = rankOf.get(item.region.id);\n const valueText = mapScale.numeric\n ? item.value === null\n ? undefined\n : formatValue(item.value)\n : mapScale.labelOf(item);\n const description =\n colorScale.type === 'none'\n ? item.region.name\n : [item.region.name, valueText ?? noDataLabel, rank && `${rank}º de ${withValue.length}`]\n .filter(Boolean)\n .join(', ');\n\n return {\n ...item,\n description,\n fill: mapScale.fillOf(item),\n hidden: key !== undefined && isLegendHidden(key),\n key,\n rank,\n valueText,\n };\n });\n\n return {\n entries: all,\n ranked: all.filter((entry) => entry.rank !== undefined).sort((a, b) => a.rank! - b.rank!),\n scale: mapScale,\n };\n }, [accent, colorScale, data, formatValue, inPlay, isLegendHidden, noDataLabel]);\n const total = sum(ranked, (entry) => entry.value!);\n const noDataCount = colorScale.type === 'none' ? 0 : entries.filter((entry) => entry.fill === undefined).length;\n\n // Dado sem regiao some do desenho: em desenvolvimento, o componente avisa em vez de descartar calado.\n const orphanKey = useMemo(() => {\n const ids = new Set(regions.map((region) => region.id));\n\n return data\n .filter((datum) => !ids.has(datum.id))\n .map((datum) => datum.id)\n .join(', ');\n }, [data, regions]);\n useEffect(() => {\n if (orphanKey && isDevelopment()) {\n console.warn(`ChartMap \"${title}\": ${orphanKey.split(', ').length} dado(s) sem região na geometria, fora do desenho: ${orphanKey}.`);\n }\n }, [orphanKey, title]);\n\n const markerSeries = markers ?? [];\n const markerColors = useMemo(() => resolveSeriesColors(markerSeries, { accent }), [accent, markerSeries]);\n const validPoints = new Set(\n markerSeries.flatMap((series) =>\n series.points.filter(\n (point) => [point.latitude, point.longitude, point.value].every(Number.isFinite) && point.value >= 0,\n ),\n ),\n );\n const hasMarkers = validPoints.size > 0;\n const empty =\n regions.length === 0 ||\n (!hasMarkers &&\n (scale.numeric\n ? ranked.length === 0\n : colorScale.type === 'categorical' && entries.every((entry) => entry.fill === undefined)));\n\n const sideLegend = legend === 'right' && outer.width >= NARROW;\n const legendPosition = legend === 'right' && !sideLegend ? 'bottom' : legend;\n const width = plot.width;\n const fillHeight = height === 'fill';\n const maxHeight = fillHeight ? Math.max(plot.height, MIN_HEIGHT) : height;\n\n const labelsOn = regionLabels !== 'hidden';\n const valuesOn = showDataLabels !== 'hidden' && scale.numeric;\n const layout = useMemo(() => {\n if (width === 0 || empty) {\n return undefined;\n }\n\n const valueTexts = new Map(entries.map((entry) => [entry.region.id, entry.valueText]));\n\n return layoutMap({\n all: regions,\n callouts: smallRegionLabels === 'callout',\n fixedHeight: fillHeight,\n font: plot.font,\n labels: labelsOn,\n maxHeight,\n target: inPlay,\n valueOf: (region) => (valuesOn ? valueTexts.get(region.id) : undefined),\n width,\n });\n }, [empty, entries, fillHeight, inPlay, labelsOn, maxHeight, plot.font, regions, smallRegionLabels, valuesOn, width]);\n const projection = layout?.projection;\n const plotHeight = layout?.height ?? 0;\n const paths = useMemo(() => {\n if (!projection) {\n return new Map<string, string>();\n }\n\n const path = geoPath(projection);\n return new Map(regions.map((region) => [region.id, path(region.shape) ?? '']));\n }, [projection, regions]);\n\n const radius = scaleSqrt()\n .domain([0, Math.max(...[...validPoints].map((point) => point.value), 1)])\n .range([0, markerMaxSize]);\n const placedMarkers: PlacedMarker[] = projection\n ? markerSeries\n .flatMap((series, seriesIndex) =>\n seriesToggle.isHidden(series.id)\n ? []\n : series.points.flatMap((point, pointIndex) => {\n const position = validPoints.has(point) ? projection([point.longitude, point.latitude]) : null;\n\n return position\n ? [\n {\n color: markerColors[seriesIndex],\n key: `marker:${seriesIndex}:${pointIndex}`,\n point,\n radius: Math.max(markerMinSize, radius(point.value)),\n series,\n x: position[0],\n y: position[1],\n },\n ]\n : [];\n }),\n )\n .sort((a, b) => b.radius - a.radius)\n : [];\n\n const regionsInteractive = onRegionClick !== undefined;\n const markersInteractive = onMarkerClick !== undefined;\n const interactive = regionsInteractive || markersInteractive;\n const regionMark = (index: number) => `region:${index}`;\n const marks = [\n ...(regionsInteractive ? entries.map((_, index) => regionMark(index)) : []),\n ...(markersInteractive ? placedMarkers.map((marker) => marker.key) : []),\n ];\n const selectedIndex = entries.findIndex((entry) => entry.region.id === selectedRegion);\n const tabStop = marks.includes(tabStopMark ?? '')\n ? tabStopMark\n : regionsInteractive && selectedIndex >= 0\n ? regionMark(selectedIndex)\n : marks[0];\n\n const entryOfMark = (mark: string | null) =>\n mark?.startsWith('region:') ? entries[Number(mark.slice('region:'.length))] : undefined;\n const markerOfMark = (mark: string | null) => placedMarkers.find((marker) => marker.key === mark);\n const focusedEntry = entryOfMark(focusedMark);\n const focusedMarker = markerOfMark(focusedMark);\n const hoveredEntry = target?.kind === 'region' ? target.entry : undefined;\n const activeRegionId = hoveredEntry?.region.id ?? focusedEntry?.region.id;\n\n const regionEvent = (entry: RegionEntry): ChartMapRegion => ({\n category: entry.category,\n feature: entry.region.feature,\n id: entry.region.id,\n name: entry.region.name,\n value: entry.value,\n });\n const markerEvent = ({ point, series }: PlacedMarker): ChartMapMarkerEvent => ({\n id: point.id,\n series: series.id,\n value: point.value,\n });\n\n const describeMarker = ({ point, series }: PlacedMarker) =>\n `${point.label}, ${series.label}, ${formatValue(point.value)}`;\n\n function markFrom(event: SyntheticEvent) {\n return (event.target as Element).getAttribute?.('data-mark') ?? null;\n }\n\n function hover(mark: string | null) {\n const entry = entryOfMark(mark);\n const marker = markerOfMark(mark);\n\n setTarget(entry ? { entry, kind: 'region' } : marker ? { kind: 'marker', marker } : null);\n onHoverRegion?.(entry?.region.id ?? null);\n }\n\n function activate(mark: string | null) {\n const entry = entryOfMark(mark);\n const marker = markerOfMark(mark);\n\n if (entry && onRegionClick) {\n setTabStopMark(mark);\n onRegionClick(regionEvent(entry));\n } else if (marker && onMarkerClick) {\n setTabStopMark(mark);\n onMarkerClick(markerEvent(marker));\n }\n }\n\n /** A marca vizinha na direcao da seta, pelo centro de cada uma, como no artefato do componente. */\n function neighbor(from: string, [dx, dy]: readonly [number, number]) {\n if (!projection) {\n return undefined;\n }\n\n const path = geoPath(projection);\n const anchorOf = (mark: string): Point => {\n const entry = entryOfMark(mark);\n const marker = markerOfMark(mark);\n return entry ? path.centroid(entry.region.shape) : marker ? [marker.x, marker.y] : [0, 0];\n };\n const [x0, y0] = anchorOf(from);\n let best: string | undefined;\n let bestScore = Infinity;\n\n marks.forEach((mark) => {\n if (mark === from) {\n return;\n }\n\n const [x, y] = anchorOf(mark);\n const along = (x - x0) * dx + (y - y0) * dy;\n const score = along + 2 * Math.abs((x - x0) * dy - (y - y0) * dx);\n\n if (along > 1 && score < bestScore) {\n bestScore = score;\n best = mark;\n }\n });\n\n return best;\n }\n\n function handleKeyDown(event: KeyboardEvent<SVGGElement>) {\n const mark = markFrom(event);\n const directions: Record<string, readonly [number, number]> = {\n ArrowDown: [0, 1],\n ArrowLeft: [-1, 0],\n ArrowRight: [1, 0],\n ArrowUp: [0, -1],\n };\n\n if (!mark || !marks.includes(mark)) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n activate(mark);\n return;\n }\n\n if (event.key in directions) {\n event.preventDefault();\n const next = neighbor(mark, directions[event.key]);\n\n if (next) {\n setTabStopMark(next);\n svgRef.current?.querySelector<SVGElement>(`[data-mark=\"${next}\"]`)?.focus();\n }\n }\n }\n\n const markHandlers = {\n onBlur: () => {\n setFocusedMark(null);\n onHoverRegion?.(null);\n },\n onClick: (event: SyntheticEvent) => activate(markFrom(event)),\n onFocus: (event: SyntheticEvent) => {\n const mark = markFrom(event);\n setFocusedMark(mark);\n setTabStopMark(mark);\n onHoverRegion?.(entryOfMark(mark)?.region.id ?? null);\n },\n onKeyDown: handleKeyDown,\n onMouseOut: () => hover(null),\n onMouseOver: (event: SyntheticEvent) => hover(markFrom(event)),\n };\n\n const strokeWidth = strokeWidthFor(regions.length);\n const labelPlan = layout?.plan ?? { callouts: [], inside: [] };\n const lineHeight = plot.font.size + 1;\n const noDataFill = noDataStyle === 'hatch' ? `url(#${hatchId})` : 'var(--pl-chart-no-data)';\n\n // As regioes nao dependem do ponteiro: o balao e o contorno passam sem refazer milhares de caminhos.\n const regionShapes = useMemo(\n () =>\n entries.map((entry, index) => {\n const mark = regionMark(index);\n const dimmed = highlightedKey !== null && entry.key !== highlightedKey;\n\n return (\n <path\n aria-label={entry.description}\n aria-pressed={regionsInteractive && selectedRegion !== undefined ? entry.region.id === selectedRegion : undefined}\n className={`${styles.region} ${regionsInteractive ? styles.clickable : ''} ${dimmed ? styles.dimmed : ''}`}\n d={paths.get(entry.region.id)}\n data-mark={mark}\n fill={entry.hidden ? HIDDEN_FILL : (entry.fill ?? noDataFill)}\n key={index}\n role={regionsInteractive ? 'button' : undefined}\n strokeWidth={strokeWidth}\n tabIndex={regionsInteractive ? (mark === tabStop ? 0 : -1) : undefined}\n />\n );\n }),\n [entries, highlightedKey, noDataFill, paths, regionsInteractive, selectedRegion, strokeWidth, tabStop],\n );\n const contextShapes = useMemo(\n () =>\n context.map((region, index) => (\n <path className={styles.context} d={paths.get(region.id)} key={index} strokeWidth={strokeWidth} />\n )),\n [context, paths, strokeWidth],\n );\n\n const summary = (() => {\n const count = plural(entries.length, 'região', 'regiões');\n const missing = noDataCount > 0 ? ` ${noDataCount} sem dado.` : '';\n const hint = interactive ? ' Use as setas para percorrer as marcas.' : '';\n\n if (!scale.numeric || ranked.length === 0) {\n return `Mapa de ${count}.${missing}${hint}`;\n }\n\n const [top, bottom] = [ranked[0], ranked[ranked.length - 1]];\n return `Mapa de ${count}. Maior valor: ${top.region.name}, ${formatValue(top.value!)}. Menor: ${\n bottom.region.name\n }, ${formatValue(bottom.value!)}.${missing}${hint}`;\n })();\n\n function labelClass(id: string, onHoverOnly: boolean) {\n return `${styles.label} ${onHoverOnly ? styles.labelOnHover : ''} ${activeRegionId === id ? styles.labelActive : ''}`;\n }\n\n const svg = projection && (\n <svg\n aria-describedby={summaryId}\n aria-labelledby={titleId}\n className={`${styles.canvas} ${fillHeight ? styles.canvasFill : ''}`}\n height={plotHeight}\n ref={svgRef}\n role={interactive ? 'group' : 'img'}\n viewBox={`0 0 ${width} ${plotHeight}`}\n width={width}\n >\n <defs>\n <pattern height={6} id={hatchId} patternTransform=\"rotate(45)\" patternUnits=\"userSpaceOnUse\" width={6}>\n <rect className={styles.hatchBackground} height={6} width={6} />\n <line className={styles.hatchLine} x1={0} x2={0} y1={0} y2={6} />\n </pattern>\n </defs>\n\n <g aria-hidden=\"true\" className={styles.passThrough}>\n {contextShapes}\n </g>\n\n <g {...markHandlers}>{regionShapes}</g>\n\n <g aria-hidden=\"true\" className={styles.passThrough}>\n {selectedIndex >= 0 && (\n <path className={styles.selectedOutline} d={paths.get(entries[selectedIndex].region.id)} />\n )}\n {hoveredEntry && <path className={styles.hoverOutline} d={paths.get(hoveredEntry.region.id)} />}\n {focusedEntry && <path className={styles.focusOutline} d={paths.get(focusedEntry.region.id)} />}\n </g>\n\n <g {...markHandlers}>\n {placedMarkers.map((marker) => (\n <circle\n aria-label={describeMarker(marker)}\n className={`${styles.marker} ${markersInteractive ? styles.clickable : ''}`}\n cx={marker.x}\n cy={marker.y}\n data-mark={marker.key}\n fill={marker.color}\n key={marker.key}\n r={marker.radius}\n role={markersInteractive ? 'button' : 'img'}\n tabIndex={markersInteractive ? (marker.key === tabStop ? 0 : -1) : undefined}\n />\n ))}\n {focusedMarker && (\n <circle\n aria-hidden=\"true\"\n className={styles.focusOutline}\n cx={focusedMarker.x}\n cy={focusedMarker.y}\n r={focusedMarker.radius + 3}\n />\n )}\n </g>\n\n <g aria-hidden=\"true\" className={styles.passThrough}>\n {labelPlan.inside.map((label) => (\n <text className={labelClass(label.id, regionLabels === 'onHover')} key={label.id} x={label.x} y={label.y}>\n <tspan dominantBaseline=\"central\" x={label.x} y={label.value ? label.y - lineHeight / 2 : label.y}>\n {label.title}\n </tspan>\n {label.value && (\n <tspan\n className={`${styles.labelValue} ${showDataLabels === 'onHover' ? styles.valueOnHover : ''}`}\n dominantBaseline=\"central\"\n x={label.x}\n y={label.y + lineHeight / 2}\n >\n {label.value}\n </tspan>\n )}\n </text>\n ))}\n {labelPlan.callouts.map((label) => (\n <g className={labelClass(label.id, regionLabels === 'onHover')} key={label.id}>\n <path\n className={styles.leader}\n d={`M${label.anchor[0]},${label.anchor[1]}L${label.x - 12},${label.y}L${label.x - 4},${label.y}`}\n />\n <circle className={styles.leaderDot} cx={label.anchor[0]} cy={label.anchor[1]} r={1.8} />\n <text className={styles.callout} dominantBaseline=\"central\" x={label.x} y={label.y}>\n {label.title}\n {label.value && (\n <tspan\n className={`${styles.labelValue} ${showDataLabels === 'onHover' ? styles.valueOnHover : ''}`}\n dx={5}\n >\n {label.value}\n </tspan>\n )}\n </text>\n </g>\n ))}\n </g>\n </svg>\n );\n\n const tooltip = tooltipOf(target, {\n formatPercent,\n formatValue,\n formatTooltipValue: formatTooltipValue ?? formatValue,\n markerValueLabel,\n noDataLabel,\n rankedCount: ranked.length,\n scale,\n showShare,\n total,\n valueLabel,\n colorScale,\n });\n\n const counts = new Map<string, number>();\n entries.forEach((entry) => entry.key !== undefined && counts.set(entry.key, (counts.get(entry.key) ?? 0) + 1));\n\n const legendView = legendPosition !== 'none' && (\n <ChartMapLegend\n align={legendAlign}\n entries={scale.entries.map((entry) => ({\n ...entry,\n count: counts.get(entry.key) ?? 0,\n hidden: legendToggle.isHidden(entry.key),\n }))}\n formatValue={formatValue}\n gradient={scale.gradient}\n indicator={hoveredEntry?.value == null ? undefined : scale.gradient?.position(hoveredEntry.value)}\n markerSeries={markerSeries.map((series, index) => ({\n color: markerColors[index],\n hidden: seriesToggle.isHidden(series.id),\n key: series.id,\n label: series.label,\n }))}\n markerSizes={\n hasMarkers ? { maximum: radius.domain()[1], radiusOf: (value) => Math.max(markerMinSize, radius(value)) } : undefined\n }\n markerValueLabel={markerValueLabel}\n noData={\n noDataCount > 0\n ? { color: noDataStyle === 'hatch' ? NO_DATA_HATCH : 'var(--pl-chart-no-data)', count: noDataCount, label: noDataLabel }\n : undefined\n }\n onHighlight={(key) => setHighlightedKey(key)}\n onToggle={legendToggle.toggle}\n onToggleMarkerSeries={seriesToggle.toggle}\n position={legendPosition}\n style={sideLegend ? { width: Math.min(SIDE_LEGEND_MAX, Math.round(outer.width * 0.3)) } : undefined}\n valueLabel={valueLabel}\n />\n );\n\n const tableRegions: MapTableRegionRow[] = entries\n .filter((entry) => !entry.hidden)\n .map((entry) => ({\n classLabel: colorScale.type === 'classes' ? scale.labelOf(entry) : undefined,\n id: entry.region.id,\n name: entry.region.name,\n rank: entry.rank,\n selected: entry.region.id === selectedRegion,\n share: entry.value !== null && total > 0 ? entry.value / total : undefined,\n value: entry.value,\n valueText: entry.valueText,\n }));\n const tableMarkers: MapTableMarkerRow[] = markerSeries.flatMap((series) =>\n seriesToggle.isHidden(series.id)\n ? []\n : series.points\n .filter((point) => validPoints.has(point))\n .map((point) => ({ key: `${series.id}:${point.id}`, name: point.label, series: series.label, value: formatValue(point.value) })),\n );\n\n return (\n <figure className={styles.figure}>\n <figcaption className={styles.header}>\n <span className={styles.heading}>\n <span className={styles.title} id={titleId}>\n {title}\n </span>\n {subtitle && <span className={styles.subtitle}>{subtitle}</span>}\n </span>\n {showTableToggle && !empty && (\n <Button\n aria-pressed={tableView}\n className={styles.tableToggle}\n onClick={() => setTableView((current) => !current)}\n size=\"sm\"\n variant=\"secondary\"\n >\n Ver como tabela\n </Button>\n )}\n </figcaption>\n\n <span className={styles.visuallyHidden} id={summaryId}>\n {summary}\n </span>\n\n <div className={`${styles.body} ${sideLegend && !tableView ? styles.bodyRow : ''}`} ref={outer.ref}>\n {legendPosition === 'top' && !tableView && !empty && legendView}\n\n {empty ? (\n <div className={styles.empty}>\n <EmptyState icon={<IconChartBar />} size=\"sm\" title={emptyMessage} />\n </div>\n ) : tableView ? (\n <ChartMapTable\n markerRows={tableMarkers}\n markerValueLabel={markerValueLabel}\n maxHeight={typeof height === 'number' ? Math.max(height, MIN_HEIGHT) : undefined}\n noDataLabel={noDataLabel}\n regionRows={tableRegions}\n showClasses={colorScale.type === 'classes'}\n showRank={scale.numeric}\n showShare={showShare && scale.numeric}\n showValue={colorScale.type !== 'none'}\n formatPercent={formatPercent}\n title={title}\n valueLabel={valueLabel}\n />\n ) : (\n <div className={`${styles.plot} ${fillHeight ? styles.plotFill : ''}`} ref={plot.ref}>\n {svg && (showTooltip ? <ChartTooltip {...tooltip}>{svg}</ChartTooltip> : svg)}\n </div>\n )}\n\n {(legendPosition === 'bottom' || legendPosition === 'right') && !tableView && !empty && legendView}\n </div>\n </figure>\n );\n}\n\ninterface TooltipOptions {\n colorScale: ChartMapColorScale;\n formatPercent: (ratio: number) => string;\n formatTooltipValue: (value: number) => string;\n formatValue: (value: number) => string;\n markerValueLabel: string;\n noDataLabel: string;\n rankedCount: number;\n scale: MapScale;\n showShare: boolean;\n total: number;\n valueLabel: string;\n}\n\n/** Balao do que esta sob o ponteiro: a regiao com valor, faixa, parte do total e posicao, ou o marcador. */\nfunction tooltipOf(target: Target | null, options: TooltipOptions): Omit<ChartTooltipProps, 'children'> {\n if (target === null) {\n return { rows: [] };\n }\n\n if (target.kind === 'marker') {\n const { color, point, series } = target.marker;\n\n return {\n columns: [{ format: options.formatTooltipValue }],\n computed: 'none',\n rows: [{ color, label: options.markerValueLabel, values: [point.value] }],\n subtitle: series.label,\n title: point.label,\n };\n }\n\n const { entry } = target;\n const { region } = entry;\n const subtitle = region.label !== region.name ? region.label : undefined;\n const text = (label: string, value: string): ChartTooltipRow => ({ format: () => value, label, values: [0] });\n const rows: ChartTooltipRow[] = [];\n\n if (options.colorScale.type === 'none') {\n rows.push({ label: subtitle ?? region.name, values: [] });\n } else if (!options.scale.numeric) {\n rows.push(\n entry.valueText\n ? { ...text(options.valueLabel, entry.valueText), color: entry.fill }\n : { label: options.noDataLabel, values: [] },\n );\n } else if (entry.value === null) {\n rows.push({ label: options.noDataLabel, values: [] });\n } else {\n rows.push({ color: entry.fill, label: options.valueLabel, values: [entry.value] });\n const range = options.colorScale.type === 'classes' ? options.scale.labelOf(entry) : undefined;\n\n if (range) {\n rows.push(text('Faixa', range));\n }\n\n if (options.showShare && options.total > 0) {\n rows.push({ format: options.formatPercent, label: '% do total', values: [entry.value / options.total] });\n }\n\n rows.push(text('Posição', `${entry.rank}º de ${options.rankedCount}`));\n }\n\n if (entry.hidden) {\n rows.push({ label: 'Oculta pela legenda', values: [] });\n }\n\n return {\n columns: [{ format: options.formatTooltipValue }],\n computed: 'none',\n rows,\n subtitle,\n title: region.name,\n };\n}\n"],"names":["DEFAULT_SCALE","NARROW","MIN_HEIGHT","SIDE_LEGEND_MAX","NO_DATA_HATCH","HIDDEN_FILL","defaultPercent","ratio","formatarPercentual","plural","count","one","many","strokeWidthFor","isDevelopment","layoutMap","all","callouts","fixedHeight","font","labels","maxHeight","target","valueOf","width","measure","text","measureLabel","lineHeight","pass","drawingWidth","height","naturalHeight","projection","fitProjection","candidates","region","parts","projectedBounds","projectedParts","planLabels","first","gutter","label","calloutWidth","CALLOUT_GAP","ChartMap","accent","colorScale","data","defaultHiddenSeries","emptyMessage","featureIdKey","featureLabelKey","featureNameKey","focus","formatPercent","formatTooltipValue","formatValue","formatarNumero","geometry","hiddenClasses","hiddenSeries","legend","legendAlign","markerMaxSize","markerMinSize","markers","markerValueLabel","noDataLabel","noDataStyle","onHiddenClassesChange","onHiddenSeriesChange","onHoverRegion","onMarkerClick","onRegionClick","regionLabels","selectedRegion","showDataLabels","showShare","showTableToggle","showTooltip","smallRegionLabels","subtitle","title","valueLabel","titleId","useId","summaryId","hatchId","outer","useChartMetrics","plot","svgRef","useRef","seriesToggle","useSeriesToggle","hiddenClassKeys","useMemo","classToggle","hidden","setTarget","useState","focusedMark","setFocusedMark","tabStopMark","setTabStopMark","highlightedKey","setHighlightedKey","tableView","setTableView","regions","regionsOf","focusKey","context","inPlay","ids","focused","legendToggle","isLegendHidden","entries","ranked","scale","datumById","datum","read","value","mapScale","buildMapScale","item","withValue","a","b","rankOf","index","key","rank","valueText","description","entry","total","sum","noDataCount","orphanKey","useEffect","markerSeries","markerColors","resolveSeriesColors","validPoints","series","point","hasMarkers","empty","sideLegend","legendPosition","fillHeight","labelsOn","valuesOn","layout","valueTexts","plotHeight","paths","path","geoPath","radius","scaleSqrt","placedMarkers","seriesIndex","pointIndex","position","regionsInteractive","markersInteractive","interactive","regionMark","marks","_","marker","selectedIndex","tabStop","entryOfMark","mark","markerOfMark","focusedEntry","focusedMarker","hoveredEntry","activeRegionId","regionEvent","markerEvent","describeMarker","markFrom","event","_b","_a","hover","activate","neighbor","from","dx","dy","anchorOf","x0","y0","best","bestScore","x","y","along","score","handleKeyDown","directions","next","markHandlers","strokeWidth","labelPlan","noDataFill","regionShapes","dimmed","jsx","styles","contextShapes","summary","missing","hint","top","bottom","labelClass","id","onHoverOnly","svg","jsxs","tooltip","tooltipOf","counts","legendView","ChartMapLegend","tableRegions","tableMarkers","Button","current","EmptyState","IconChartBar","ChartMapTable","ChartTooltip","options","color","rows","range"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e="_figure_rp3rs_1 _figure_yf6oe_1",t="_header_rp3rs_6",l="_tableToggle_rp3rs_13",r="_heading_rp3rs_18",s="_title_rp3rs_24 _title_yf6oe_9",n="_subtitle_rp3rs_28",_="_body_rp3rs_35",o="_bodyRow_rp3rs_42",a="_plot_rp3rs_48",c="_plotFill_rp3rs_54",i="_canvas_rp3rs_60",d="_canvasFill_rp3rs_66",p="_empty_rp3rs_71",g="_passThrough_rp3rs_79",u="_region_rp3rs_84",b="_clickable_rp3rs_92",h="_dimmed_rp3rs_96",v="_context_rp3rs_101",y="_hatchBackground_rp3rs_108",k="_hatchLine_rp3rs_112",m="_selectedOutline_rp3rs_117",O="_hoverOutline_rp3rs_118",T="_focusOutline_rp3rs_119",f="_marker_rp3rs_140",B="_label_rp3rs_154",C="_callout_rp3rs_155",S="_labelValue_rp3rs_175",z="_labelOnHover_rp3rs_179",H="_valueOnHover_rp3rs_180",K="_labelActive_rp3rs_184",L="_leader_rp3rs_194",M="_leaderDot_rp3rs_200",w="_legend_rp3rs_206",F="_legendLeft_rp3rs_213",I="_legendCenter_rp3rs_217",R="_legendRight_rp3rs_221",V="_legendSide_rp3rs_225",x="_legendBlock_rp3rs_231",A="_legendTitle_rp3rs_238",D="_legendLists_rp3rs_245",E="_gradientBar_rp3rs_260",j="_gradientTicks_rp3rs_270",P="_gradientIndicator_rp3rs_274",q="_tickMiddle_rp3rs_303",G="_tickEnd_rp3rs_307",J="_sizeKey_rp3rs_311",N="_sizeKeyItem_rp3rs_320",Q="_sizeKeyCircle_rp3rs_327",U="_tableView_rp3rs_335",W="_tableTools_rp3rs_343",X="_tableCount_rp3rs_350",Y="_tableScroll_rp3rs_356",Z="_table_rp3rs_13",$="_numeric_rp3rs_397",ee="_sortButton_rp3rs_407",te="_tableSelected_rp3rs_423",le="_tableMuted_rp3rs_428",re="_tableCaption_rp3rs_432",se="_visuallyHidden_rp3rs_440",ne={figure:e,header:t,tableToggle:l,heading:r,title:s,subtitle:n,body:_,bodyRow:o,plot:a,plotFill:c,canvas:i,canvasFill:d,empty:p,passThrough:g,region:u,clickable:b,dimmed:h,context:v,hatchBackground:y,hatchLine:k,selectedOutline:m,hoverOutline:O,focusOutline:T,marker:f,label:B,callout:C,labelValue:S,labelOnHover:z,valueOnHover:H,labelActive:K,leader:L,leaderDot:M,legend:w,legendLeft:F,legendCenter:I,legendRight:R,legendSide:V,legendBlock:x,legendTitle:A,legendLists:D,gradientBar:E,gradientTicks:j,gradientIndicator:P,tickMiddle:q,tickEnd:G,sizeKey:J,sizeKeyItem:N,sizeKeyCircle:Q,tableView:U,tableTools:W,tableCount:X,tableScroll:Y,table:Z,numeric:$,sortButton:ee,tableSelected:te,tableMuted:le,tableCaption:re,visuallyHidden:se};exports.body=_;exports.bodyRow=o;exports.callout=C;exports.canvas=i;exports.canvasFill=d;exports.clickable=b;exports.context=v;exports.default=ne;exports.dimmed=h;exports.empty=p;exports.figure=e;exports.focusOutline=T;exports.gradientBar=E;exports.gradientIndicator=P;exports.gradientTicks=j;exports.hatchBackground=y;exports.hatchLine=k;exports.header=t;exports.heading=r;exports.hoverOutline=O;exports.label=B;exports.labelActive=K;exports.labelOnHover=z;exports.labelValue=S;exports.leader=L;exports.leaderDot=M;exports.legend=w;exports.legendBlock=x;exports.legendCenter=I;exports.legendLeft=F;exports.legendLists=D;exports.legendRight=R;exports.legendSide=V;exports.legendTitle=A;exports.marker=f;exports.numeric=$;exports.passThrough=g;exports.plot=a;exports.plotFill=c;exports.region=u;exports.selectedOutline=m;exports.sizeKey=J;exports.sizeKeyCircle=Q;exports.sizeKeyItem=N;exports.sortButton=ee;exports.subtitle=n;exports.table=Z;exports.tableCaption=re;exports.tableCount=X;exports.tableMuted=le;exports.tableScroll=Y;exports.tableSelected=te;exports.tableToggle=l;exports.tableTools=W;exports.tableView=U;exports.tickEnd=G;exports.tickMiddle=q;exports.title=s;exports.valueOnHover=H;exports.visuallyHidden=se;
|
|
2
|
+
//# sourceMappingURL=ChartMap.module.css.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartMap.module.css.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
const e = "_figure_rp3rs_1 _figure_yf6oe_1", t = "_header_rp3rs_6", r = "_tableToggle_rp3rs_13", _ = "_heading_rp3rs_18", l = "_title_rp3rs_24 _title_yf6oe_9", s = "_subtitle_rp3rs_28", n = "_body_rp3rs_35", o = "_bodyRow_rp3rs_42", c = "_plot_rp3rs_48", a = "_plotFill_rp3rs_54", i = "_canvas_rp3rs_60", d = "_canvasFill_rp3rs_66", p = "_empty_rp3rs_71", g = "_passThrough_rp3rs_79", b = "_region_rp3rs_84", u = "_clickable_rp3rs_92", h = "_dimmed_rp3rs_96", v = "_context_rp3rs_101", y = "_hatchBackground_rp3rs_108", k = "_hatchLine_rp3rs_112", m = "_selectedOutline_rp3rs_117", O = "_hoverOutline_rp3rs_118", T = "_focusOutline_rp3rs_119", f = "_marker_rp3rs_140", B = "_label_rp3rs_154", C = "_callout_rp3rs_155", z = "_labelValue_rp3rs_175", H = "_labelOnHover_rp3rs_179", K = "_valueOnHover_rp3rs_180", L = "_labelActive_rp3rs_184", S = "_leader_rp3rs_194", w = "_leaderDot_rp3rs_200", F = "_legend_rp3rs_206", I = "_legendLeft_rp3rs_213", M = "_legendCenter_rp3rs_217", R = "_legendRight_rp3rs_221", V = "_legendSide_rp3rs_225", x = "_legendBlock_rp3rs_231", A = "_legendTitle_rp3rs_238", D = "_legendLists_rp3rs_245", E = "_gradientBar_rp3rs_260", j = "_gradientTicks_rp3rs_270", q = "_gradientIndicator_rp3rs_274", G = "_tickMiddle_rp3rs_303", J = "_tickEnd_rp3rs_307", N = "_sizeKey_rp3rs_311", P = "_sizeKeyItem_rp3rs_320", Q = "_sizeKeyCircle_rp3rs_327", U = "_tableView_rp3rs_335", W = "_tableTools_rp3rs_343", X = "_tableCount_rp3rs_350", Y = "_tableScroll_rp3rs_356", Z = "_table_rp3rs_13", $ = "_numeric_rp3rs_397", ee = "_sortButton_rp3rs_407", te = "_tableSelected_rp3rs_423", re = "_tableMuted_rp3rs_428", _e = "_tableCaption_rp3rs_432", le = "_visuallyHidden_rp3rs_440", se = {
|
|
2
|
+
figure: e,
|
|
3
|
+
header: t,
|
|
4
|
+
tableToggle: r,
|
|
5
|
+
heading: _,
|
|
6
|
+
title: l,
|
|
7
|
+
subtitle: s,
|
|
8
|
+
body: n,
|
|
9
|
+
bodyRow: o,
|
|
10
|
+
plot: c,
|
|
11
|
+
plotFill: a,
|
|
12
|
+
canvas: i,
|
|
13
|
+
canvasFill: d,
|
|
14
|
+
empty: p,
|
|
15
|
+
passThrough: g,
|
|
16
|
+
region: b,
|
|
17
|
+
clickable: u,
|
|
18
|
+
dimmed: h,
|
|
19
|
+
context: v,
|
|
20
|
+
hatchBackground: y,
|
|
21
|
+
hatchLine: k,
|
|
22
|
+
selectedOutline: m,
|
|
23
|
+
hoverOutline: O,
|
|
24
|
+
focusOutline: T,
|
|
25
|
+
marker: f,
|
|
26
|
+
label: B,
|
|
27
|
+
callout: C,
|
|
28
|
+
labelValue: z,
|
|
29
|
+
labelOnHover: H,
|
|
30
|
+
valueOnHover: K,
|
|
31
|
+
labelActive: L,
|
|
32
|
+
leader: S,
|
|
33
|
+
leaderDot: w,
|
|
34
|
+
legend: F,
|
|
35
|
+
legendLeft: I,
|
|
36
|
+
legendCenter: M,
|
|
37
|
+
legendRight: R,
|
|
38
|
+
legendSide: V,
|
|
39
|
+
legendBlock: x,
|
|
40
|
+
legendTitle: A,
|
|
41
|
+
legendLists: D,
|
|
42
|
+
gradientBar: E,
|
|
43
|
+
gradientTicks: j,
|
|
44
|
+
gradientIndicator: q,
|
|
45
|
+
tickMiddle: G,
|
|
46
|
+
tickEnd: J,
|
|
47
|
+
sizeKey: N,
|
|
48
|
+
sizeKeyItem: P,
|
|
49
|
+
sizeKeyCircle: Q,
|
|
50
|
+
tableView: U,
|
|
51
|
+
tableTools: W,
|
|
52
|
+
tableCount: X,
|
|
53
|
+
tableScroll: Y,
|
|
54
|
+
table: Z,
|
|
55
|
+
numeric: $,
|
|
56
|
+
sortButton: ee,
|
|
57
|
+
tableSelected: te,
|
|
58
|
+
tableMuted: re,
|
|
59
|
+
tableCaption: _e,
|
|
60
|
+
visuallyHidden: le
|
|
61
|
+
};
|
|
62
|
+
export {
|
|
63
|
+
n as body,
|
|
64
|
+
o as bodyRow,
|
|
65
|
+
C as callout,
|
|
66
|
+
i as canvas,
|
|
67
|
+
d as canvasFill,
|
|
68
|
+
u as clickable,
|
|
69
|
+
v as context,
|
|
70
|
+
se as default,
|
|
71
|
+
h as dimmed,
|
|
72
|
+
p as empty,
|
|
73
|
+
e as figure,
|
|
74
|
+
T as focusOutline,
|
|
75
|
+
E as gradientBar,
|
|
76
|
+
q as gradientIndicator,
|
|
77
|
+
j as gradientTicks,
|
|
78
|
+
y as hatchBackground,
|
|
79
|
+
k as hatchLine,
|
|
80
|
+
t as header,
|
|
81
|
+
_ as heading,
|
|
82
|
+
O as hoverOutline,
|
|
83
|
+
B as label,
|
|
84
|
+
L as labelActive,
|
|
85
|
+
H as labelOnHover,
|
|
86
|
+
z as labelValue,
|
|
87
|
+
S as leader,
|
|
88
|
+
w as leaderDot,
|
|
89
|
+
F as legend,
|
|
90
|
+
x as legendBlock,
|
|
91
|
+
M as legendCenter,
|
|
92
|
+
I as legendLeft,
|
|
93
|
+
D as legendLists,
|
|
94
|
+
R as legendRight,
|
|
95
|
+
V as legendSide,
|
|
96
|
+
A as legendTitle,
|
|
97
|
+
f as marker,
|
|
98
|
+
$ as numeric,
|
|
99
|
+
g as passThrough,
|
|
100
|
+
c as plot,
|
|
101
|
+
a as plotFill,
|
|
102
|
+
b as region,
|
|
103
|
+
m as selectedOutline,
|
|
104
|
+
N as sizeKey,
|
|
105
|
+
Q as sizeKeyCircle,
|
|
106
|
+
P as sizeKeyItem,
|
|
107
|
+
ee as sortButton,
|
|
108
|
+
s as subtitle,
|
|
109
|
+
Z as table,
|
|
110
|
+
_e as tableCaption,
|
|
111
|
+
X as tableCount,
|
|
112
|
+
re as tableMuted,
|
|
113
|
+
Y as tableScroll,
|
|
114
|
+
te as tableSelected,
|
|
115
|
+
r as tableToggle,
|
|
116
|
+
W as tableTools,
|
|
117
|
+
U as tableView,
|
|
118
|
+
J as tickEnd,
|
|
119
|
+
G as tickMiddle,
|
|
120
|
+
l as title,
|
|
121
|
+
K as valueOnHover,
|
|
122
|
+
le as visuallyHidden
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=ChartMap.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartMap.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),e=require("./ChartMap.module.css.cjs"),g=require("../core/ChartLegend.cjs"),T={center:e.default.legendCenter,left:e.default.legendLeft,right:e.default.legendRight};function x(d){const s=new Map;return d.forEach(n=>!s.has(n.label)&&s.set(n.label,n.key)),n=>n===null?null:s.get(n)??null}function M({align:d,entries:s,formatValue:n,gradient:c,indicator:h,markerSeries:u,markerSizes:o,markerValueLabel:j,noData:i,onHighlight:N,onToggle:y,onToggleMarkerSeries:v,position:b,style:C,valueLabel:f}){const m=x(s),L=x(u),p=b==="right",r=p?"right":"bottom";return!c&&s.length===0&&!i&&u.length===0?null:t.jsxs("div",{className:`${e.default.legend} ${p?e.default.legendSide:T[d]}`,style:C,children:[c&&t.jsxs("div",{className:e.default.legendBlock,children:[t.jsxs("span",{className:e.default.legendTitle,children:[f,c.log&&" · escala logarítmica"]}),t.jsx("div",{"aria-hidden":"true",className:e.default.gradientBar,style:{background:`linear-gradient(to right, ${c.stops.join(", ")})`},children:h!==void 0&&t.jsx("span",{className:e.default.gradientIndicator,style:{left:`${h*100}%`}})}),t.jsx("div",{className:e.default.gradientTicks,children:c.ticks.map(l=>t.jsx("span",{className:l.position===0?e.default.tickStart:l.position===1?e.default.tickEnd:e.default.tickMiddle,style:{left:`${l.position*100}%`},children:n(l.value)},l.position))})]}),(s.length>0||i)&&t.jsxs("div",{className:e.default.legendBlock,children:[s.length>0&&t.jsx("span",{className:e.default.legendTitle,children:f}),t.jsxs("div",{className:e.default.legendLists,children:[s.length>0&&t.jsx(g.ChartLegend,{align:d,entries:s.map(l=>({...l,value:String(l.count)})),onHighlight:l=>N(m(l)),onToggle:l=>{const a=m(l);a!==null&&y(a)},position:r}),i&&t.jsx(g.ChartLegend,{align:d,entries:[{color:i.color,label:i.label,value:String(i.count)}],position:r})]})]}),u.length>0&&t.jsxs("div",{className:e.default.legendBlock,children:[t.jsx("span",{className:e.default.legendTitle,children:j}),t.jsx(g.ChartLegend,{align:d,entries:u,onToggle:l=>{const a=L(l);a!==null&&v(a)},position:r,swatch:"dot"}),o&&t.jsx("div",{"aria-hidden":"true",className:e.default.sizeKey,children:[o.maximum/10,o.maximum/2,o.maximum].map(l=>Number(l.toPrecision(2))).map(l=>{const a=o.radiusOf(l)*2;return t.jsxs("span",{className:e.default.sizeKeyItem,children:[t.jsx("i",{className:e.default.sizeKeyCircle,style:{height:a,width:a}}),n(l)]},l)})})]})]})}exports.ChartMapLegend=M;
|
|
2
|
+
//# sourceMappingURL=ChartMapLegend.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartMapLegend.cjs","sources":["../../../../src/components/charts/ChartMap/ChartMapLegend.tsx"],"sourcesContent":["import type { CSSProperties } from 'react';\nimport { ChartLegend, type ChartLegendAlign } from '../core';\nimport type { MapGradient, MapScaleEntry } from './mapScales';\nimport styles from './ChartMap.module.css';\n\nconst ALIGNMENT: Record<ChartLegendAlign, string> = {\n center: styles.legendCenter,\n left: styles.legendLeft,\n right: styles.legendRight,\n};\n\nexport interface MapLegendEntry extends MapScaleEntry {\n count: number;\n hidden: boolean;\n}\n\nexport interface MapLegendSeries {\n color: string;\n hidden: boolean;\n key: string;\n label: string;\n}\n\ninterface ChartMapLegendProps {\n align: ChartLegendAlign;\n entries: readonly MapLegendEntry[];\n formatValue: (value: number) => string;\n gradient?: MapGradient;\n /** Posicao, na barra, do valor da regiao sob o ponteiro. */\n indicator?: number;\n markerSeries: readonly MapLegendSeries[];\n markerSizes?: { maximum: number; radiusOf: (value: number) => number };\n markerValueLabel: string;\n noData?: { color: string; count: number; label: string };\n onHighlight: (key: string | null) => void;\n onToggle: (key: string) => void;\n onToggleMarkerSeries: (key: string) => void;\n position: 'top' | 'bottom' | 'right';\n style?: CSSProperties;\n valueLabel: string;\n}\n\n/** A legenda liga e desliga pelo rotulo; aqui ele volta a ser a chave, que e o que o mapa e o produto reconhecem. */\nfunction byLabel(items: readonly { key: string; label: string }[]) {\n const keys = new Map<string, string>();\n items.forEach((item) => !keys.has(item.label) && keys.set(item.label, item.key));\n return (label: string | null) => (label === null ? null : (keys.get(label) ?? null));\n}\n\n/**\n * Legenda do mapa: a barra da escala continua, com o valor sob o ponteiro marcado nela, ou as faixas e categorias, que\n * destacam e desligam as regioes; a entrada de sem dado; e as series de marcadores com a chave de tamanho.\n */\nexport function ChartMapLegend({\n align,\n entries,\n formatValue,\n gradient,\n indicator,\n markerSeries,\n markerSizes,\n markerValueLabel,\n noData,\n onHighlight,\n onToggle,\n onToggleMarkerSeries,\n position,\n style,\n valueLabel,\n}: ChartMapLegendProps) {\n const entryKey = byLabel(entries);\n const seriesKey = byLabel(markerSeries);\n const lateral = position === 'right';\n const listPosition = lateral ? 'right' : 'bottom';\n\n if (!gradient && entries.length === 0 && !noData && markerSeries.length === 0) {\n return null;\n }\n\n return (\n <div className={`${styles.legend} ${lateral ? styles.legendSide : ALIGNMENT[align]}`} style={style}>\n {gradient && (\n <div className={styles.legendBlock}>\n <span className={styles.legendTitle}>\n {valueLabel}\n {gradient.log && ' · escala logarítmica'}\n </span>\n <div aria-hidden=\"true\" className={styles.gradientBar} style={{ background: `linear-gradient(to right, ${gradient.stops.join(', ')})` }}>\n {indicator !== undefined && <span className={styles.gradientIndicator} style={{ left: `${indicator * 100}%` }} />}\n </div>\n <div className={styles.gradientTicks}>\n {gradient.ticks.map((tick) => (\n <span\n className={tick.position === 0 ? styles.tickStart : tick.position === 1 ? styles.tickEnd : styles.tickMiddle}\n key={tick.position}\n style={{ left: `${tick.position * 100}%` }}\n >\n {formatValue(tick.value)}\n </span>\n ))}\n </div>\n </div>\n )}\n\n {(entries.length > 0 || noData) && (\n <div className={styles.legendBlock}>\n {entries.length > 0 && <span className={styles.legendTitle}>{valueLabel}</span>}\n <div className={styles.legendLists}>\n {entries.length > 0 && (\n <ChartLegend\n align={align}\n entries={entries.map((entry) => ({ ...entry, value: String(entry.count) }))}\n onHighlight={(label) => onHighlight(entryKey(label))}\n onToggle={(label) => {\n const key = entryKey(label);\n if (key !== null) {\n onToggle(key);\n }\n }}\n position={listPosition}\n />\n )}\n {noData && (\n <ChartLegend\n align={align}\n entries={[{ color: noData.color, label: noData.label, value: String(noData.count) }]}\n position={listPosition}\n />\n )}\n </div>\n </div>\n )}\n\n {markerSeries.length > 0 && (\n <div className={styles.legendBlock}>\n <span className={styles.legendTitle}>{markerValueLabel}</span>\n <ChartLegend\n align={align}\n entries={markerSeries}\n onToggle={(label) => {\n const key = seriesKey(label);\n if (key !== null) {\n onToggleMarkerSeries(key);\n }\n }}\n position={listPosition}\n swatch=\"dot\"\n />\n {markerSizes && (\n <div aria-hidden=\"true\" className={styles.sizeKey}>\n {[markerSizes.maximum / 10, markerSizes.maximum / 2, markerSizes.maximum]\n .map((value) => Number(value.toPrecision(2)))\n .map((value) => {\n const diameter = markerSizes.radiusOf(value) * 2;\n\n return (\n <span className={styles.sizeKeyItem} key={value}>\n <i className={styles.sizeKeyCircle} style={{ height: diameter, width: diameter }} />\n {formatValue(value)}\n </span>\n );\n })}\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"names":["ALIGNMENT","styles","byLabel","items","keys","item","label","ChartMapLegend","align","entries","formatValue","gradient","indicator","markerSeries","markerSizes","markerValueLabel","noData","onHighlight","onToggle","onToggleMarkerSeries","position","style","valueLabel","entryKey","seriesKey","lateral","listPosition","jsxs","jsx","tick","ChartLegend","entry","key","value","diameter"],"mappings":"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"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { jsxs as c, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import e from "./ChartMap.module.css.js";
|
|
3
|
+
import { ChartLegend as m } from "../core/ChartLegend.js";
|
|
4
|
+
const B = {
|
|
5
|
+
center: e.legendCenter,
|
|
6
|
+
left: e.legendLeft,
|
|
7
|
+
right: e.legendRight
|
|
8
|
+
};
|
|
9
|
+
function f(o) {
|
|
10
|
+
const s = /* @__PURE__ */ new Map();
|
|
11
|
+
return o.forEach((i) => !s.has(i.label) && s.set(i.label, i.key)), (i) => i === null ? null : s.get(i) ?? null;
|
|
12
|
+
}
|
|
13
|
+
function w({
|
|
14
|
+
align: o,
|
|
15
|
+
entries: s,
|
|
16
|
+
formatValue: i,
|
|
17
|
+
gradient: a,
|
|
18
|
+
indicator: p,
|
|
19
|
+
markerSeries: h,
|
|
20
|
+
markerSizes: r,
|
|
21
|
+
markerValueLabel: v,
|
|
22
|
+
noData: d,
|
|
23
|
+
onHighlight: b,
|
|
24
|
+
onToggle: T,
|
|
25
|
+
onToggleMarkerSeries: x,
|
|
26
|
+
position: K,
|
|
27
|
+
style: L,
|
|
28
|
+
valueLabel: u
|
|
29
|
+
}) {
|
|
30
|
+
const N = f(s), $ = f(h), y = K === "right", g = y ? "right" : "bottom";
|
|
31
|
+
return !a && s.length === 0 && !d && h.length === 0 ? null : /* @__PURE__ */ c("div", { className: `${e.legend} ${y ? e.legendSide : B[o]}`, style: L, children: [
|
|
32
|
+
a && /* @__PURE__ */ c("div", { className: e.legendBlock, children: [
|
|
33
|
+
/* @__PURE__ */ c("span", { className: e.legendTitle, children: [
|
|
34
|
+
u,
|
|
35
|
+
a.log && " · escala logarítmica"
|
|
36
|
+
] }),
|
|
37
|
+
/* @__PURE__ */ n("div", { "aria-hidden": "true", className: e.gradientBar, style: { background: `linear-gradient(to right, ${a.stops.join(", ")})` }, children: p !== void 0 && /* @__PURE__ */ n("span", { className: e.gradientIndicator, style: { left: `${p * 100}%` } }) }),
|
|
38
|
+
/* @__PURE__ */ n("div", { className: e.gradientTicks, children: a.ticks.map((l) => /* @__PURE__ */ n(
|
|
39
|
+
"span",
|
|
40
|
+
{
|
|
41
|
+
className: l.position === 0 ? e.tickStart : l.position === 1 ? e.tickEnd : e.tickMiddle,
|
|
42
|
+
style: { left: `${l.position * 100}%` },
|
|
43
|
+
children: i(l.value)
|
|
44
|
+
},
|
|
45
|
+
l.position
|
|
46
|
+
)) })
|
|
47
|
+
] }),
|
|
48
|
+
(s.length > 0 || d) && /* @__PURE__ */ c("div", { className: e.legendBlock, children: [
|
|
49
|
+
s.length > 0 && /* @__PURE__ */ n("span", { className: e.legendTitle, children: u }),
|
|
50
|
+
/* @__PURE__ */ c("div", { className: e.legendLists, children: [
|
|
51
|
+
s.length > 0 && /* @__PURE__ */ n(
|
|
52
|
+
m,
|
|
53
|
+
{
|
|
54
|
+
align: o,
|
|
55
|
+
entries: s.map((l) => ({ ...l, value: String(l.count) })),
|
|
56
|
+
onHighlight: (l) => b(N(l)),
|
|
57
|
+
onToggle: (l) => {
|
|
58
|
+
const t = N(l);
|
|
59
|
+
t !== null && T(t);
|
|
60
|
+
},
|
|
61
|
+
position: g
|
|
62
|
+
}
|
|
63
|
+
),
|
|
64
|
+
d && /* @__PURE__ */ n(
|
|
65
|
+
m,
|
|
66
|
+
{
|
|
67
|
+
align: o,
|
|
68
|
+
entries: [{ color: d.color, label: d.label, value: String(d.count) }],
|
|
69
|
+
position: g
|
|
70
|
+
}
|
|
71
|
+
)
|
|
72
|
+
] })
|
|
73
|
+
] }),
|
|
74
|
+
h.length > 0 && /* @__PURE__ */ c("div", { className: e.legendBlock, children: [
|
|
75
|
+
/* @__PURE__ */ n("span", { className: e.legendTitle, children: v }),
|
|
76
|
+
/* @__PURE__ */ n(
|
|
77
|
+
m,
|
|
78
|
+
{
|
|
79
|
+
align: o,
|
|
80
|
+
entries: h,
|
|
81
|
+
onToggle: (l) => {
|
|
82
|
+
const t = $(l);
|
|
83
|
+
t !== null && x(t);
|
|
84
|
+
},
|
|
85
|
+
position: g,
|
|
86
|
+
swatch: "dot"
|
|
87
|
+
}
|
|
88
|
+
),
|
|
89
|
+
r && /* @__PURE__ */ n("div", { "aria-hidden": "true", className: e.sizeKey, children: [r.maximum / 10, r.maximum / 2, r.maximum].map((l) => Number(l.toPrecision(2))).map((l) => {
|
|
90
|
+
const t = r.radiusOf(l) * 2;
|
|
91
|
+
return /* @__PURE__ */ c("span", { className: e.sizeKeyItem, children: [
|
|
92
|
+
/* @__PURE__ */ n("i", { className: e.sizeKeyCircle, style: { height: t, width: t } }),
|
|
93
|
+
i(l)
|
|
94
|
+
] }, l);
|
|
95
|
+
}) })
|
|
96
|
+
] })
|
|
97
|
+
] });
|
|
98
|
+
}
|
|
99
|
+
export {
|
|
100
|
+
w as ChartMapLegend
|
|
101
|
+
};
|
|
102
|
+
//# sourceMappingURL=ChartMapLegend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartMapLegend.js","sources":["../../../../src/components/charts/ChartMap/ChartMapLegend.tsx"],"sourcesContent":["import type { CSSProperties } from 'react';\nimport { ChartLegend, type ChartLegendAlign } from '../core';\nimport type { MapGradient, MapScaleEntry } from './mapScales';\nimport styles from './ChartMap.module.css';\n\nconst ALIGNMENT: Record<ChartLegendAlign, string> = {\n center: styles.legendCenter,\n left: styles.legendLeft,\n right: styles.legendRight,\n};\n\nexport interface MapLegendEntry extends MapScaleEntry {\n count: number;\n hidden: boolean;\n}\n\nexport interface MapLegendSeries {\n color: string;\n hidden: boolean;\n key: string;\n label: string;\n}\n\ninterface ChartMapLegendProps {\n align: ChartLegendAlign;\n entries: readonly MapLegendEntry[];\n formatValue: (value: number) => string;\n gradient?: MapGradient;\n /** Posicao, na barra, do valor da regiao sob o ponteiro. */\n indicator?: number;\n markerSeries: readonly MapLegendSeries[];\n markerSizes?: { maximum: number; radiusOf: (value: number) => number };\n markerValueLabel: string;\n noData?: { color: string; count: number; label: string };\n onHighlight: (key: string | null) => void;\n onToggle: (key: string) => void;\n onToggleMarkerSeries: (key: string) => void;\n position: 'top' | 'bottom' | 'right';\n style?: CSSProperties;\n valueLabel: string;\n}\n\n/** A legenda liga e desliga pelo rotulo; aqui ele volta a ser a chave, que e o que o mapa e o produto reconhecem. */\nfunction byLabel(items: readonly { key: string; label: string }[]) {\n const keys = new Map<string, string>();\n items.forEach((item) => !keys.has(item.label) && keys.set(item.label, item.key));\n return (label: string | null) => (label === null ? null : (keys.get(label) ?? null));\n}\n\n/**\n * Legenda do mapa: a barra da escala continua, com o valor sob o ponteiro marcado nela, ou as faixas e categorias, que\n * destacam e desligam as regioes; a entrada de sem dado; e as series de marcadores com a chave de tamanho.\n */\nexport function ChartMapLegend({\n align,\n entries,\n formatValue,\n gradient,\n indicator,\n markerSeries,\n markerSizes,\n markerValueLabel,\n noData,\n onHighlight,\n onToggle,\n onToggleMarkerSeries,\n position,\n style,\n valueLabel,\n}: ChartMapLegendProps) {\n const entryKey = byLabel(entries);\n const seriesKey = byLabel(markerSeries);\n const lateral = position === 'right';\n const listPosition = lateral ? 'right' : 'bottom';\n\n if (!gradient && entries.length === 0 && !noData && markerSeries.length === 0) {\n return null;\n }\n\n return (\n <div className={`${styles.legend} ${lateral ? styles.legendSide : ALIGNMENT[align]}`} style={style}>\n {gradient && (\n <div className={styles.legendBlock}>\n <span className={styles.legendTitle}>\n {valueLabel}\n {gradient.log && ' · escala logarítmica'}\n </span>\n <div aria-hidden=\"true\" className={styles.gradientBar} style={{ background: `linear-gradient(to right, ${gradient.stops.join(', ')})` }}>\n {indicator !== undefined && <span className={styles.gradientIndicator} style={{ left: `${indicator * 100}%` }} />}\n </div>\n <div className={styles.gradientTicks}>\n {gradient.ticks.map((tick) => (\n <span\n className={tick.position === 0 ? styles.tickStart : tick.position === 1 ? styles.tickEnd : styles.tickMiddle}\n key={tick.position}\n style={{ left: `${tick.position * 100}%` }}\n >\n {formatValue(tick.value)}\n </span>\n ))}\n </div>\n </div>\n )}\n\n {(entries.length > 0 || noData) && (\n <div className={styles.legendBlock}>\n {entries.length > 0 && <span className={styles.legendTitle}>{valueLabel}</span>}\n <div className={styles.legendLists}>\n {entries.length > 0 && (\n <ChartLegend\n align={align}\n entries={entries.map((entry) => ({ ...entry, value: String(entry.count) }))}\n onHighlight={(label) => onHighlight(entryKey(label))}\n onToggle={(label) => {\n const key = entryKey(label);\n if (key !== null) {\n onToggle(key);\n }\n }}\n position={listPosition}\n />\n )}\n {noData && (\n <ChartLegend\n align={align}\n entries={[{ color: noData.color, label: noData.label, value: String(noData.count) }]}\n position={listPosition}\n />\n )}\n </div>\n </div>\n )}\n\n {markerSeries.length > 0 && (\n <div className={styles.legendBlock}>\n <span className={styles.legendTitle}>{markerValueLabel}</span>\n <ChartLegend\n align={align}\n entries={markerSeries}\n onToggle={(label) => {\n const key = seriesKey(label);\n if (key !== null) {\n onToggleMarkerSeries(key);\n }\n }}\n position={listPosition}\n swatch=\"dot\"\n />\n {markerSizes && (\n <div aria-hidden=\"true\" className={styles.sizeKey}>\n {[markerSizes.maximum / 10, markerSizes.maximum / 2, markerSizes.maximum]\n .map((value) => Number(value.toPrecision(2)))\n .map((value) => {\n const diameter = markerSizes.radiusOf(value) * 2;\n\n return (\n <span className={styles.sizeKeyItem} key={value}>\n <i className={styles.sizeKeyCircle} style={{ height: diameter, width: diameter }} />\n {formatValue(value)}\n </span>\n );\n })}\n </div>\n )}\n </div>\n )}\n </div>\n );\n}\n"],"names":["ALIGNMENT","styles","byLabel","items","keys","item","label","ChartMapLegend","align","entries","formatValue","gradient","indicator","markerSeries","markerSizes","markerValueLabel","noData","onHighlight","onToggle","onToggleMarkerSeries","position","style","valueLabel","entryKey","seriesKey","lateral","listPosition","jsxs","jsx","tick","ChartLegend","entry","key","value","diameter"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),h=require("react"),a=require("./ChartMap.module.css.cjs"),D=require("../../forms/InputText/InputText.cjs"),E=require("../../icons/icons.cjs"),G=require("../../actions/Button/Button.cjs"),o=50;function M(u){return u.normalize("NFD").replace(new RegExp("\\p{M}","gu"),"").toLocaleLowerCase("pt-BR")}function H({formatPercent:u,markerRows:C,markerValueLabel:T,maxHeight:B,noDataLabel:q,regionRows:$,showClasses:x,showRank:m,showShare:j,showValue:p,title:b,valueLabel:z}){const r=m,[f,I]=h.useState(""),[s,L]=h.useState(r?{direction:"descending",key:"value"}:{direction:"ascending",key:"name"}),[c,y]=h.useState(o),v=M(f.trim()),g=e=>!v||M(e).includes(v),k=e=>s.key==="name"?e.name:s.key==="value"&&!r?e.valueText:e.value??void 0,P=s.direction==="ascending"?1:-1,n=$.filter(e=>g(e.name)).sort((e,d)=>{const[l,i]=[k(e),k(d)];if(l===void 0||i===void 0)return l===i?0:l===void 0?1:-1;const S=typeof l=="number"&&typeof i=="number"?l-i:String(l).localeCompare(String(i),"pt-BR");return(s.key==="rank"?-S:S)*P}),N=C.filter(e=>g(e.name)),F=[{key:"name",label:"Nome",numeric:!1},...p?[{key:"value",label:z,numeric:r}]:[],...x?[{key:"class",label:"Faixa",numeric:!1}]:[],...j?[{key:"share",label:"% do total",numeric:!0}]:[],...m?[{key:"rank",label:"Posição",numeric:!0}]:[]];function A(e){L(d=>({direction:d.key===e&&d.direction==="descending"?"ascending":"descending",key:e}))}return t.jsxs("div",{className:a.default.tableView,children:[t.jsxs("div",{className:a.default.tableTools,children:[t.jsx(D.InputText,{"aria-label":"Buscar pelo nome",icon:t.jsx(E.IconSearch,{}),onChange:e=>{I(e.target.value),y(o)},placeholder:"Buscar pelo nome",size:"sm",type:"search",value:f}),t.jsx("span",{"aria-live":"polite",className:a.default.tableCount,children:`${Math.min(c,n.length)} de ${n.length} ${n.length===1?"região":"regiões"}`})]}),t.jsxs("div",{"aria-label":`Tabela: ${b}`,className:a.default.tableScroll,role:"region",style:{maxHeight:B},tabIndex:0,children:[t.jsxs("table",{className:a.default.table,children:[t.jsx("caption",{className:a.default.visuallyHidden,children:b}),t.jsx("thead",{children:t.jsx("tr",{children:F.map(e=>t.jsx("th",{"aria-sort":s.key===e.key?s.direction:void 0,className:e.numeric?a.default.numeric:void 0,scope:"col",children:t.jsxs("button",{className:a.default.sortButton,onClick:()=>A(e.key),type:"button",children:[e.label,s.key===e.key&&t.jsx("span",{"aria-hidden":"true",children:s.direction==="ascending"?" ↑":" ↓"})]})},e.key))})}),t.jsx("tbody",{children:n.slice(0,c).map(e=>t.jsxs("tr",{className:e.selected?a.default.tableSelected:void 0,children:[t.jsx("th",{scope:"row",children:e.name}),p&&t.jsx("td",{className:r?a.default.numeric:void 0,children:e.valueText??t.jsx("span",{className:a.default.tableMuted,children:q})}),x&&t.jsx("td",{children:e.classLabel??""}),j&&t.jsx("td",{className:a.default.numeric,children:e.share===void 0?"":u(e.share)}),m&&t.jsx("td",{className:a.default.numeric,children:e.rank===void 0?"":`${e.rank}º`})]},e.id))})]}),N.length>0&&t.jsxs("table",{className:a.default.table,children:[t.jsx("caption",{className:a.default.tableCaption,children:"Marcadores"}),t.jsx("thead",{children:t.jsxs("tr",{children:[t.jsx("th",{scope:"col",children:"Nome"}),t.jsx("th",{scope:"col",children:"Série"}),t.jsx("th",{className:a.default.numeric,scope:"col",children:T})]})}),t.jsx("tbody",{children:N.map(e=>t.jsxs("tr",{children:[t.jsx("th",{scope:"row",children:e.name}),t.jsx("td",{children:e.series}),t.jsx("td",{className:a.default.numeric,children:e.value})]},e.key))})]})]}),n.length>c&&t.jsx(G.Button,{onClick:()=>y(e=>e+o),size:"sm",variant:"secondary",children:`Mostrar mais ${Math.min(o,n.length-c)}`})]})}exports.ChartMapTable=H;
|
|
2
|
+
//# sourceMappingURL=ChartMapTable.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChartMapTable.cjs","sources":["../../../../src/components/charts/ChartMap/ChartMapTable.tsx"],"sourcesContent":["import { useState } from 'react';\nimport { Button } from '../../actions/Button';\nimport { InputText } from '../../forms/InputText';\nimport { IconSearch } from '../../icons';\nimport styles from './ChartMap.module.css';\n\nexport interface MapTableRegionRow {\n classLabel?: string;\n id: string;\n name: string;\n rank?: number;\n selected: boolean;\n /** Parte do total, de 0 a 1. */\n share?: number;\n value: number | null;\n /** Valor formatado, ou a categoria; sem ele, a celula diz que nao ha dado. */\n valueText?: string;\n}\n\nexport interface MapTableMarkerRow {\n key: string;\n name: string;\n series: string;\n value: string;\n}\n\ntype SortKey = 'name' | 'value' | 'class' | 'share' | 'rank';\n\ninterface ChartMapTableProps {\n formatPercent: (ratio: number) => string;\n markerRows: readonly MapTableMarkerRow[];\n markerValueLabel: string;\n maxHeight?: number;\n noDataLabel: string;\n regionRows: readonly MapTableRegionRow[];\n showClasses: boolean;\n showRank: boolean;\n showShare: boolean;\n showValue: boolean;\n title: string;\n valueLabel: string;\n}\n\n/** Quantas linhas aparecem de cada vez: com 645 municipios, a tabela inteira de uma vez pesaria a pagina. */\nconst PAGE = 50;\n\n/** Ignora caixa e acento, para \"sao paulo\" achar \"São Paulo\". */\nfunction normalized(text: string) {\n return text.normalize('NFD').replace(/\\p{M}/gu, '').toLocaleLowerCase('pt-BR');\n}\n\n/**\n * Leitura completa do mapa: uma linha por regiao, com busca pelo nome e cabecalhos que ordenam. E o caminho ate as\n * regioes de poucos pixels, que o ponteiro e o dedo nao alcancam.\n */\nexport function ChartMapTable({\n formatPercent,\n markerRows,\n markerValueLabel,\n maxHeight,\n noDataLabel,\n regionRows,\n showClasses,\n showRank,\n showShare,\n showValue,\n title,\n valueLabel,\n}: ChartMapTableProps) {\n const numeric = showRank;\n const [query, setQuery] = useState('');\n const [sort, setSort] = useState<{ direction: 'ascending' | 'descending'; key: SortKey }>(\n numeric ? { direction: 'descending', key: 'value' } : { direction: 'ascending', key: 'name' },\n );\n const [limit, setLimit] = useState(PAGE);\n const term = normalized(query.trim());\n const matches = (name: string) => !term || normalized(name).includes(term);\n\n const sortValue = (row: MapTableRegionRow): number | string | undefined => {\n if (sort.key === 'name') {\n return row.name;\n }\n\n if (sort.key === 'value' && !numeric) {\n return row.valueText;\n }\n\n // Faixa, parte do total e posicao seguem o valor: ordenar por elas e ordenar por ele.\n return row.value ?? undefined;\n };\n const sign = sort.direction === 'ascending' ? 1 : -1;\n const rows = regionRows\n .filter((row) => matches(row.name))\n .sort((a, b) => {\n const [first, second] = [sortValue(a), sortValue(b)];\n\n if (first === undefined || second === undefined) {\n // Sem dado vai ao fim, nos dois sentidos.\n return first === second ? 0 : first === undefined ? 1 : -1;\n }\n\n const order =\n typeof first === 'number' && typeof second === 'number'\n ? first - second\n : String(first).localeCompare(String(second), 'pt-BR');\n\n return (sort.key === 'rank' ? -order : order) * sign;\n });\n const markers = markerRows.filter((row) => matches(row.name));\n\n const columns: { key: SortKey; label: string; numeric: boolean }[] = [\n { key: 'name', label: 'Nome', numeric: false },\n ...(showValue ? [{ key: 'value' as const, label: valueLabel, numeric }] : []),\n ...(showClasses ? [{ key: 'class' as const, label: 'Faixa', numeric: false }] : []),\n ...(showShare ? [{ key: 'share' as const, label: '% do total', numeric: true }] : []),\n ...(showRank ? [{ key: 'rank' as const, label: 'Posição', numeric: true }] : []),\n ];\n\n function sortBy(key: SortKey) {\n setSort((current) => ({\n direction: current.key === key && current.direction === 'descending' ? 'ascending' : 'descending',\n key,\n }));\n }\n\n return (\n <div className={styles.tableView}>\n <div className={styles.tableTools}>\n <InputText\n aria-label=\"Buscar pelo nome\"\n icon={<IconSearch />}\n onChange={(event) => {\n setQuery(event.target.value);\n setLimit(PAGE);\n }}\n placeholder=\"Buscar pelo nome\"\n size=\"sm\"\n type=\"search\"\n value={query}\n />\n <span aria-live=\"polite\" className={styles.tableCount}>\n {`${Math.min(limit, rows.length)} de ${rows.length} ${rows.length === 1 ? 'região' : 'regiões'}`}\n </span>\n </div>\n\n <div\n aria-label={`Tabela: ${title}`}\n className={styles.tableScroll}\n role=\"region\"\n style={{ maxHeight }}\n tabIndex={0}\n >\n <table className={styles.table}>\n <caption className={styles.visuallyHidden}>{title}</caption>\n <thead>\n <tr>\n {columns.map((column) => (\n <th\n aria-sort={sort.key === column.key ? sort.direction : undefined}\n className={column.numeric ? styles.numeric : undefined}\n key={column.key}\n scope=\"col\"\n >\n <button className={styles.sortButton} onClick={() => sortBy(column.key)} type=\"button\">\n {column.label}\n {sort.key === column.key && <span aria-hidden=\"true\">{sort.direction === 'ascending' ? ' ↑' : ' ↓'}</span>}\n </button>\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.slice(0, limit).map((row) => (\n <tr className={row.selected ? styles.tableSelected : undefined} key={row.id}>\n <th scope=\"row\">{row.name}</th>\n {showValue && (\n <td className={numeric ? styles.numeric : undefined}>\n {row.valueText ?? <span className={styles.tableMuted}>{noDataLabel}</span>}\n </td>\n )}\n {showClasses && <td>{row.classLabel ?? ''}</td>}\n {showShare && <td className={styles.numeric}>{row.share === undefined ? '' : formatPercent(row.share)}</td>}\n {showRank && <td className={styles.numeric}>{row.rank === undefined ? '' : `${row.rank}º`}</td>}\n </tr>\n ))}\n </tbody>\n </table>\n\n {markers.length > 0 && (\n <table className={styles.table}>\n <caption className={styles.tableCaption}>Marcadores</caption>\n <thead>\n <tr>\n <th scope=\"col\">Nome</th>\n <th scope=\"col\">Série</th>\n <th className={styles.numeric} scope=\"col\">\n {markerValueLabel}\n </th>\n </tr>\n </thead>\n <tbody>\n {markers.map((row) => (\n <tr key={row.key}>\n <th scope=\"row\">{row.name}</th>\n <td>{row.series}</td>\n <td className={styles.numeric}>{row.value}</td>\n </tr>\n ))}\n </tbody>\n </table>\n )}\n </div>\n\n {rows.length > limit && (\n <Button onClick={() => setLimit((current) => current + PAGE)} size=\"sm\" variant=\"secondary\">\n {`Mostrar mais ${Math.min(PAGE, rows.length - limit)}`}\n </Button>\n )}\n </div>\n );\n}\n"],"names":["PAGE","normalized","text","ChartMapTable","formatPercent","markerRows","markerValueLabel","maxHeight","noDataLabel","regionRows","showClasses","showRank","showShare","showValue","title","valueLabel","numeric","query","setQuery","useState","sort","setSort","limit","setLimit","term","matches","name","sortValue","row","sign","rows","a","b","first","second","order","markers","columns","sortBy","key","current","jsxs","styles","jsx","InputText","IconSearch","event","column","Button"],"mappings":"gTA4CMA,EAAO,GAGb,SAASC,EAAWC,EAAc,CAChC,OAAOA,EAAK,UAAU,KAAK,EAAE,QAAQ,WAAA,SAAA,IAAA,EAAW,EAAE,EAAE,kBAAkB,OAAO,CAC/E,CAMO,SAASC,EAAc,CAC5B,cAAAC,EACA,WAAAC,EACA,iBAAAC,EACA,UAAAC,EACA,YAAAC,EACA,WAAAC,EACA,YAAAC,EACA,SAAAC,EACA,UAAAC,EACA,UAAAC,EACA,MAAAC,EACA,WAAAC,CACF,EAAuB,CACrB,MAAMC,EAAUL,EACV,CAACM,EAAOC,CAAQ,EAAIC,EAAAA,SAAS,EAAE,EAC/B,CAACC,EAAMC,CAAO,EAAIF,EAAAA,SACtBH,EAAU,CAAE,UAAW,aAAc,IAAK,OAAA,EAAY,CAAE,UAAW,YAAa,IAAK,MAAA,CAAO,EAExF,CAACM,EAAOC,CAAQ,EAAIJ,EAAAA,SAASnB,CAAI,EACjCwB,EAAOvB,EAAWgB,EAAM,KAAA,CAAM,EAC9BQ,EAAWC,GAAiB,CAACF,GAAQvB,EAAWyB,CAAI,EAAE,SAASF,CAAI,EAEnEG,EAAaC,GACbR,EAAK,MAAQ,OACRQ,EAAI,KAGTR,EAAK,MAAQ,SAAW,CAACJ,EACpBY,EAAI,UAINA,EAAI,OAAS,OAEhBC,EAAOT,EAAK,YAAc,YAAc,EAAI,GAC5CU,EAAOrB,EACV,OAAQmB,GAAQH,EAAQG,EAAI,IAAI,CAAC,EACjC,KAAK,CAACG,EAAGC,IAAM,CACd,KAAM,CAACC,EAAOC,CAAM,EAAI,CAACP,EAAUI,CAAC,EAAGJ,EAAUK,CAAC,CAAC,EAEnD,GAAIC,IAAU,QAAaC,IAAW,OAEpC,OAAOD,IAAUC,EAAS,EAAID,IAAU,OAAY,EAAI,GAG1D,MAAME,EACJ,OAAOF,GAAU,UAAY,OAAOC,GAAW,SAC3CD,EAAQC,EACR,OAAOD,CAAK,EAAE,cAAc,OAAOC,CAAM,EAAG,OAAO,EAEzD,OAAQd,EAAK,MAAQ,OAAS,CAACe,EAAQA,GAASN,CAClD,CAAC,EACGO,EAAU/B,EAAW,OAAQuB,GAAQH,EAAQG,EAAI,IAAI,CAAC,EAEtDS,EAA+D,CACnE,CAAE,IAAK,OAAQ,MAAO,OAAQ,QAAS,EAAA,EACvC,GAAIxB,EAAY,CAAC,CAAE,IAAK,QAAkB,MAAOE,EAAY,QAAAC,CAAA,CAAS,EAAI,CAAA,EAC1E,GAAIN,EAAc,CAAC,CAAE,IAAK,QAAkB,MAAO,QAAS,QAAS,EAAA,CAAO,EAAI,CAAA,EAChF,GAAIE,EAAY,CAAC,CAAE,IAAK,QAAkB,MAAO,aAAc,QAAS,EAAA,CAAM,EAAI,CAAA,EAClF,GAAID,EAAW,CAAC,CAAE,IAAK,OAAiB,MAAO,UAAW,QAAS,EAAA,CAAM,EAAI,CAAA,CAAC,EAGhF,SAAS2B,EAAOC,EAAc,CAC5BlB,EAASmB,IAAa,CACpB,UAAWA,EAAQ,MAAQD,GAAOC,EAAQ,YAAc,aAAe,YAAc,aACrF,IAAAD,CAAA,EACA,CACJ,CAEA,OACEE,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,UACrB,SAAA,CAAAD,EAAAA,KAAC,MAAA,CAAI,UAAWC,EAAAA,QAAO,WACrB,SAAA,CAAAC,EAAAA,IAACC,EAAAA,UAAA,CACC,aAAW,mBACX,WAAOC,EAAAA,WAAA,EAAW,EAClB,SAAWC,GAAU,CACnB5B,EAAS4B,EAAM,OAAO,KAAK,EAC3BvB,EAASvB,CAAI,CACf,EACA,YAAY,mBACZ,KAAK,KACL,KAAK,SACL,MAAOiB,CAAA,CAAA,EAET0B,EAAAA,IAAC,QAAK,YAAU,SAAS,UAAWD,UAAO,WACxC,SAAA,GAAG,KAAK,IAAIpB,EAAOQ,EAAK,MAAM,CAAC,OAAOA,EAAK,MAAM,IAAIA,EAAK,SAAW,EAAI,SAAW,SAAS,EAAA,CAChG,CAAA,EACF,EAEAW,EAAAA,KAAC,MAAA,CACC,aAAY,WAAW3B,CAAK,GAC5B,UAAW4B,EAAAA,QAAO,YAClB,KAAK,SACL,MAAO,CAAE,UAAAnC,CAAA,EACT,SAAU,EAEV,SAAA,CAAAkC,EAAAA,KAAC,QAAA,CAAM,UAAWC,EAAAA,QAAO,MACvB,SAAA,CAAAC,EAAAA,IAAC,UAAA,CAAQ,UAAWD,EAAAA,QAAO,eAAiB,SAAA5B,EAAM,QACjD,QAAA,CACC,SAAA6B,MAAC,MACE,SAAAN,EAAQ,IAAKU,GACZJ,EAAAA,IAAC,KAAA,CACC,YAAWvB,EAAK,MAAQ2B,EAAO,IAAM3B,EAAK,UAAY,OACtD,UAAW2B,EAAO,QAAUL,EAAAA,QAAO,QAAU,OAE7C,MAAM,MAEN,SAAAD,EAAAA,KAAC,SAAA,CAAO,UAAWC,EAAAA,QAAO,WAAY,QAAS,IAAMJ,EAAOS,EAAO,GAAG,EAAG,KAAK,SAC3E,SAAA,CAAAA,EAAO,MACP3B,EAAK,MAAQ2B,EAAO,KAAOJ,EAAAA,IAAC,OAAA,CAAK,cAAY,OAAQ,SAAAvB,EAAK,YAAc,YAAc,KAAO,IAAA,CAAK,CAAA,CAAA,CACrG,CAAA,EANK2B,EAAO,GAAA,CAQf,EACH,CAAA,CACF,QACC,QAAA,CACE,SAAAjB,EAAK,MAAM,EAAGR,CAAK,EAAE,IAAKM,UACxB,KAAA,CAAG,UAAWA,EAAI,SAAWc,UAAO,cAAgB,OACnD,SAAA,CAAAC,EAAAA,IAAC,KAAA,CAAG,MAAM,MAAO,SAAAf,EAAI,KAAK,EACzBf,GACC8B,EAAAA,IAAC,KAAA,CAAG,UAAW3B,EAAU0B,UAAO,QAAU,OACvC,SAAAd,EAAI,iBAAc,OAAA,CAAK,UAAWc,EAAAA,QAAO,WAAa,WAAY,EACrE,EAEDhC,GAAeiC,EAAAA,IAAC,KAAA,CAAI,SAAAf,EAAI,YAAc,GAAG,EACzChB,GAAa+B,EAAAA,IAAC,KAAA,CAAG,UAAWD,EAAAA,QAAO,QAAU,SAAAd,EAAI,QAAU,OAAY,GAAKxB,EAAcwB,EAAI,KAAK,EAAE,EACrGjB,GAAYgC,EAAAA,IAAC,KAAA,CAAG,UAAWD,EAAAA,QAAO,QAAU,SAAAd,EAAI,OAAS,OAAY,GAAK,GAAGA,EAAI,IAAI,GAAA,CAAI,CAAA,GATvBA,EAAI,EAUzE,CACD,CAAA,CACH,CAAA,EACF,EAECQ,EAAQ,OAAS,UACf,QAAA,CAAM,UAAWM,EAAAA,QAAO,MACvB,SAAA,CAAAC,EAAAA,IAAC,UAAA,CAAQ,UAAWD,EAAAA,QAAO,aAAc,SAAA,aAAU,EACnDC,EAAAA,IAAC,QAAA,CACC,SAAAF,EAAAA,KAAC,KAAA,CACC,SAAA,CAAAE,EAAAA,IAAC,KAAA,CAAG,MAAM,MAAM,SAAA,OAAI,EACpBA,EAAAA,IAAC,KAAA,CAAG,MAAM,MAAM,SAAA,QAAK,QACpB,KAAA,CAAG,UAAWD,EAAAA,QAAO,QAAS,MAAM,MAClC,SAAApC,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CACF,QACC,QAAA,CACE,SAAA8B,EAAQ,IAAKR,UACX,KAAA,CACC,SAAA,CAAAe,EAAAA,IAAC,KAAA,CAAG,MAAM,MAAO,SAAAf,EAAI,KAAK,EAC1Be,EAAAA,IAAC,KAAA,CAAI,SAAAf,EAAI,MAAA,CAAO,QACf,KAAA,CAAG,UAAWc,EAAAA,QAAO,QAAU,WAAI,KAAA,CAAM,CAAA,GAHnCd,EAAI,GAIb,CACD,CAAA,CACH,CAAA,CAAA,CACF,CAAA,CAAA,CAAA,EAIHE,EAAK,OAASR,GACbqB,EAAAA,IAACK,EAAAA,OAAA,CAAO,QAAS,IAAMzB,EAAUiB,GAAYA,EAAUxC,CAAI,EAAG,KAAK,KAAK,QAAQ,YAC7E,SAAA,gBAAgB,KAAK,IAAIA,EAAM8B,EAAK,OAASR,CAAK,CAAC,EAAA,CACtD,CAAA,EAEJ,CAEJ"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { jsxs as t, jsx as n } from "react/jsx-runtime";
|
|
2
|
+
import { useState as p } from "react";
|
|
3
|
+
import a from "./ChartMap.module.css.js";
|
|
4
|
+
import { InputText as E } from "../../forms/InputText/InputText.js";
|
|
5
|
+
import { IconSearch as G } from "../../icons/icons.js";
|
|
6
|
+
import { Button as H } from "../../actions/Button/Button.js";
|
|
7
|
+
const m = 50;
|
|
8
|
+
function S(h) {
|
|
9
|
+
return h.normalize("NFD").replace(new RegExp("\\p{M}", "gu"), "").toLocaleLowerCase("pt-BR");
|
|
10
|
+
}
|
|
11
|
+
function U({
|
|
12
|
+
formatPercent: h,
|
|
13
|
+
markerRows: T,
|
|
14
|
+
markerValueLabel: $,
|
|
15
|
+
maxHeight: z,
|
|
16
|
+
noDataLabel: L,
|
|
17
|
+
regionRows: I,
|
|
18
|
+
showClasses: y,
|
|
19
|
+
showRank: u,
|
|
20
|
+
showShare: b,
|
|
21
|
+
showValue: v,
|
|
22
|
+
title: g,
|
|
23
|
+
valueLabel: j
|
|
24
|
+
}) {
|
|
25
|
+
const s = u, [k, F] = p(""), [i, P] = p(
|
|
26
|
+
s ? { direction: "descending", key: "value" } : { direction: "ascending", key: "name" }
|
|
27
|
+
), [o, N] = p(m), f = S(k.trim()), x = (e) => !f || S(e).includes(f), B = (e) => i.key === "name" ? e.name : i.key === "value" && !s ? e.valueText : e.value ?? void 0, q = i.direction === "ascending" ? 1 : -1, r = I.filter((e) => x(e.name)).sort((e, d) => {
|
|
28
|
+
const [l, c] = [B(e), B(d)];
|
|
29
|
+
if (l === void 0 || c === void 0)
|
|
30
|
+
return l === c ? 0 : l === void 0 ? 1 : -1;
|
|
31
|
+
const M = typeof l == "number" && typeof c == "number" ? l - c : String(l).localeCompare(String(c), "pt-BR");
|
|
32
|
+
return (i.key === "rank" ? -M : M) * q;
|
|
33
|
+
}), C = T.filter((e) => x(e.name)), A = [
|
|
34
|
+
{ key: "name", label: "Nome", numeric: !1 },
|
|
35
|
+
...v ? [{ key: "value", label: j, numeric: s }] : [],
|
|
36
|
+
...y ? [{ key: "class", label: "Faixa", numeric: !1 }] : [],
|
|
37
|
+
...b ? [{ key: "share", label: "% do total", numeric: !0 }] : [],
|
|
38
|
+
...u ? [{ key: "rank", label: "Posição", numeric: !0 }] : []
|
|
39
|
+
];
|
|
40
|
+
function D(e) {
|
|
41
|
+
P((d) => ({
|
|
42
|
+
direction: d.key === e && d.direction === "descending" ? "ascending" : "descending",
|
|
43
|
+
key: e
|
|
44
|
+
}));
|
|
45
|
+
}
|
|
46
|
+
return /* @__PURE__ */ t("div", { className: a.tableView, children: [
|
|
47
|
+
/* @__PURE__ */ t("div", { className: a.tableTools, children: [
|
|
48
|
+
/* @__PURE__ */ n(
|
|
49
|
+
E,
|
|
50
|
+
{
|
|
51
|
+
"aria-label": "Buscar pelo nome",
|
|
52
|
+
icon: /* @__PURE__ */ n(G, {}),
|
|
53
|
+
onChange: (e) => {
|
|
54
|
+
F(e.target.value), N(m);
|
|
55
|
+
},
|
|
56
|
+
placeholder: "Buscar pelo nome",
|
|
57
|
+
size: "sm",
|
|
58
|
+
type: "search",
|
|
59
|
+
value: k
|
|
60
|
+
}
|
|
61
|
+
),
|
|
62
|
+
/* @__PURE__ */ n("span", { "aria-live": "polite", className: a.tableCount, children: `${Math.min(o, r.length)} de ${r.length} ${r.length === 1 ? "região" : "regiões"}` })
|
|
63
|
+
] }),
|
|
64
|
+
/* @__PURE__ */ t(
|
|
65
|
+
"div",
|
|
66
|
+
{
|
|
67
|
+
"aria-label": `Tabela: ${g}`,
|
|
68
|
+
className: a.tableScroll,
|
|
69
|
+
role: "region",
|
|
70
|
+
style: { maxHeight: z },
|
|
71
|
+
tabIndex: 0,
|
|
72
|
+
children: [
|
|
73
|
+
/* @__PURE__ */ t("table", { className: a.table, children: [
|
|
74
|
+
/* @__PURE__ */ n("caption", { className: a.visuallyHidden, children: g }),
|
|
75
|
+
/* @__PURE__ */ n("thead", { children: /* @__PURE__ */ n("tr", { children: A.map((e) => /* @__PURE__ */ n(
|
|
76
|
+
"th",
|
|
77
|
+
{
|
|
78
|
+
"aria-sort": i.key === e.key ? i.direction : void 0,
|
|
79
|
+
className: e.numeric ? a.numeric : void 0,
|
|
80
|
+
scope: "col",
|
|
81
|
+
children: /* @__PURE__ */ t("button", { className: a.sortButton, onClick: () => D(e.key), type: "button", children: [
|
|
82
|
+
e.label,
|
|
83
|
+
i.key === e.key && /* @__PURE__ */ n("span", { "aria-hidden": "true", children: i.direction === "ascending" ? " ↑" : " ↓" })
|
|
84
|
+
] })
|
|
85
|
+
},
|
|
86
|
+
e.key
|
|
87
|
+
)) }) }),
|
|
88
|
+
/* @__PURE__ */ n("tbody", { children: r.slice(0, o).map((e) => /* @__PURE__ */ t("tr", { className: e.selected ? a.tableSelected : void 0, children: [
|
|
89
|
+
/* @__PURE__ */ n("th", { scope: "row", children: e.name }),
|
|
90
|
+
v && /* @__PURE__ */ n("td", { className: s ? a.numeric : void 0, children: e.valueText ?? /* @__PURE__ */ n("span", { className: a.tableMuted, children: L }) }),
|
|
91
|
+
y && /* @__PURE__ */ n("td", { children: e.classLabel ?? "" }),
|
|
92
|
+
b && /* @__PURE__ */ n("td", { className: a.numeric, children: e.share === void 0 ? "" : h(e.share) }),
|
|
93
|
+
u && /* @__PURE__ */ n("td", { className: a.numeric, children: e.rank === void 0 ? "" : `${e.rank}º` })
|
|
94
|
+
] }, e.id)) })
|
|
95
|
+
] }),
|
|
96
|
+
C.length > 0 && /* @__PURE__ */ t("table", { className: a.table, children: [
|
|
97
|
+
/* @__PURE__ */ n("caption", { className: a.tableCaption, children: "Marcadores" }),
|
|
98
|
+
/* @__PURE__ */ n("thead", { children: /* @__PURE__ */ t("tr", { children: [
|
|
99
|
+
/* @__PURE__ */ n("th", { scope: "col", children: "Nome" }),
|
|
100
|
+
/* @__PURE__ */ n("th", { scope: "col", children: "Série" }),
|
|
101
|
+
/* @__PURE__ */ n("th", { className: a.numeric, scope: "col", children: $ })
|
|
102
|
+
] }) }),
|
|
103
|
+
/* @__PURE__ */ n("tbody", { children: C.map((e) => /* @__PURE__ */ t("tr", { children: [
|
|
104
|
+
/* @__PURE__ */ n("th", { scope: "row", children: e.name }),
|
|
105
|
+
/* @__PURE__ */ n("td", { children: e.series }),
|
|
106
|
+
/* @__PURE__ */ n("td", { className: a.numeric, children: e.value })
|
|
107
|
+
] }, e.key)) })
|
|
108
|
+
] })
|
|
109
|
+
]
|
|
110
|
+
}
|
|
111
|
+
),
|
|
112
|
+
r.length > o && /* @__PURE__ */ n(H, { onClick: () => N((e) => e + m), size: "sm", variant: "secondary", children: `Mostrar mais ${Math.min(m, r.length - o)}` })
|
|
113
|
+
] });
|
|
114
|
+
}
|
|
115
|
+
export {
|
|
116
|
+
U as ChartMapTable
|
|
117
|
+
};
|
|
118
|
+
//# sourceMappingURL=ChartMapTable.js.map
|