@cfasim-ui/charts 0.7.8 → 0.8.1
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/dist/BarChart/BarChart.d.ts +9 -26
- package/dist/ChartMenu/ChartMenu.d.ts +3 -2
- package/dist/ChartTooltip/ChartTooltip.d.ts +9 -12
- package/dist/ChoroplethMap/ChoroplethMap.d.ts +42 -190
- package/dist/ChoroplethMap/ChoroplethTooltip.d.ts +20 -27
- package/dist/ChoroplethMap/canvasLayer.d.ts +23 -6
- package/dist/ChoroplethMap/cityLayout.d.ts +3 -2
- package/dist/ChoroplethMap/mixedGeo.d.ts +74 -0
- package/dist/ChoroplethMap/mixedGeo.test.d.ts +1 -0
- package/dist/DataTable/DataTable.d.ts +3 -2
- package/dist/LineChart/LineChart.d.ts +9 -26
- package/dist/_shared/ChartAnnotations.d.ts +3 -2
- package/dist/_shared/ChartZoomControls.d.ts +3 -2
- package/dist/_shared/index.d.ts +2 -1
- package/dist/_shared/mapTheme.d.ts +159 -0
- package/dist/_shared/mapTheme.test.d.ts +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1821 -1462
- package/docs/BarChart.md +776 -0
- package/docs/ChoroplethMap.md +1394 -0
- package/docs/DataTable.md +386 -0
- package/docs/LineChart.md +1267 -0
- package/docs/index.json +56 -0
- package/package.json +25 -21
- package/src/BarChart/BarChart.md +743 -0
- package/src/BarChart/BarChart.vue +1901 -0
- package/src/ChartMenu/ChartMenu.vue +220 -0
- package/src/ChartMenu/download.ts +120 -0
- package/src/ChartTooltip/ChartTooltip.vue +97 -0
- package/src/ChoroplethMap/ChoroplethMap.md +1354 -0
- package/src/ChoroplethMap/ChoroplethMap.vue +3778 -0
- package/src/ChoroplethMap/ChoroplethTooltip.vue +103 -0
- package/src/ChoroplethMap/canvasLayer.ts +373 -0
- package/src/ChoroplethMap/cityLayout.ts +262 -0
- package/src/ChoroplethMap/hsaMapping.ts +4116 -0
- package/src/ChoroplethMap/mixedGeo.ts +201 -0
- package/src/DataTable/DataTable.md +372 -0
- package/src/DataTable/DataTable.vue +406 -0
- package/src/LineChart/LineChart.md +1225 -0
- package/src/LineChart/LineChart.vue +1555 -0
- package/src/_shared/ChartAnnotations.vue +420 -0
- package/src/_shared/ChartZoomControls.vue +138 -0
- package/src/_shared/annotations.ts +106 -0
- package/src/_shared/axes.ts +69 -0
- package/src/_shared/chartProps.ts +201 -0
- package/src/_shared/computeTicks.ts +42 -0
- package/src/_shared/contrast.ts +100 -0
- package/src/_shared/dateAxis.ts +501 -0
- package/src/_shared/index.ts +78 -0
- package/src/_shared/mapTheme.ts +551 -0
- package/src/_shared/scale.ts +86 -0
- package/src/_shared/seriesCsv.ts +68 -0
- package/src/_shared/touch.ts +8 -0
- package/src/_shared/useChartFoundation.ts +175 -0
- package/src/_shared/useChartFullscreen.ts +254 -0
- package/src/_shared/useChartMenu.ts +111 -0
- package/src/_shared/useChartPadding.ts +235 -0
- package/src/_shared/useChartSize.ts +58 -0
- package/src/_shared/useChartTooltip.ts +205 -0
- package/src/env.d.ts +4 -0
- package/src/hsa-mapping.ts +1 -0
- package/src/index.ts +41 -0
- package/src/tooltip-position.ts +55 -0
- package/src/us-cities/data.ts +1371 -0
- package/src/us-cities/index.ts +122 -0
- package/src/us-cities.ts +7 -0
|
@@ -192,26 +192,12 @@ interface LineChartProps extends ChartCommonProps {
|
|
|
192
192
|
xGrid?: boolean;
|
|
193
193
|
yGrid?: boolean;
|
|
194
194
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
xLabel?: string;
|
|
200
|
-
}): unknown;
|
|
201
|
-
}> & {
|
|
202
|
-
tooltip?(props: ChartTooltipBaseProps & {
|
|
203
|
-
xLabel?: string;
|
|
204
|
-
}): unknown;
|
|
205
|
-
};
|
|
206
|
-
refs: {
|
|
207
|
-
containerRef: HTMLDivElement;
|
|
208
|
-
svgRef: SVGSVGElement;
|
|
209
|
-
tooltipRef: HTMLDivElement;
|
|
210
|
-
};
|
|
211
|
-
rootEl: any;
|
|
195
|
+
type __VLS_Slots = {
|
|
196
|
+
tooltip?(props: ChartTooltipBaseProps & {
|
|
197
|
+
xLabel?: string;
|
|
198
|
+
}): unknown;
|
|
212
199
|
};
|
|
213
|
-
|
|
214
|
-
declare const __VLS_component: import('vue').DefineComponent<LineChartProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
200
|
+
declare const __VLS_base: import('vue').DefineComponent<LineChartProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
215
201
|
hover: (payload: ChartHoverPayload) => any;
|
|
216
202
|
}, string, import('vue').PublicProps, Readonly<LineChartProps> & Readonly<{
|
|
217
203
|
onHover?: ((payload: ChartHoverPayload) => any) | undefined;
|
|
@@ -220,14 +206,11 @@ declare const __VLS_component: import('vue').DefineComponent<LineChartProps, {},
|
|
|
220
206
|
lineOpacity: number;
|
|
221
207
|
yScaleType: "linear" | "log";
|
|
222
208
|
tooltipClamp: "none" | "chart" | "window";
|
|
223
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
tooltipRef: HTMLDivElement;
|
|
227
|
-
}, any>;
|
|
228
|
-
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
209
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
210
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
211
|
+
declare const _default: typeof __VLS_export;
|
|
229
212
|
export default _default;
|
|
230
|
-
type
|
|
213
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
231
214
|
new (): {
|
|
232
215
|
$slots: S;
|
|
233
216
|
};
|
|
@@ -18,8 +18,9 @@ type __VLS_Props = {
|
|
|
18
18
|
*/
|
|
19
19
|
bounds?: ChartBounds;
|
|
20
20
|
};
|
|
21
|
-
declare const
|
|
21
|
+
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
22
22
|
annotations: readonly ChartAnnotation[];
|
|
23
23
|
bounds: ChartBounds;
|
|
24
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {},
|
|
24
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
25
|
+
declare const _default: typeof __VLS_export;
|
|
25
26
|
export default _default;
|
|
@@ -7,7 +7,7 @@ type __VLS_Props = {
|
|
|
7
7
|
* window, matching the ChartMenu trigger area. */
|
|
8
8
|
isFullscreen?: boolean;
|
|
9
9
|
};
|
|
10
|
-
declare const
|
|
10
|
+
declare const __VLS_export: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
11
11
|
reset: () => any;
|
|
12
12
|
zoomIn: () => any;
|
|
13
13
|
zoomOut: () => any;
|
|
@@ -20,5 +20,6 @@ declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {
|
|
|
20
20
|
canZoomIn: boolean;
|
|
21
21
|
canZoomOut: boolean;
|
|
22
22
|
canReset: boolean;
|
|
23
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {},
|
|
23
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
24
|
+
declare const _default: typeof __VLS_export;
|
|
24
25
|
export default _default;
|
package/dist/_shared/index.d.ts
CHANGED
|
@@ -13,5 +13,6 @@ export { default as ChartAnnotations } from './ChartAnnotations';
|
|
|
13
13
|
export type { ChartAnnotation } from './annotations.js';
|
|
14
14
|
export { useChartFoundation, makeTooltipValueFormatter, type ChartFoundationOptions, } from './useChartFoundation.js';
|
|
15
15
|
export type { ChartCommonProps, ChartHoverPayload, ChartTooltipValue, ChartTooltipBaseProps, TitleStyle, LabelStyle, BlendMode, LineMarkStyle, } from './chartProps.js';
|
|
16
|
-
export { resolveColorToRgb, pickContrastColor, type Rgb } from './contrast.js';
|
|
16
|
+
export { parseRgb, resolveColorToRgb, pickContrastColor, type Rgb, } from './contrast.js';
|
|
17
|
+
export { useMapTheme, createMapThemeResolver, mapThemeDefaults, LIGHT_HIGHLIGHT, type MapTheme, type ResolvedMapTheme, type MapThemeResolver, } from './mapTheme.js';
|
|
17
18
|
export { parseDate, isDateLike, isAllDates, pickDateTicks, formatDate, DATE_FORMAT_PRESETS, type DateFormat, type DateFormatPreset, type DateTickUnit, type DateTimezone, } from './dateAxis.js';
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { Ref } from 'vue';
|
|
2
|
+
export interface MapTheme {
|
|
3
|
+
/**
|
|
4
|
+
* Base fill for features without a data value (any CSS color).
|
|
5
|
+
* Default: `var(--choropleth-fill, light-dark(#ddd, #3f3f46))`.
|
|
6
|
+
*/
|
|
7
|
+
fill?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Interior feature borders (any CSS color).
|
|
10
|
+
* Default: `var(--choropleth-stroke, light-dark(#fff, #18181b))`.
|
|
11
|
+
*/
|
|
12
|
+
stroke?: string;
|
|
13
|
+
/**
|
|
14
|
+
* Feature border width in CSS px, kept constant on screen at any zoom.
|
|
15
|
+
* Unset falls back to the component default (0.5, halved on county/HSA
|
|
16
|
+
* maps); an explicit value applies as-is on every geoType. 0 disables.
|
|
17
|
+
*/
|
|
18
|
+
strokeWidth?: number;
|
|
19
|
+
/**
|
|
20
|
+
* The state-boundary mesh drawn over county/HSA maps. Falls back to
|
|
21
|
+
* `stroke` unless a visible color resolves (from here or the
|
|
22
|
+
* `--choropleth-borders` custom property). Hide it with
|
|
23
|
+
* `bordersWidth: 0`.
|
|
24
|
+
*/
|
|
25
|
+
borders?: string;
|
|
26
|
+
/** State-borders mesh width in CSS px. Default 1; 0 disables. */
|
|
27
|
+
bordersWidth?: number;
|
|
28
|
+
/**
|
|
29
|
+
* Exterior boundary of the rendered geography (the nation outline, or
|
|
30
|
+
* the state outline in single-state mode), drawn on top of interior
|
|
31
|
+
* borders. Off unless a visible color resolves, so the
|
|
32
|
+
* `--choropleth-outline` custom property can enable it (it defaults to
|
|
33
|
+
* `transparent`).
|
|
34
|
+
*/
|
|
35
|
+
outline?: string;
|
|
36
|
+
/** Exterior outline width in CSS px. Default 1; 0 disables. */
|
|
37
|
+
outlineWidth?: number;
|
|
38
|
+
/**
|
|
39
|
+
* Background wash behind the map features. Off unless a visible color
|
|
40
|
+
* resolves, so the `--choropleth-background` custom property can enable
|
|
41
|
+
* it (it defaults to `transparent`).
|
|
42
|
+
*/
|
|
43
|
+
background?: string;
|
|
44
|
+
/**
|
|
45
|
+
* Hover/focus highlight stroke. Default:
|
|
46
|
+
* `var(--choropleth-highlight, light-dark(#000, #fff))`. Per-item
|
|
47
|
+
* `FocusItem.stroke` still wins for individual focus outlines.
|
|
48
|
+
*/
|
|
49
|
+
highlight?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Marker overlay (the `cities` prop layer): dot and label color (any
|
|
52
|
+
* CSS color). Sets both `--choropleth-city-marker` and
|
|
53
|
+
* `--choropleth-city-label-color`; default `#1a1a1a` (dark markers
|
|
54
|
+
* with a thin white halo read over any fill in either scheme). The
|
|
55
|
+
* marker layer is SVG in both renderers, so these four keys resolve
|
|
56
|
+
* in CSS directly (no probe) and follow theme flips on their own.
|
|
57
|
+
*/
|
|
58
|
+
markerColor?: string;
|
|
59
|
+
/**
|
|
60
|
+
* Marker overlay: halo color around dots and labels (sets
|
|
61
|
+
* `--choropleth-city-halo`). Default `#fff`.
|
|
62
|
+
*/
|
|
63
|
+
markerHalo?: string;
|
|
64
|
+
/**
|
|
65
|
+
* Halo width around each marker dot, in CSS px (constant on screen at
|
|
66
|
+
* any zoom). Default 0.9; 0 disables the dot halo. The label halo is
|
|
67
|
+
* unaffected.
|
|
68
|
+
*/
|
|
69
|
+
markerHaloWidth?: number;
|
|
70
|
+
/** Opacity of the whole marker layer (dots, labels, halos). Default 1. */
|
|
71
|
+
markerOpacity?: number;
|
|
72
|
+
}
|
|
73
|
+
/** Theme values resolved to canvas-paintable colors. */
|
|
74
|
+
export interface ResolvedMapTheme {
|
|
75
|
+
fill: string;
|
|
76
|
+
stroke: string;
|
|
77
|
+
strokeWidth: number | undefined;
|
|
78
|
+
/** Resolved borders color, falling back to `stroke`. */
|
|
79
|
+
borders: string;
|
|
80
|
+
bordersWidth: number | undefined;
|
|
81
|
+
/** undefined when the outline resolves invisible (off by default) */
|
|
82
|
+
outline: string | undefined;
|
|
83
|
+
outlineWidth: number | undefined;
|
|
84
|
+
/** undefined when the background resolves invisible (off by default) */
|
|
85
|
+
background: string | undefined;
|
|
86
|
+
highlight: string;
|
|
87
|
+
}
|
|
88
|
+
export declare const LIGHT_FILL = "#ddd";
|
|
89
|
+
export declare const DARK_FILL = "#3f3f46";
|
|
90
|
+
export declare const LIGHT_STROKE = "#fff";
|
|
91
|
+
export declare const DARK_STROKE = "#18181b";
|
|
92
|
+
export declare const LIGHT_HIGHLIGHT = "#000";
|
|
93
|
+
export declare const DARK_HIGHLIGHT = "#fff";
|
|
94
|
+
/**
|
|
95
|
+
* The built-in defaults: every channel routes through a `--choropleth-*`
|
|
96
|
+
* custom property, so CSS alone can retheme maps. `borders`, `outline`,
|
|
97
|
+
* and `background` use `transparent` sentinels, staying off (or, for
|
|
98
|
+
* borders, deferring to `stroke`) until a visible color resolves.
|
|
99
|
+
*/
|
|
100
|
+
export declare const mapThemeDefaults: {
|
|
101
|
+
readonly fill: "var(--choropleth-fill, light-dark(#ddd, #3f3f46))";
|
|
102
|
+
readonly stroke: "var(--choropleth-stroke, light-dark(#fff, #18181b))";
|
|
103
|
+
readonly borders: "var(--choropleth-borders, transparent)";
|
|
104
|
+
readonly outline: "var(--choropleth-outline, transparent)";
|
|
105
|
+
readonly background: "var(--choropleth-background, transparent)";
|
|
106
|
+
readonly highlight: "var(--choropleth-highlight, light-dark(#000, #fff))";
|
|
107
|
+
};
|
|
108
|
+
/** Shallow per-key equality; undefined and {} compare equal. */
|
|
109
|
+
export declare function themeEquals(a: MapTheme | undefined, b: MapTheme | undefined): boolean;
|
|
110
|
+
/** A resolved color that should actually paint; transparent means "off". */
|
|
111
|
+
export declare const visible: (c: string) => string | undefined;
|
|
112
|
+
/**
|
|
113
|
+
* Bare var() parses but is invalid at computed-value time when the property
|
|
114
|
+
* is undefined, inheriting the page text color; give it a fallback instead.
|
|
115
|
+
* var() references that already carry a fallback are left alone.
|
|
116
|
+
*/
|
|
117
|
+
export declare function withVarFallback(value: string, fallback: string): string;
|
|
118
|
+
export interface MapThemeResolver {
|
|
119
|
+
resolve(theme: MapTheme | undefined): ResolvedMapTheme;
|
|
120
|
+
/**
|
|
121
|
+
* Resolve scale palette colors (colorScale endpoints and stop colors)
|
|
122
|
+
* through the cascade. Each entry gets a persistent watched span, so env
|
|
123
|
+
* changes to any entry notify. Returns a stable array identity until an
|
|
124
|
+
* entry actually resolves differently.
|
|
125
|
+
*/
|
|
126
|
+
resolvePalette(colors: readonly string[], fallbacks: readonly string[]): readonly string[];
|
|
127
|
+
/** Force a re-read on the next resolve (env may have changed unobserved) */
|
|
128
|
+
invalidate(): void;
|
|
129
|
+
/**
|
|
130
|
+
* Compare probe reads against the cache and notify if anything changed.
|
|
131
|
+
* Transitions don't run in non-rendered subtrees, so a map hidden with
|
|
132
|
+
* `display:none` misses theme flips; call this when it may have been
|
|
133
|
+
* shown again (cheap: a handful of getComputedStyle reads, bail on equal).
|
|
134
|
+
*/
|
|
135
|
+
recheck(): void;
|
|
136
|
+
/** True while the last resolve/palette read fell back to constants. */
|
|
137
|
+
unresolved(): boolean;
|
|
138
|
+
destroy(): void;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Hidden probe that resolves CSS color strings against the container's
|
|
142
|
+
* cascade, one channel span per themed color. Each span carries a
|
|
143
|
+
* step-start color transition, so any change to a resolved color (class
|
|
144
|
+
* flip up the tree, media query flip, var redefinition) fires a transition
|
|
145
|
+
* event and triggers `onEnvChange`.
|
|
146
|
+
*/
|
|
147
|
+
export declare function createMapThemeResolver(container: HTMLElement, onEnvChange: () => void): MapThemeResolver;
|
|
148
|
+
/**
|
|
149
|
+
* Vue wrapper around {@link createMapThemeResolver}: creates the probe in
|
|
150
|
+
* `container` on mount, exposes the resolved theme as a computed, and bumps
|
|
151
|
+
* an internal version (re-running dependents) whenever the environment
|
|
152
|
+
* changes a resolved color. `resolvePalette` is reactive the same way; call
|
|
153
|
+
* it from a computed so scale colors re-resolve on theme flips.
|
|
154
|
+
*/
|
|
155
|
+
export declare function useMapTheme(container: Ref<HTMLElement | null>, theme: () => MapTheme | undefined): {
|
|
156
|
+
resolved: import('vue').ComputedRef<ResolvedMapTheme>;
|
|
157
|
+
resolvePalette: (colors: readonly string[], fallbacks: readonly string[]) => readonly string[];
|
|
158
|
+
ensureResolved: () => void;
|
|
159
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/index.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
.chart-menu-trigger-area[data-v-f5743494]{z-index:1;position:absolute;top:.5em;right:.5em}.chart-menu-trigger-area--expanded[data-v-f5743494]{top:1.25em;right:1.25em}.chart-menu-button[data-v-f5743494]{border:1px solid var(--color-border);background:var(--color-bg-0,#fff);width:28px;height:28px;color:var(--color-text-secondary);cursor:pointer;opacity:0;border-radius:.25em;justify-content:center;align-items:center;transition:opacity .15s;display:flex}.chart-menu-button[data-state=open][data-v-f5743494],.chart-close-button[data-v-f5743494]{opacity:1}.chart-menu-button[data-v-f5743494]:hover{background:var(--color-bg-1,#0000000d);color:var(--color-text)}.line-chart-wrapper:hover .chart-menu-button,.bar-chart-wrapper:hover .chart-menu-button,.choropleth-wrapper:hover .chart-menu-button,.line-chart-wrapper:focus-within .chart-menu-button,.bar-chart-wrapper:focus-within .chart-menu-button,.choropleth-wrapper:focus-within .chart-menu-button{opacity:1}.chart-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.chart-menu-content{z-index:100;background:var(--color-bg-0);border:1px solid var(--color-border);border-radius:.25em;min-width:140px;padding:.25em;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.chart-menu-item{font-size:var(--font-size-sm);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;border-radius:.25em;outline:none;align-items:center;padding:.375em .5em;display:flex}.chart-menu-item[data-highlighted]{background:var(--color-primary);color:#fff}.chart-zoom-controls[data-v-87ceeada]{z-index:1;flex-direction:column;gap:4px;display:flex;position:absolute;top:.5em;left:.5em}.chart-zoom-controls--expanded[data-v-87ceeada]{top:1.25em;left:1.25em}.chart-zoom-button[data-v-87ceeada]{border:1px solid var(--color-border,#e5e7eb);background:var(--color-bg-0,#fff);width:28px;height:28px;color:var(--color-text-secondary,#555);cursor:pointer;border-radius:.25em;justify-content:center;align-items:center;padding:0;display:flex}.chart-zoom-button[data-v-87ceeada]:hover:not(:disabled){background:var(--color-bg-1,#0000000d);color:var(--color-text)}.chart-zoom-button[data-v-87ceeada]:disabled{opacity:.4;cursor:default}.line-chart-wrapper[data-v-
|
|
1
|
+
.chart-menu-trigger-area[data-v-f5743494]{z-index:1;position:absolute;top:.5em;right:.5em}.chart-menu-trigger-area--expanded[data-v-f5743494]{top:1.25em;right:1.25em}.chart-menu-button[data-v-f5743494]{border:1px solid var(--color-border);background:var(--color-bg-0,#fff);width:28px;height:28px;color:var(--color-text-secondary);cursor:pointer;opacity:0;border-radius:.25em;justify-content:center;align-items:center;transition:opacity .15s;display:flex}.chart-menu-button[data-state=open][data-v-f5743494],.chart-close-button[data-v-f5743494]{opacity:1}.chart-menu-button[data-v-f5743494]:hover{background:var(--color-bg-1,#0000000d);color:var(--color-text)}.line-chart-wrapper:hover .chart-menu-button,.bar-chart-wrapper:hover .chart-menu-button,.choropleth-wrapper:hover .chart-menu-button,.line-chart-wrapper:focus-within .chart-menu-button,.bar-chart-wrapper:focus-within .chart-menu-button,.choropleth-wrapper:focus-within .chart-menu-button{opacity:1}.chart-sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.chart-menu-content{z-index:100;background:var(--color-bg-0);border:1px solid var(--color-border);border-radius:.25em;min-width:140px;padding:.25em;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.chart-menu-item{font-size:var(--font-size-sm);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;border-radius:.25em;outline:none;align-items:center;padding:.375em .5em;display:flex}.chart-menu-item[data-highlighted]{background:var(--color-primary);color:#fff}.chart-zoom-controls[data-v-87ceeada]{z-index:1;flex-direction:column;gap:4px;display:flex;position:absolute;top:.5em;left:.5em}.chart-zoom-controls--expanded[data-v-87ceeada]{top:1.25em;left:1.25em}.chart-zoom-button[data-v-87ceeada]{border:1px solid var(--color-border,#e5e7eb);background:var(--color-bg-0,#fff);width:28px;height:28px;color:var(--color-text-secondary,#555);cursor:pointer;border-radius:.25em;justify-content:center;align-items:center;padding:0;display:flex}.chart-zoom-button[data-v-87ceeada]:hover:not(:disabled){background:var(--color-bg-1,#0000000d);color:var(--color-text)}.chart-zoom-button[data-v-87ceeada]:disabled{opacity:.4;cursor:default}.line-chart-wrapper[data-v-7e41f1cc]{width:100%;position:relative}.line-chart-tooltip-label[data-v-7e41f1cc]{margin-bottom:.25em;font-weight:600}.line-chart-tooltip-row[data-v-7e41f1cc]{align-items:center;gap:.375em;display:flex}.line-chart-download-link[data-v-7e41f1cc]{text-align:right;font-size:var(--font-size-sm);margin-top:.25em;display:block}.line-chart-tooltip-swatch[data-v-7e41f1cc]{border-radius:50%;flex-shrink:0;width:.625em;height:.625em;display:inline-block}.line-chart-download-button{border:1px solid var(--color-border);background:var(--color-bg-0,#fff);color:var(--color-text);font-size:var(--font-size-sm);cursor:pointer;border-radius:.25em;align-items:center;margin-top:.5em;padding:.5em 1em;display:inline-flex}.line-chart-download-button:hover{background:var(--color-bg-1,#0000000d)}.line-chart-download-button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.bar-chart-wrapper[data-v-32872fa4]{width:100%;position:relative}.bar-chart-tooltip-label[data-v-32872fa4]{margin-bottom:.25em;font-weight:600}.bar-chart-tooltip-row[data-v-32872fa4]{align-items:center;gap:.375em;display:flex}.bar-chart-download-link[data-v-32872fa4]{text-align:right;font-size:var(--font-size-sm);margin-top:.25em;display:block}.bar-chart-tooltip-swatch[data-v-32872fa4]{border-radius:50%;flex-shrink:0;width:.625em;height:.625em;display:inline-block}.bar-chart-download-button{border:1px solid var(--color-border);background:var(--color-bg-0,#fff);color:var(--color-text);font-size:var(--font-size-sm);cursor:pointer;border-radius:.25em;align-items:center;margin-top:.5em;padding:.5em 1em;display:inline-flex}.bar-chart-download-button:hover{background:var(--color-bg-1,#0000000d)}.bar-chart-download-button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.chart-tooltip-sheet[data-v-90392830]{z-index:2;background:var(--color-bg-0,#fff);color:var(--color-text,inherit);border-top:1px solid var(--color-border,#e5e7eb);padding:14px 16px calc(14px + env(safe-area-inset-bottom,0px));pointer-events:none;font-size:14px;line-height:1.4;transition:transform .25s;position:absolute;bottom:0;left:0;right:0;transform:translateY(100%);box-shadow:0 -4px 12px #0000001f}.chart-tooltip-sheet.is-open[data-v-90392830]{transform:translateY(0)}.choropleth-wrapper[data-v-ef6ce015]{--choropleth-legend-bg:var(--color-bg-0,#fff);width:100%;position:relative;container-type:inline-size}.choropleth-wrapper svg[data-v-ef6ce015]{width:100%;height:auto;display:block}.choropleth-wrapper.pannable svg[data-v-ef6ce015]{cursor:grab}.choropleth-wrapper.is-fullscreen svg[data-v-ef6ce015]{flex:auto;width:100%;height:100%;min-height:0}.choropleth-wrapper.pannable svg[data-v-ef6ce015]:active{cursor:grabbing}.choropleth-wrapper[data-v-ef6ce015] .state-path{cursor:pointer}.choropleth-city-overlay[data-v-ef6ce015]{pointer-events:none;position:absolute;top:0;left:0}.choropleth-cities[data-v-ef6ce015]{--choropleth-city-marker:#1a1a1a;--choropleth-city-halo:#fff;--choropleth-city-label-color:#1a1a1a;font-family:var(--font-family,system-ui, sans-serif)}.choropleth-cities[data-v-ef6ce015] .choropleth-city-dot{fill:var(--choropleth-city-marker);stroke:var(--choropleth-city-halo)}.choropleth-cities[data-v-ef6ce015] .choropleth-city-label{fill:var(--choropleth-city-label-color);stroke:var(--choropleth-city-halo);paint-order:stroke fill;stroke-linejoin:round;font-weight:500}.choropleth-canvas[data-v-ef6ce015]{pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.choropleth-zoom-hint[data-v-ef6ce015]{z-index:1;text-align:center;color:var(--color-text-secondary,#777);opacity:.6;pointer-events:none;text-shadow:1px 0 0 var(--color-bg-0,#fff), -1px 0 0 var(--color-bg-0,#fff), 0 1px 0 var(--color-bg-0,#fff), 0 -1px 0 var(--color-bg-0,#fff), 0 0 3px var(--color-bg-0,#fff);padding-top:6px;font-size:12px;line-height:1.4;position:absolute;left:0;right:0}@container (width<=480px){.choropleth-zoom-hint[data-v-ef6ce015]{padding:0;position:static}}.choropleth-header[data-v-ef6ce015]{background:var(--choropleth-legend-bg);color:currentColor;border-radius:4px;flex-direction:column;align-items:center;gap:10px;width:fit-content;margin:0 auto;padding:8px 14px;display:flex}.choropleth-title[data-v-ef6ce015]{white-space:pre-line;font-size:14px;font-weight:600;line-height:1.2}.choropleth-legend[data-v-ef6ce015]{align-items:center;gap:14px;font-size:13px;line-height:1.2;display:flex}.choropleth-legend-title[data-v-ef6ce015]{font-weight:600}.choropleth-legend[data-v-ef6ce015]:has(.choropleth-legend-continuous){align-items:flex-start}.choropleth-legend:has(.choropleth-legend-continuous) .choropleth-legend-title[data-v-ef6ce015]{line-height:12px}.choropleth-legend-item[data-v-ef6ce015]{align-items:center;gap:6px;display:inline-flex}.choropleth-legend-swatch[data-v-ef6ce015]{border-radius:3px;width:12px;height:12px;display:inline-block}.choropleth-legend-continuous[data-v-ef6ce015]{flex-direction:column;width:160px;display:flex}.choropleth-legend-gradient[data-v-ef6ce015]{border-radius:2px;height:12px}.choropleth-legend-ticks[data-v-ef6ce015]{opacity:.7;height:14px;margin-top:4px;font-size:11px;position:relative}.choropleth-legend-ticks>span[data-v-ef6ce015]{position:absolute;transform:translate(-50%)}.chart-tooltip-anchor[data-v-44377f70]{pointer-events:none;width:1px;height:1px;position:absolute}.chart-tooltip-content{z-index:100;background:var(--color-bg-0,#fff);border:1px solid var(--color-border,#e5e7eb);font-size:var(--font-size-sm,.875rem);pointer-events:none;border-radius:.375em;padding:.5em .75em;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a}.TableOuter[data-v-9b1b6a76]{display:inline-block;position:relative}.TableOuter.full-width[data-v-9b1b6a76]{display:block}.TableWrapper[data-v-9b1b6a76]{font-size:var(--font-size-sm);overflow-x:auto}.Table[data-v-9b1b6a76]{border-collapse:collapse;font-variant-numeric:tabular-nums;border:1px solid var(--color-border);table-layout:fixed;margin:0;display:table}.Table.full-width[data-v-9b1b6a76]{width:100%}.Table tr[data-v-9b1b6a76],.Table th[data-v-9b1b6a76],.Table td[data-v-9b1b6a76]{background:0 0;border:none}.Table th[data-v-9b1b6a76],.Table td[data-v-9b1b6a76]{white-space:nowrap;text-overflow:ellipsis;text-align:left;padding:.75em 1.25em;overflow:hidden}.Table th.cell-wrap[data-v-9b1b6a76],.Table td.cell-wrap[data-v-9b1b6a76]{white-space:normal;text-overflow:clip;overflow:visible}.Table th[data-v-9b1b6a76]{border-bottom:1px solid var(--color-border-header);font-weight:600;position:sticky;top:0}.Table tbody td[data-v-9b1b6a76]{border-bottom:1px solid var(--color-border)}.Table tbody tr:last-child td[data-v-9b1b6a76]{border-bottom:none}.TableOuter[data-v-9b1b6a76] .chart-menu-trigger-area{top:4px;right:4px}.TableOuter[data-v-9b1b6a76] .chart-menu-button{opacity:1}.TableOuter.has-menu .Table thead th[data-v-9b1b6a76]:last-child{padding-right:2.5em}.data-table-download-button{border:1px solid var(--color-border);background:var(--color-bg-0,#fff);color:var(--color-text);font-size:var(--font-size-sm);cursor:pointer;border-radius:.25em;align-items:center;margin-top:.75em;padding:.5em 1em;display:inline-flex}.data-table-download-button:hover{background:var(--color-bg-1,#0000000d)}.data-table-download-button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.data-table-download-link{text-align:right;font-size:var(--font-size-sm);margin-top:.25em;display:block}
|
|
2
2
|
/*$vite$:1*/
|
package/dist/index.d.ts
CHANGED
|
@@ -4,5 +4,6 @@ export { default as ChoroplethMap, type GeoType, type StateData, type Choropleth
|
|
|
4
4
|
export { default as ChartTooltip } from './ChartTooltip/ChartTooltip';
|
|
5
5
|
export { default as DataTable, type TableData, type TableRecord, type ColumnAlign, type ColumnConfig, type ColumnWidth, } from './DataTable/DataTable';
|
|
6
6
|
export type { CityMarker, PlacedCity } from './ChoroplethMap/cityLayout.js';
|
|
7
|
+
export { mapThemeDefaults, type MapTheme, type ResolvedMapTheme, } from './_shared/mapTheme.js';
|
|
7
8
|
export type { ChartAnnotation } from './_shared/annotations.js';
|
|
8
9
|
export type { BlendMode, LineMarkStyle } from './_shared/chartProps.js';
|