@opendata-ai/openchart-core 7.9.2 → 7.10.0
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/index.d.ts +18 -2
- package/dist/index.js +23 -5
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +2 -0
- package/src/locale/__tests__/format.test.ts +48 -0
- package/src/locale/format.ts +25 -2
- package/src/responsive/index.ts +2 -0
- package/src/responsive/metrics.ts +18 -2
package/dist/index.d.ts
CHANGED
|
@@ -4368,6 +4368,20 @@ declare const MAX_LEFT_LABEL_FRACTION_DEFAULT = 1;
|
|
|
4368
4368
|
declare const X_AXIS_BAND_HEIGHT = 26;
|
|
4369
4369
|
declare const X_AXIS_TITLE_BAND = 22;
|
|
4370
4370
|
declare const X_AXIS_TITLE_BAND_ROTATED = 20;
|
|
4371
|
+
/**
|
|
4372
|
+
* Ceiling on the vertical extent reserved for rotated x tick labels. Labels
|
|
4373
|
+
* whose rotated projection exceeds this clip at the reservation edge, so the
|
|
4374
|
+
* angle ladder (engine layout/axes/rotation) avoids -90° for labels longer
|
|
4375
|
+
* than this.
|
|
4376
|
+
*/
|
|
4377
|
+
declare const X_AXIS_ROTATED_EXTENT_CAP = 120;
|
|
4378
|
+
/**
|
|
4379
|
+
* Line-height multiplier for a tick label's text ribbon. Shared by the
|
|
4380
|
+
* rotated-extent reservation below and the engine's rotation collision test
|
|
4381
|
+
* (layout/axes/rotation) so the reserved space and the fit threshold can't
|
|
4382
|
+
* drift apart.
|
|
4383
|
+
*/
|
|
4384
|
+
declare const TICK_LINE_HEIGHT_FACTOR = 1.2;
|
|
4371
4385
|
interface XAxisExtentInput {
|
|
4372
4386
|
labels: string[];
|
|
4373
4387
|
tickAngle?: number;
|
|
@@ -4506,8 +4520,10 @@ type DateGranularity = 'year' | 'quarter' | 'month' | 'week' | 'day' | 'hour' |
|
|
|
4506
4520
|
* Pass `false` when formatting ticks from a local-time scale (d3 scaleTime),
|
|
4507
4521
|
* so that e.g. midnight local isn't misread as an intra-day UTC time.
|
|
4508
4522
|
* Defaults to `true` for backward compatibility.
|
|
4523
|
+
* @param compact - Use the compact format table (axis ticks whose full-format
|
|
4524
|
+
* labels would overlap). Defaults to `false`.
|
|
4509
4525
|
*/
|
|
4510
|
-
declare function formatDate(value: Date | string | number, _locale?: string, granularity?: DateGranularity, useUtc?: boolean): string;
|
|
4526
|
+
declare function formatDate(value: Date | string | number, _locale?: string, granularity?: DateGranularity, useUtc?: boolean, compact?: boolean): string;
|
|
4511
4527
|
/**
|
|
4512
4528
|
* Build a formatter for temporal values using a d3-time-format string (e.g. "%Y", "%b %Y").
|
|
4513
4529
|
* Returns a function that accepts a Date, string, or number and returns the formatted string.
|
|
@@ -4755,4 +4771,4 @@ interface TileMapBuilderOptions {
|
|
|
4755
4771
|
*/
|
|
4756
4772
|
declare function tileMap(data: Record<string, number | string | null> | DataRow[], options?: TileMapBuilderOptions): TileMapSpec;
|
|
4757
4773
|
|
|
4758
|
-
export { type A11yMetadata, ACHROMATIC_RAMP, AXIS_TITLE_GAP, AXIS_TITLE_OFFSET_COMPACT, AXIS_TITLE_OFFSET_DEFAULT, AXIS_TITLE_TRAILING_PAD, type AggregateOp, type AggregateTransform, type AnimationConfig, type AnimationEase, type AnimationPhaseConfig, type AnimationSpec, type AnimationStagger, type Annotation, type AnnotationAnchor, type AnnotationFootnote, type AnnotationOffset, type AnnotationPosition, type ArcEncoding, type ArcMark, type AreaEncoding, type AreaMark, type AxisConfig, type AxisLabelDensity, type AxisLayout, type AxisTick, BRAND_FONT_SIZE, BRAND_MIN_WIDTH, BRAND_RESERVE_WIDTH, BREAKPOINT_COMPACT_MAX, BREAKPOINT_MEDIUM_MAX, type BarColumnConfig, type BarEncoding, type BarListEncoding, type BarListLayout, type BarListRowMark, type BarListSpec, type BarListSpecWithoutData, type BarTableCell, type BaseLegendLayout, type BinParams, type BinTransform, type Breakpoint, CATEGORICAL_PALETTE, CHART_ENCODING_RULES, CHART_TYPES, COMPACT_WIDTH, type CalculateExpression, type CalculateTransform, type CategoricalLegendLayout, type CategoricalPalette, type CategoryColorsConfig, type CategoryTableCell, type CellStyle, type ChannelRule, type ChartBuilderOptions, type ChartEventHandlers, type ChartLayout, type ChartSpec, type ChartSpecOverride, type ChartSpecWithoutData, type ChartType, type Chrome, type ChromeDefaults, type ChromeKey, type ChromeMode, type ChromeText, type ChromeTextStyle, type ChromeThemeOverride, type CircleEncoding, type ColorBlindnessType, type ColumnConfig, type CompileOptions, type CompileTableOptions, type Condition, type ConditionalValueDef, DEFAULT_THEME, DIVERGING_PALETTES, type DarkMode, type DataRow, type DateGranularity, type Display, type DivergingPalette, EXTENDED_OFFSET_STRATEGIES, type ElementEdit, type ElementRef, type Encoding, type EncodingChannel, type EncodingRule, type EndpointLabelEntry, type EndpointLabelsConfig, type EndpointLabelsLayout, type FacetChannel, type FacetLayout, type FacetPanelLayout, type FieldPredicate, type FieldRef, type FieldType, type FilterPredicate, type FilterTransform, type FlagTableCell, type FoldTransform, GRAPH_ENCODING_RULES, type GradientColorStop, type GradientDef, type GradientLegendLayout, type GradientStop, type GraphChannelRule, type GraphEdge, type GraphEdgeLayout, type GraphEncoding, type GraphEncodingChannel, type GraphLayout, type GraphLayoutConfig, type GraphNode, type GraphNodeLayout, type GraphSpec, type GraphSpecWithoutData, type Gridline, HEIGHT_CRAMPED_MAX, HEIGHT_SHORT_MAX, HPAD_COMPACT_FRACTION, HPAD_COMPACT_MIN, type HeatmapColumnConfig, type HeatmapTableCell, type HeightClass, type ImageColumnConfig, type ImageTableCell, LABEL_GAP_COMPACT, LABEL_GAP_DEFAULT, LABEL_GAP_NARROW_MAX, type LabelCandidate, type LabelConfig, type LabelDensity, type LabelMode, type LabelPriority, type LabelSpec, type LayerSpec, type LayoutStrategy, type LegendConfig, type LegendEntry, type LegendEntryPosition, type LegendLayout, type LegendPosition, type LineEncoding, type LineMark, type LinearGradient, type LogicalAnd, type LogicalNot, type LogicalOr, type LollipopEncoding, MARK_DISPLAY_NAMES, MARK_ENCODING_RULES, MARK_TYPES, MAX_LEFT_LABEL_FRACTION_COMPACT, MAX_LEFT_LABEL_FRACTION_DEFAULT, MAX_LEFT_LABEL_FRACTION_MEDIUM, MAX_LEFT_LABEL_FRACTION_MEDIUM_MAX, type Margins, type Mark, type MarkAria, type MarkDef, type MarkEvent, type MarkType, type MeasureTextFn, type Metric, NARROW_VIEWPORT_MAX, type NodeOverride, OFFSET_STRATEGIES, type OffsetStrategy, type PaginationState, type Point, type PointEncoding, type PointMark, type RadialGradient, type RangeAnnotation, type Rect, type RectEncoding, type RectMark, type RefLineAnnotation, type RelativeTimeRef, type ResolveConfig, type ResolveMode, type ResolvedAnimation, type ResolvedAnimationPhase, type ResolvedAnnotation, type ResolvedChrome, type ResolvedChromeElement, type ResolvedColumn, type ResolvedLabel, type ResolvedMetricBar, type ResolvedMetricCell, type ResolvedTheme, type ResponsiveConfig, type RuleMarkLayout, SEQUENTIAL_PALETTES, type SankeyEncoding, type SankeyLayout, type SankeyLinkColor, type SankeyLinkMark, type SankeyNodeAlign, type SankeyNodeMark, type SankeySpec, type SankeySpecWithoutData, type ScaleConfig, type ScaleType, type SequentialPalette, type SeriesStrategy, type SeriesStyle, type SortState, type SparklineColumnConfig, type SparklineData, type SparklineTableCell, type StoredVizSpec, TICK_LABEL_OFFSET, TOP_PAD_EXTRA_NARROW, TOP_PAD_NARROW_MAX, type TableBuilderOptions, type TableCell, type TableCellBase, type TableLayout, type TableRow, type TableSpec, type TableSpecWithoutData, type TextAnnotation, type TextEncoding, type TextMarkLayout, type TextStyle, type TextTableCell, type Theme, type ThemeChromeDefaults, type ThemeColors, type ThemeConfig, type ThemeFontSizes, type ThemeFontWeights, type ThemeFonts, type ThemeSpacing, type TickEncoding, type TickMarkLayout, type TileMapBuilderOptions, type TileMapEncoding, type TileMapLayout, type TileMapPalette, type TileMapSpec, type TileMapSpecWithoutData, type TileMapTileMark, type TimeUnit, type TimeUnitTransform, type TokenValue, type TooltipContent, type TooltipField, type Transform, type VizSpec, type WindowFieldDef, type WindowOp, type WindowSortField, type WindowTransform, type XAxisExtentInput, X_AXIS_BAND_HEIGHT, X_AXIS_TITLE_BAND, X_AXIS_TITLE_BAND_ROTATED, abbreviateNumber, adaptColorForDarkMode, adaptForLightLineStroke, adaptTheme, areaChart, axisTitleOffset, barChart, buildD3Formatter, buildTemporalFormatter, checkPaletteDistinguishability, columnChart, computeChrome, computeLabelBounds, computeXAxisExtentFromLabels, contrastRatio, dataTable, detectCollision, donutChart, dotChart, editorial, elementRef, essay, estimateTextWidth, findAccessibleColor, formatDate, formatNumber, generateAltText, generateAriaLabels, generateDataTable, getAxisTitleOffset, getBreakpoint, getHeightClass, getLayoutStrategy, getRepresentativeColor, heuristicMeasure, inferFieldType, isBarListSpec, isChartSpec, isConditionalDef, isEncodingChannel, isGradientDef, isGraphSpec, isLayerSpec, isRangeAnnotation, isRefLineAnnotation, isSankeySpec, isTableSpec, isTextAnnotation, isTileMapSpec, lineChart, meetsAA, overlapArea, pickLabelColor, pieChart, resolveCollisions, resolveMarkDef, resolveMarkType, resolveMeasurer, resolveTheme, scatterChart, simulateColorBlindness, textAscent, tileMap, wire, wrapText };
|
|
4774
|
+
export { type A11yMetadata, ACHROMATIC_RAMP, AXIS_TITLE_GAP, AXIS_TITLE_OFFSET_COMPACT, AXIS_TITLE_OFFSET_DEFAULT, AXIS_TITLE_TRAILING_PAD, type AggregateOp, type AggregateTransform, type AnimationConfig, type AnimationEase, type AnimationPhaseConfig, type AnimationSpec, type AnimationStagger, type Annotation, type AnnotationAnchor, type AnnotationFootnote, type AnnotationOffset, type AnnotationPosition, type ArcEncoding, type ArcMark, type AreaEncoding, type AreaMark, type AxisConfig, type AxisLabelDensity, type AxisLayout, type AxisTick, BRAND_FONT_SIZE, BRAND_MIN_WIDTH, BRAND_RESERVE_WIDTH, BREAKPOINT_COMPACT_MAX, BREAKPOINT_MEDIUM_MAX, type BarColumnConfig, type BarEncoding, type BarListEncoding, type BarListLayout, type BarListRowMark, type BarListSpec, type BarListSpecWithoutData, type BarTableCell, type BaseLegendLayout, type BinParams, type BinTransform, type Breakpoint, CATEGORICAL_PALETTE, CHART_ENCODING_RULES, CHART_TYPES, COMPACT_WIDTH, type CalculateExpression, type CalculateTransform, type CategoricalLegendLayout, type CategoricalPalette, type CategoryColorsConfig, type CategoryTableCell, type CellStyle, type ChannelRule, type ChartBuilderOptions, type ChartEventHandlers, type ChartLayout, type ChartSpec, type ChartSpecOverride, type ChartSpecWithoutData, type ChartType, type Chrome, type ChromeDefaults, type ChromeKey, type ChromeMode, type ChromeText, type ChromeTextStyle, type ChromeThemeOverride, type CircleEncoding, type ColorBlindnessType, type ColumnConfig, type CompileOptions, type CompileTableOptions, type Condition, type ConditionalValueDef, DEFAULT_THEME, DIVERGING_PALETTES, type DarkMode, type DataRow, type DateGranularity, type Display, type DivergingPalette, EXTENDED_OFFSET_STRATEGIES, type ElementEdit, type ElementRef, type Encoding, type EncodingChannel, type EncodingRule, type EndpointLabelEntry, type EndpointLabelsConfig, type EndpointLabelsLayout, type FacetChannel, type FacetLayout, type FacetPanelLayout, type FieldPredicate, type FieldRef, type FieldType, type FilterPredicate, type FilterTransform, type FlagTableCell, type FoldTransform, GRAPH_ENCODING_RULES, type GradientColorStop, type GradientDef, type GradientLegendLayout, type GradientStop, type GraphChannelRule, type GraphEdge, type GraphEdgeLayout, type GraphEncoding, type GraphEncodingChannel, type GraphLayout, type GraphLayoutConfig, type GraphNode, type GraphNodeLayout, type GraphSpec, type GraphSpecWithoutData, type Gridline, HEIGHT_CRAMPED_MAX, HEIGHT_SHORT_MAX, HPAD_COMPACT_FRACTION, HPAD_COMPACT_MIN, type HeatmapColumnConfig, type HeatmapTableCell, type HeightClass, type ImageColumnConfig, type ImageTableCell, LABEL_GAP_COMPACT, LABEL_GAP_DEFAULT, LABEL_GAP_NARROW_MAX, type LabelCandidate, type LabelConfig, type LabelDensity, type LabelMode, type LabelPriority, type LabelSpec, type LayerSpec, type LayoutStrategy, type LegendConfig, type LegendEntry, type LegendEntryPosition, type LegendLayout, type LegendPosition, type LineEncoding, type LineMark, type LinearGradient, type LogicalAnd, type LogicalNot, type LogicalOr, type LollipopEncoding, MARK_DISPLAY_NAMES, MARK_ENCODING_RULES, MARK_TYPES, MAX_LEFT_LABEL_FRACTION_COMPACT, MAX_LEFT_LABEL_FRACTION_DEFAULT, MAX_LEFT_LABEL_FRACTION_MEDIUM, MAX_LEFT_LABEL_FRACTION_MEDIUM_MAX, type Margins, type Mark, type MarkAria, type MarkDef, type MarkEvent, type MarkType, type MeasureTextFn, type Metric, NARROW_VIEWPORT_MAX, type NodeOverride, OFFSET_STRATEGIES, type OffsetStrategy, type PaginationState, type Point, type PointEncoding, type PointMark, type RadialGradient, type RangeAnnotation, type Rect, type RectEncoding, type RectMark, type RefLineAnnotation, type RelativeTimeRef, type ResolveConfig, type ResolveMode, type ResolvedAnimation, type ResolvedAnimationPhase, type ResolvedAnnotation, type ResolvedChrome, type ResolvedChromeElement, type ResolvedColumn, type ResolvedLabel, type ResolvedMetricBar, type ResolvedMetricCell, type ResolvedTheme, type ResponsiveConfig, type RuleMarkLayout, SEQUENTIAL_PALETTES, type SankeyEncoding, type SankeyLayout, type SankeyLinkColor, type SankeyLinkMark, type SankeyNodeAlign, type SankeyNodeMark, type SankeySpec, type SankeySpecWithoutData, type ScaleConfig, type ScaleType, type SequentialPalette, type SeriesStrategy, type SeriesStyle, type SortState, type SparklineColumnConfig, type SparklineData, type SparklineTableCell, type StoredVizSpec, TICK_LABEL_OFFSET, TICK_LINE_HEIGHT_FACTOR, TOP_PAD_EXTRA_NARROW, TOP_PAD_NARROW_MAX, type TableBuilderOptions, type TableCell, type TableCellBase, type TableLayout, type TableRow, type TableSpec, type TableSpecWithoutData, type TextAnnotation, type TextEncoding, type TextMarkLayout, type TextStyle, type TextTableCell, type Theme, type ThemeChromeDefaults, type ThemeColors, type ThemeConfig, type ThemeFontSizes, type ThemeFontWeights, type ThemeFonts, type ThemeSpacing, type TickEncoding, type TickMarkLayout, type TileMapBuilderOptions, type TileMapEncoding, type TileMapLayout, type TileMapPalette, type TileMapSpec, type TileMapSpecWithoutData, type TileMapTileMark, type TimeUnit, type TimeUnitTransform, type TokenValue, type TooltipContent, type TooltipField, type Transform, type VizSpec, type WindowFieldDef, type WindowOp, type WindowSortField, type WindowTransform, type XAxisExtentInput, X_AXIS_BAND_HEIGHT, X_AXIS_ROTATED_EXTENT_CAP, X_AXIS_TITLE_BAND, X_AXIS_TITLE_BAND_ROTATED, abbreviateNumber, adaptColorForDarkMode, adaptForLightLineStroke, adaptTheme, areaChart, axisTitleOffset, barChart, buildD3Formatter, buildTemporalFormatter, checkPaletteDistinguishability, columnChart, computeChrome, computeLabelBounds, computeXAxisExtentFromLabels, contrastRatio, dataTable, detectCollision, donutChart, dotChart, editorial, elementRef, essay, estimateTextWidth, findAccessibleColor, formatDate, formatNumber, generateAltText, generateAriaLabels, generateDataTable, getAxisTitleOffset, getBreakpoint, getHeightClass, getLayoutStrategy, getRepresentativeColor, heuristicMeasure, inferFieldType, isBarListSpec, isChartSpec, isConditionalDef, isEncodingChannel, isGradientDef, isGraphSpec, isLayerSpec, isRangeAnnotation, isRefLineAnnotation, isSankeySpec, isTableSpec, isTextAnnotation, isTileMapSpec, lineChart, meetsAA, overlapArea, pickLabelColor, pieChart, resolveCollisions, resolveMarkDef, resolveMarkType, resolveMeasurer, resolveTheme, scatterChart, simulateColorBlindness, textAscent, tileMap, wire, wrapText };
|
package/dist/index.js
CHANGED
|
@@ -1230,6 +1230,8 @@ var MAX_LEFT_LABEL_FRACTION_DEFAULT = 1;
|
|
|
1230
1230
|
var X_AXIS_BAND_HEIGHT = 26;
|
|
1231
1231
|
var X_AXIS_TITLE_BAND = 22;
|
|
1232
1232
|
var X_AXIS_TITLE_BAND_ROTATED = 20;
|
|
1233
|
+
var X_AXIS_ROTATED_EXTENT_CAP = 120;
|
|
1234
|
+
var TICK_LINE_HEIGHT_FACTOR = 1.2;
|
|
1233
1235
|
function computeXAxisExtentFromLabels(input) {
|
|
1234
1236
|
const measure = input.measure ?? estimateTextWidth;
|
|
1235
1237
|
const baseHeight = input.xAxisHeight ?? X_AXIS_BAND_HEIGHT;
|
|
@@ -1240,11 +1242,11 @@ function computeXAxisExtentFromLabels(input) {
|
|
|
1240
1242
|
const w = measure(label, input.tickFontSize, input.tickFontWeight);
|
|
1241
1243
|
if (w > maxLabelWidth) maxLabelWidth = w;
|
|
1242
1244
|
}
|
|
1243
|
-
const lineHeight = input.tickFontSize *
|
|
1245
|
+
const lineHeight = input.tickFontSize * TICK_LINE_HEIGHT_FACTOR;
|
|
1244
1246
|
const AXIS_TO_LABEL_GAP = 3;
|
|
1245
1247
|
const rotatedHeight = Math.min(
|
|
1246
1248
|
maxLabelWidth * Math.sin(angleRad) + lineHeight * Math.cos(angleRad) + AXIS_TO_LABEL_GAP,
|
|
1247
|
-
|
|
1249
|
+
X_AXIS_ROTATED_EXTENT_CAP
|
|
1248
1250
|
);
|
|
1249
1251
|
return input.hasTitle ? rotatedHeight + X_AXIS_TITLE_BAND_ROTATED : rotatedHeight;
|
|
1250
1252
|
}
|
|
@@ -3196,15 +3198,29 @@ var GRANULARITY_FORMATS = {
|
|
|
3196
3198
|
hour: "%b %d %H:%M",
|
|
3197
3199
|
minute: "%H:%M"
|
|
3198
3200
|
};
|
|
3199
|
-
|
|
3201
|
+
var GRANULARITY_FORMATS_COMPACT = {
|
|
3202
|
+
year: "%Y",
|
|
3203
|
+
quarter: "",
|
|
3204
|
+
// special-cased below, like GRANULARITY_FORMATS
|
|
3205
|
+
month: "%b",
|
|
3206
|
+
week: "%b %d",
|
|
3207
|
+
day: "%b %d",
|
|
3208
|
+
hour: "%H:%M",
|
|
3209
|
+
minute: "%H:%M"
|
|
3210
|
+
};
|
|
3211
|
+
function formatDate(value, _locale, granularity, useUtc = true, compact = false) {
|
|
3200
3212
|
const date = value instanceof Date ? value : new Date(value);
|
|
3201
3213
|
if (Number.isNaN(date.getTime())) return String(value);
|
|
3202
3214
|
const gran = granularity ?? inferGranularity(date, useUtc);
|
|
3203
3215
|
if (gran === "quarter") {
|
|
3204
3216
|
const q = useUtc ? Math.ceil((date.getUTCMonth() + 1) / 3) : Math.ceil((date.getMonth() + 1) / 3);
|
|
3205
|
-
|
|
3217
|
+
const year = useUtc ? date.getUTCFullYear() : date.getFullYear();
|
|
3218
|
+
if (compact) {
|
|
3219
|
+
return `Q${q} '${String(year).slice(-2)}`;
|
|
3220
|
+
}
|
|
3221
|
+
return `Q${q} ${year}`;
|
|
3206
3222
|
}
|
|
3207
|
-
const formatStr = GRANULARITY_FORMATS[gran];
|
|
3223
|
+
const formatStr = (compact ? GRANULARITY_FORMATS_COMPACT : GRANULARITY_FORMATS)[gran];
|
|
3208
3224
|
if (useUtc) {
|
|
3209
3225
|
return utcFormat(formatStr)(date);
|
|
3210
3226
|
}
|
|
@@ -3535,9 +3551,11 @@ export {
|
|
|
3535
3551
|
OFFSET_STRATEGIES,
|
|
3536
3552
|
SEQUENTIAL_PALETTES,
|
|
3537
3553
|
TICK_LABEL_OFFSET,
|
|
3554
|
+
TICK_LINE_HEIGHT_FACTOR,
|
|
3538
3555
|
TOP_PAD_EXTRA_NARROW,
|
|
3539
3556
|
TOP_PAD_NARROW_MAX,
|
|
3540
3557
|
X_AXIS_BAND_HEIGHT,
|
|
3558
|
+
X_AXIS_ROTATED_EXTENT_CAP,
|
|
3541
3559
|
X_AXIS_TITLE_BAND,
|
|
3542
3560
|
X_AXIS_TITLE_BAND_ROTATED,
|
|
3543
3561
|
abbreviateNumber,
|