@praxisui/charts 9.0.0-beta.20 → 9.0.0-beta.22
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 +17 -1
- package/ai/component-registry.json +2 -2
- package/fesm2022/praxisui-charts.mjs +311 -2
- package/package.json +3 -3
- package/types/praxisui-charts.d.ts +34 -2
package/README.md
CHANGED
|
@@ -134,13 +134,29 @@ const chartDocument: PraxisXUiChartContract = {
|
|
|
134
134
|
|
|
135
135
|
Supported sizing modes are `fixed`, `fill-container` and `auto`. Prefer `fill-container` inside dashboard widget shells. Supported surface modes are `auto`, `embedded` and `contained`; prefer `embedded` when another shell owns the card, header or border.
|
|
136
136
|
|
|
137
|
+
## Micro Visualizations
|
|
138
|
+
|
|
139
|
+
`PraxisMicroVisualizationComponent` renders the first renderer-neutral presentation visualizations from `@praxisui/core`.
|
|
140
|
+
It is intended for compact presentation surfaces, especially table cells, list items and read-only form summaries.
|
|
141
|
+
|
|
142
|
+
The initial table-safe kinds are:
|
|
143
|
+
|
|
144
|
+
- `comparison`
|
|
145
|
+
- `stackedBar`
|
|
146
|
+
- `bullet`
|
|
147
|
+
- `delta`
|
|
148
|
+
|
|
149
|
+
The component does not instantiate ECharts. It renders lightweight HTML/CSS from `PraxisPresentationVisualizationConfig`
|
|
150
|
+
and falls back to `fallbackText` when the visualization kind is not supported by this first cut.
|
|
151
|
+
For `comparison`, use `points` as the canonical numeric series; `items` remains reserved for item/step-oriented visualizations such as process flow.
|
|
152
|
+
|
|
137
153
|
## Authoring Surface
|
|
138
154
|
|
|
139
155
|
`PraxisChartConfigEditor` is the initial editor shell for canonical `x-ui.chart` documents. It expects governed resources, fields and targets from the host and emits structured apply/save/reset events. The authoring manifest is exported as `PRAXIS_CHARTS_AUTHORING_MANIFEST` for backend/tooling workflows that need executable chart-edit operations.
|
|
140
156
|
|
|
141
157
|
## Public API Snapshot
|
|
142
158
|
|
|
143
|
-
Main exports include `PraxisChartComponent`, `PraxisChartConfigEditor`, chart event/config models, `PraxisXUiChartContract`, engine adapter tokens, `providePraxisCharts`, canonical mapping/normalization/validation services, analytics chart services, chart metadata and `PRAXIS_CHARTS_AUTHORING_MANIFEST`.
|
|
159
|
+
Main exports include `PraxisChartComponent`, `PraxisMicroVisualizationComponent`, `PraxisChartConfigEditor`, chart event/config models, `PraxisXUiChartContract`, engine adapter tokens, `providePraxisCharts`, canonical mapping/normalization/validation services, analytics chart services, chart metadata and `PRAXIS_CHARTS_AUTHORING_MANIFEST`.
|
|
144
160
|
|
|
145
161
|
## Official Links
|
|
146
162
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
|
-
"generatedAt": "2026-06-
|
|
3
|
+
"generatedAt": "2026-06-26T01:13:35.730Z",
|
|
4
4
|
"packageName": "@praxisui/charts",
|
|
5
|
-
"packageVersion": "9.0.0-beta.
|
|
5
|
+
"packageVersion": "9.0.0-beta.22",
|
|
6
6
|
"sourceRegistry": "praxis-component-registry-ingestion",
|
|
7
7
|
"sourceRegistryVersion": "1.0.0",
|
|
8
8
|
"componentCount": 2,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, Inject, InjectionToken, input, booleanAttribute, output, viewChild, inject, ElementRef, NgZone, DestroyRef, signal, computed, afterNextRender, effect, ChangeDetectionStrategy, Component, ViewChild, Input, ENVIRONMENT_INITIALIZER } from '@angular/core';
|
|
3
3
|
import * as i1$1 from '@praxisui/core';
|
|
4
|
-
import { buildApiUrl, API_URL, PraxisI18nService, SETTINGS_PANEL_BRIDGE, providePraxisI18n, SETTINGS_PANEL_DATA, ComponentMetadataRegistry, createDefaultTableConfig, AnalyticsStatsRequestBuilderService, DynamicWidgetPageComponent } from '@praxisui/core';
|
|
4
|
+
import { buildApiUrl, API_URL, PraxisI18nService, SETTINGS_PANEL_BRIDGE, normalizePraxisPresentationVisualization, providePraxisI18n, SETTINGS_PANEL_DATA, ComponentMetadataRegistry, createDefaultTableConfig, AnalyticsStatsRequestBuilderService, DynamicWidgetPageComponent } from '@praxisui/core';
|
|
5
5
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
6
|
import { throwError, map, of, isObservable, from, BehaviorSubject, Subscription } from 'rxjs';
|
|
7
7
|
import * as i1$2 from '@angular/material/button';
|
|
@@ -2935,6 +2935,315 @@ function normalizeRemoteDataResolverResult$1(result) {
|
|
|
2935
2935
|
return of([]);
|
|
2936
2936
|
}
|
|
2937
2937
|
|
|
2938
|
+
const SUPPORTED_KINDS = new Set([
|
|
2939
|
+
'comparison',
|
|
2940
|
+
'stackedBar',
|
|
2941
|
+
'bullet',
|
|
2942
|
+
'delta',
|
|
2943
|
+
]);
|
|
2944
|
+
class PraxisMicroVisualizationComponent {
|
|
2945
|
+
visualizationInput = input(null, { ...(ngDevMode ? { debugName: "visualizationInput" } : /* istanbul ignore next */ {}), alias: 'visualization' });
|
|
2946
|
+
fallbackInput = input('', { ...(ngDevMode ? { debugName: "fallbackInput" } : /* istanbul ignore next */ {}), alias: 'fallbackText' });
|
|
2947
|
+
visualization = computed(() => {
|
|
2948
|
+
const normalized = normalizePraxisPresentationVisualization(this.visualizationInput());
|
|
2949
|
+
return normalized && SUPPORTED_KINDS.has(normalized.kind)
|
|
2950
|
+
? normalized
|
|
2951
|
+
: null;
|
|
2952
|
+
}, ...(ngDevMode ? [{ debugName: "visualization" }] : /* istanbul ignore next */ []));
|
|
2953
|
+
fallbackText = computed(() => this.visualizationInput()?.fallbackText?.trim() || this.fallbackInput().trim(), ...(ngDevMode ? [{ debugName: "fallbackText" }] : /* istanbul ignore next */ []));
|
|
2954
|
+
kind = computed(() => this.visualization()?.kind ?? 'fallback', ...(ngDevMode ? [{ debugName: "kind" }] : /* istanbul ignore next */ []));
|
|
2955
|
+
surface = computed(() => this.visualization()?.surface ?? null, ...(ngDevMode ? [{ debugName: "surface" }] : /* istanbul ignore next */ []));
|
|
2956
|
+
size = computed(() => this.visualization()?.size ?? null, ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
|
|
2957
|
+
isTableCell = computed(() => this.surface() === 'table-cell', ...(ngDevMode ? [{ debugName: "isTableCell" }] : /* istanbul ignore next */ []));
|
|
2958
|
+
ariaLabel = computed(() => {
|
|
2959
|
+
const config = this.visualization();
|
|
2960
|
+
return config?.ariaLabel || config?.fallbackText || null;
|
|
2961
|
+
}, ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
2962
|
+
comparisonItems = computed(() => this.visualization()?.points ?? [], ...(ngDevMode ? [{ debugName: "comparisonItems" }] : /* istanbul ignore next */ []));
|
|
2963
|
+
stackedSegments = computed(() => this.visualization()?.segments ?? [], ...(ngDevMode ? [{ debugName: "stackedSegments" }] : /* istanbul ignore next */ []));
|
|
2964
|
+
bulletThresholds = computed(() => this.visualization()?.thresholds ?? [], ...(ngDevMode ? [{ debugName: "bulletThresholds" }] : /* istanbul ignore next */ []));
|
|
2965
|
+
bulletBands = computed(() => {
|
|
2966
|
+
const max = this.resolveBulletMax();
|
|
2967
|
+
let previous = 0;
|
|
2968
|
+
return this.bulletThresholds()
|
|
2969
|
+
.map((threshold) => {
|
|
2970
|
+
const current = Math.max(threshold.value, previous);
|
|
2971
|
+
const left = max > 0 ? clampPercent((previous / max) * 100) : 0;
|
|
2972
|
+
const width = max > 0 ? clampPercent(((current - previous) / max) * 100) : 0;
|
|
2973
|
+
previous = current;
|
|
2974
|
+
return {
|
|
2975
|
+
...(threshold.label ? { label: threshold.label } : {}),
|
|
2976
|
+
...(threshold.tone ? { tone: threshold.tone } : {}),
|
|
2977
|
+
left,
|
|
2978
|
+
width,
|
|
2979
|
+
};
|
|
2980
|
+
})
|
|
2981
|
+
.filter((band) => band.width > 0);
|
|
2982
|
+
}, ...(ngDevMode ? [{ debugName: "bulletBands" }] : /* istanbul ignore next */ []));
|
|
2983
|
+
deltaValue = computed(() => {
|
|
2984
|
+
const value = this.visualization()?.value;
|
|
2985
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : 0;
|
|
2986
|
+
}, ...(ngDevMode ? [{ debugName: "deltaValue" }] : /* istanbul ignore next */ []));
|
|
2987
|
+
deltaText = computed(() => {
|
|
2988
|
+
const config = this.visualization();
|
|
2989
|
+
if (!config) {
|
|
2990
|
+
return '';
|
|
2991
|
+
}
|
|
2992
|
+
return config.fallbackText || this.formatNumber(this.deltaValue());
|
|
2993
|
+
}, ...(ngDevMode ? [{ debugName: "deltaText" }] : /* istanbul ignore next */ []));
|
|
2994
|
+
deltaIcon = computed(() => {
|
|
2995
|
+
const fallbackText = this.visualization()?.fallbackText?.trim() ?? '';
|
|
2996
|
+
if (/^[+-]/.test(fallbackText)) {
|
|
2997
|
+
return '';
|
|
2998
|
+
}
|
|
2999
|
+
const value = this.deltaValue();
|
|
3000
|
+
if (value > 0) {
|
|
3001
|
+
return '+';
|
|
3002
|
+
}
|
|
3003
|
+
if (value < 0) {
|
|
3004
|
+
return '-';
|
|
3005
|
+
}
|
|
3006
|
+
return '';
|
|
3007
|
+
}, ...(ngDevMode ? [{ debugName: "deltaIcon" }] : /* istanbul ignore next */ []));
|
|
3008
|
+
itemPercent(value) {
|
|
3009
|
+
if (!Number.isFinite(value)) {
|
|
3010
|
+
return 0;
|
|
3011
|
+
}
|
|
3012
|
+
const values = this.comparisonItems()
|
|
3013
|
+
.map((item) => item.value)
|
|
3014
|
+
.filter((itemValue) => Number.isFinite(itemValue));
|
|
3015
|
+
const max = Math.max(...values, 0);
|
|
3016
|
+
return max > 0 ? clampPercent((value / max) * 100) : 0;
|
|
3017
|
+
}
|
|
3018
|
+
segmentPercent(value) {
|
|
3019
|
+
const total = this.stackedSegments()
|
|
3020
|
+
.reduce((sum, segment) => sum + Math.max(segment.value, 0), 0);
|
|
3021
|
+
return total > 0 ? clampPercent((Math.max(value, 0) / total) * 100) : 0;
|
|
3022
|
+
}
|
|
3023
|
+
valuePercent(value) {
|
|
3024
|
+
const max = this.resolveBulletMax();
|
|
3025
|
+
return typeof value === 'number' && max > 0 ? clampPercent((Math.max(value, 0) / max) * 100) : 0;
|
|
3026
|
+
}
|
|
3027
|
+
formatNumber(value) {
|
|
3028
|
+
return Number.isFinite(value)
|
|
3029
|
+
? new Intl.NumberFormat(undefined, { maximumFractionDigits: 1 }).format(value ?? 0)
|
|
3030
|
+
: '';
|
|
3031
|
+
}
|
|
3032
|
+
resolveBulletMax() {
|
|
3033
|
+
const config = this.visualization();
|
|
3034
|
+
const values = [
|
|
3035
|
+
typeof config?.value === 'number' ? config.value : 0,
|
|
3036
|
+
config?.target ?? 0,
|
|
3037
|
+
config?.total ?? 0,
|
|
3038
|
+
...this.bulletThresholds().map((threshold) => threshold.value),
|
|
3039
|
+
].filter((value) => Number.isFinite(value) && value > 0);
|
|
3040
|
+
return Math.max(...values, 100);
|
|
3041
|
+
}
|
|
3042
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisMicroVisualizationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
3043
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.14", type: PraxisMicroVisualizationComponent, isStandalone: true, selector: "praxis-micro-visualization", inputs: { visualizationInput: { classPropertyName: "visualizationInput", publicName: "visualization", isSignal: true, isRequired: false, transformFunction: null }, fallbackInput: { classPropertyName: "fallbackInput", publicName: "fallbackText", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.data-kind": "kind()", "attr.data-surface": "surface()", "attr.data-size": "size()", "class.prx-micro-visualization--table-cell": "surface() === \"table-cell\"" } }, ngImport: i0, template: `
|
|
3044
|
+
@if (visualization(); as config) {
|
|
3045
|
+
<figure
|
|
3046
|
+
class="prx-micro-visualization"
|
|
3047
|
+
[attr.aria-label]="ariaLabel()"
|
|
3048
|
+
role="img"
|
|
3049
|
+
>
|
|
3050
|
+
@switch (config.kind) {
|
|
3051
|
+
@case ('comparison') {
|
|
3052
|
+
<div class="prx-micro-comparison">
|
|
3053
|
+
@for (item of comparisonItems(); track item.label ?? $index) {
|
|
3054
|
+
<div class="prx-micro-comparison__row">
|
|
3055
|
+
@if (item.label) {
|
|
3056
|
+
<span class="prx-micro-comparison__label">{{ item.label }}</span>
|
|
3057
|
+
}
|
|
3058
|
+
<span class="prx-micro-comparison__track" aria-hidden="true">
|
|
3059
|
+
<span
|
|
3060
|
+
class="prx-micro-comparison__bar"
|
|
3061
|
+
[attr.data-tone]="item.tone || null"
|
|
3062
|
+
[style.width.%]="itemPercent(item.value)"
|
|
3063
|
+
></span>
|
|
3064
|
+
</span>
|
|
3065
|
+
@if (item.value !== undefined) {
|
|
3066
|
+
<span class="prx-micro-comparison__value">{{ formatNumber(item.value) }}</span>
|
|
3067
|
+
}
|
|
3068
|
+
</div>
|
|
3069
|
+
}
|
|
3070
|
+
</div>
|
|
3071
|
+
}
|
|
3072
|
+
|
|
3073
|
+
@case ('stackedBar') {
|
|
3074
|
+
<div class="prx-micro-stacked">
|
|
3075
|
+
<div class="prx-micro-stacked__track" aria-hidden="true">
|
|
3076
|
+
@for (segment of stackedSegments(); track segment.label ?? $index) {
|
|
3077
|
+
<span
|
|
3078
|
+
class="prx-micro-stacked__segment"
|
|
3079
|
+
[attr.data-tone]="segment.tone || null"
|
|
3080
|
+
[style.width.%]="segmentPercent(segment.value)"
|
|
3081
|
+
></span>
|
|
3082
|
+
}
|
|
3083
|
+
</div>
|
|
3084
|
+
@if (!isTableCell() && config.fallbackText) {
|
|
3085
|
+
<figcaption class="prx-micro-visualization__caption">{{ config.fallbackText }}</figcaption>
|
|
3086
|
+
}
|
|
3087
|
+
</div>
|
|
3088
|
+
}
|
|
3089
|
+
|
|
3090
|
+
@case ('bullet') {
|
|
3091
|
+
<div class="prx-micro-bullet">
|
|
3092
|
+
<div class="prx-micro-bullet__track" aria-hidden="true">
|
|
3093
|
+
@for (band of bulletBands(); track band.label ?? $index) {
|
|
3094
|
+
<span
|
|
3095
|
+
class="prx-micro-bullet__range"
|
|
3096
|
+
[attr.data-tone]="band.tone || null"
|
|
3097
|
+
[style.left.%]="band.left"
|
|
3098
|
+
[style.width.%]="band.width"
|
|
3099
|
+
></span>
|
|
3100
|
+
}
|
|
3101
|
+
<span
|
|
3102
|
+
class="prx-micro-bullet__actual"
|
|
3103
|
+
[attr.data-tone]="config.tone || null"
|
|
3104
|
+
[style.width.%]="valuePercent(config.value)"
|
|
3105
|
+
></span>
|
|
3106
|
+
@if (config.target !== undefined) {
|
|
3107
|
+
<span
|
|
3108
|
+
class="prx-micro-bullet__target"
|
|
3109
|
+
[style.left.%]="valuePercent(config.target)"
|
|
3110
|
+
></span>
|
|
3111
|
+
}
|
|
3112
|
+
</div>
|
|
3113
|
+
@if (!isTableCell()) {
|
|
3114
|
+
<figcaption class="prx-micro-visualization__caption">{{ config.fallbackText }}</figcaption>
|
|
3115
|
+
}
|
|
3116
|
+
</div>
|
|
3117
|
+
}
|
|
3118
|
+
|
|
3119
|
+
@case ('delta') {
|
|
3120
|
+
<div
|
|
3121
|
+
class="prx-micro-delta"
|
|
3122
|
+
[class.prx-micro-delta--positive]="deltaValue() > 0"
|
|
3123
|
+
[class.prx-micro-delta--negative]="deltaValue() < 0"
|
|
3124
|
+
>
|
|
3125
|
+
@if (deltaIcon(); as icon) {
|
|
3126
|
+
<span class="prx-micro-delta__icon" aria-hidden="true">{{ icon }}</span>
|
|
3127
|
+
}
|
|
3128
|
+
<span class="prx-micro-delta__value">{{ deltaText() }}</span>
|
|
3129
|
+
</div>
|
|
3130
|
+
}
|
|
3131
|
+
}
|
|
3132
|
+
</figure>
|
|
3133
|
+
} @else {
|
|
3134
|
+
<span class="prx-micro-visualization-fallback">{{ fallbackText() }}</span>
|
|
3135
|
+
}
|
|
3136
|
+
`, isInline: true, styles: [":host{display:inline-block;min-width:0;max-width:100%;color:var(--prx-micro-text-color, var(--md-sys-color-on-surface, #1f2937))}.prx-micro-visualization{display:block;min-width:0;margin:0}:host([data-size=\"xs\"]) .prx-micro-visualization{inline-size:var(--prx-micro-xs-width, 96px)}:host([data-size=\"sm\"]) .prx-micro-visualization{inline-size:var(--prx-micro-sm-width, 136px)}:host([data-size=\"md\"]) .prx-micro-visualization,:host([data-size=\"responsive\"]) .prx-micro-visualization{inline-size:100%}:host(.prx-micro-visualization--table-cell) .prx-micro-visualization{inline-size:var(--prx-micro-table-cell-width, 112px)}.prx-micro-comparison{display:grid;gap:3px}.prx-micro-comparison__row{display:grid;grid-template-columns:minmax(0,48px) minmax(32px,1fr) auto;align-items:center;gap:6px;min-block-size:12px}.prx-micro-comparison__label,.prx-micro-comparison__value,.prx-micro-visualization__caption,.prx-micro-visualization-fallback{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--prx-micro-font-size, 11px);line-height:1.2}.prx-micro-comparison__label{color:var(--prx-micro-label-color, var(--md-sys-color-on-surface-variant, #4b5563))}.prx-micro-comparison__value{justify-self:end;font-variant-numeric:tabular-nums}.prx-micro-comparison__track,.prx-micro-stacked__track,.prx-micro-bullet__track{position:relative;display:block;overflow:hidden;border-radius:var(--prx-micro-track-radius, 999px);background:var(--prx-micro-track-color, var(--md-sys-color-surface-container-high, #e5e7eb))}.prx-micro-comparison__track{block-size:5px}.prx-micro-comparison__bar,.prx-micro-stacked__segment,.prx-micro-bullet__range,.prx-micro-bullet__actual{display:block;min-inline-size:1px;background:var(--prx-micro-tone-neutral, var(--md-sys-color-secondary, #64748b))}.prx-micro-comparison__bar{block-size:100%}.prx-micro-stacked__track{display:flex;block-size:8px}.prx-micro-stacked__segment{block-size:100%}.prx-micro-bullet__track{block-size:10px}.prx-micro-bullet__range{position:absolute;inset-block:0;display:block;block-size:100%;opacity:.32}.prx-micro-bullet__actual{position:absolute;inset-block-start:3px;inset-inline-start:0;block-size:4px;border-radius:inherit}.prx-micro-bullet__target{position:absolute;inset-block:0;inline-size:2px;background:var(--prx-micro-target-color, var(--md-sys-color-on-surface, #111827))}.prx-micro-delta{display:inline-flex;align-items:center;gap:4px;min-inline-size:0;font-size:var(--prx-micro-font-size, 12px);line-height:1.2;font-variant-numeric:tabular-nums}.prx-micro-delta__icon{flex:0 0 auto}.prx-micro-delta__value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prx-micro-visualization__caption{display:block;margin-block-start:4px;color:var(--prx-micro-caption-color, var(--md-sys-color-on-surface-variant, #4b5563))}[data-tone=info]{background:var(--prx-micro-tone-info, var(--md-sys-color-primary, #2563eb));color:var(--prx-micro-tone-info-text, var(--md-sys-color-primary, #2563eb))}[data-tone=success]{background:var(--prx-micro-tone-success, #15803d);color:var(--prx-micro-tone-success-text, #15803d)}[data-tone=warning]{background:var(--prx-micro-tone-warning, #ca8a04);color:var(--prx-micro-tone-warning-text, #ca8a04)}[data-tone=danger],[data-tone=critical]{background:var(--prx-micro-tone-danger, var(--md-sys-color-error, #dc2626));color:var(--prx-micro-tone-danger-text, var(--md-sys-color-error, #dc2626))}.prx-micro-delta--positive{color:var(--prx-micro-tone-success-text, #15803d)}.prx-micro-delta--negative{color:var(--prx-micro-tone-danger-text, var(--md-sys-color-error, #dc2626))}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3137
|
+
}
|
|
3138
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.14", ngImport: i0, type: PraxisMicroVisualizationComponent, decorators: [{
|
|
3139
|
+
type: Component,
|
|
3140
|
+
args: [{ selector: 'praxis-micro-visualization', changeDetection: ChangeDetectionStrategy.OnPush, host: {
|
|
3141
|
+
'[attr.data-kind]': 'kind()',
|
|
3142
|
+
'[attr.data-surface]': 'surface()',
|
|
3143
|
+
'[attr.data-size]': 'size()',
|
|
3144
|
+
'[class.prx-micro-visualization--table-cell]': 'surface() === "table-cell"',
|
|
3145
|
+
}, template: `
|
|
3146
|
+
@if (visualization(); as config) {
|
|
3147
|
+
<figure
|
|
3148
|
+
class="prx-micro-visualization"
|
|
3149
|
+
[attr.aria-label]="ariaLabel()"
|
|
3150
|
+
role="img"
|
|
3151
|
+
>
|
|
3152
|
+
@switch (config.kind) {
|
|
3153
|
+
@case ('comparison') {
|
|
3154
|
+
<div class="prx-micro-comparison">
|
|
3155
|
+
@for (item of comparisonItems(); track item.label ?? $index) {
|
|
3156
|
+
<div class="prx-micro-comparison__row">
|
|
3157
|
+
@if (item.label) {
|
|
3158
|
+
<span class="prx-micro-comparison__label">{{ item.label }}</span>
|
|
3159
|
+
}
|
|
3160
|
+
<span class="prx-micro-comparison__track" aria-hidden="true">
|
|
3161
|
+
<span
|
|
3162
|
+
class="prx-micro-comparison__bar"
|
|
3163
|
+
[attr.data-tone]="item.tone || null"
|
|
3164
|
+
[style.width.%]="itemPercent(item.value)"
|
|
3165
|
+
></span>
|
|
3166
|
+
</span>
|
|
3167
|
+
@if (item.value !== undefined) {
|
|
3168
|
+
<span class="prx-micro-comparison__value">{{ formatNumber(item.value) }}</span>
|
|
3169
|
+
}
|
|
3170
|
+
</div>
|
|
3171
|
+
}
|
|
3172
|
+
</div>
|
|
3173
|
+
}
|
|
3174
|
+
|
|
3175
|
+
@case ('stackedBar') {
|
|
3176
|
+
<div class="prx-micro-stacked">
|
|
3177
|
+
<div class="prx-micro-stacked__track" aria-hidden="true">
|
|
3178
|
+
@for (segment of stackedSegments(); track segment.label ?? $index) {
|
|
3179
|
+
<span
|
|
3180
|
+
class="prx-micro-stacked__segment"
|
|
3181
|
+
[attr.data-tone]="segment.tone || null"
|
|
3182
|
+
[style.width.%]="segmentPercent(segment.value)"
|
|
3183
|
+
></span>
|
|
3184
|
+
}
|
|
3185
|
+
</div>
|
|
3186
|
+
@if (!isTableCell() && config.fallbackText) {
|
|
3187
|
+
<figcaption class="prx-micro-visualization__caption">{{ config.fallbackText }}</figcaption>
|
|
3188
|
+
}
|
|
3189
|
+
</div>
|
|
3190
|
+
}
|
|
3191
|
+
|
|
3192
|
+
@case ('bullet') {
|
|
3193
|
+
<div class="prx-micro-bullet">
|
|
3194
|
+
<div class="prx-micro-bullet__track" aria-hidden="true">
|
|
3195
|
+
@for (band of bulletBands(); track band.label ?? $index) {
|
|
3196
|
+
<span
|
|
3197
|
+
class="prx-micro-bullet__range"
|
|
3198
|
+
[attr.data-tone]="band.tone || null"
|
|
3199
|
+
[style.left.%]="band.left"
|
|
3200
|
+
[style.width.%]="band.width"
|
|
3201
|
+
></span>
|
|
3202
|
+
}
|
|
3203
|
+
<span
|
|
3204
|
+
class="prx-micro-bullet__actual"
|
|
3205
|
+
[attr.data-tone]="config.tone || null"
|
|
3206
|
+
[style.width.%]="valuePercent(config.value)"
|
|
3207
|
+
></span>
|
|
3208
|
+
@if (config.target !== undefined) {
|
|
3209
|
+
<span
|
|
3210
|
+
class="prx-micro-bullet__target"
|
|
3211
|
+
[style.left.%]="valuePercent(config.target)"
|
|
3212
|
+
></span>
|
|
3213
|
+
}
|
|
3214
|
+
</div>
|
|
3215
|
+
@if (!isTableCell()) {
|
|
3216
|
+
<figcaption class="prx-micro-visualization__caption">{{ config.fallbackText }}</figcaption>
|
|
3217
|
+
}
|
|
3218
|
+
</div>
|
|
3219
|
+
}
|
|
3220
|
+
|
|
3221
|
+
@case ('delta') {
|
|
3222
|
+
<div
|
|
3223
|
+
class="prx-micro-delta"
|
|
3224
|
+
[class.prx-micro-delta--positive]="deltaValue() > 0"
|
|
3225
|
+
[class.prx-micro-delta--negative]="deltaValue() < 0"
|
|
3226
|
+
>
|
|
3227
|
+
@if (deltaIcon(); as icon) {
|
|
3228
|
+
<span class="prx-micro-delta__icon" aria-hidden="true">{{ icon }}</span>
|
|
3229
|
+
}
|
|
3230
|
+
<span class="prx-micro-delta__value">{{ deltaText() }}</span>
|
|
3231
|
+
</div>
|
|
3232
|
+
}
|
|
3233
|
+
}
|
|
3234
|
+
</figure>
|
|
3235
|
+
} @else {
|
|
3236
|
+
<span class="prx-micro-visualization-fallback">{{ fallbackText() }}</span>
|
|
3237
|
+
}
|
|
3238
|
+
`, styles: [":host{display:inline-block;min-width:0;max-width:100%;color:var(--prx-micro-text-color, var(--md-sys-color-on-surface, #1f2937))}.prx-micro-visualization{display:block;min-width:0;margin:0}:host([data-size=\"xs\"]) .prx-micro-visualization{inline-size:var(--prx-micro-xs-width, 96px)}:host([data-size=\"sm\"]) .prx-micro-visualization{inline-size:var(--prx-micro-sm-width, 136px)}:host([data-size=\"md\"]) .prx-micro-visualization,:host([data-size=\"responsive\"]) .prx-micro-visualization{inline-size:100%}:host(.prx-micro-visualization--table-cell) .prx-micro-visualization{inline-size:var(--prx-micro-table-cell-width, 112px)}.prx-micro-comparison{display:grid;gap:3px}.prx-micro-comparison__row{display:grid;grid-template-columns:minmax(0,48px) minmax(32px,1fr) auto;align-items:center;gap:6px;min-block-size:12px}.prx-micro-comparison__label,.prx-micro-comparison__value,.prx-micro-visualization__caption,.prx-micro-visualization-fallback{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--prx-micro-font-size, 11px);line-height:1.2}.prx-micro-comparison__label{color:var(--prx-micro-label-color, var(--md-sys-color-on-surface-variant, #4b5563))}.prx-micro-comparison__value{justify-self:end;font-variant-numeric:tabular-nums}.prx-micro-comparison__track,.prx-micro-stacked__track,.prx-micro-bullet__track{position:relative;display:block;overflow:hidden;border-radius:var(--prx-micro-track-radius, 999px);background:var(--prx-micro-track-color, var(--md-sys-color-surface-container-high, #e5e7eb))}.prx-micro-comparison__track{block-size:5px}.prx-micro-comparison__bar,.prx-micro-stacked__segment,.prx-micro-bullet__range,.prx-micro-bullet__actual{display:block;min-inline-size:1px;background:var(--prx-micro-tone-neutral, var(--md-sys-color-secondary, #64748b))}.prx-micro-comparison__bar{block-size:100%}.prx-micro-stacked__track{display:flex;block-size:8px}.prx-micro-stacked__segment{block-size:100%}.prx-micro-bullet__track{block-size:10px}.prx-micro-bullet__range{position:absolute;inset-block:0;display:block;block-size:100%;opacity:.32}.prx-micro-bullet__actual{position:absolute;inset-block-start:3px;inset-inline-start:0;block-size:4px;border-radius:inherit}.prx-micro-bullet__target{position:absolute;inset-block:0;inline-size:2px;background:var(--prx-micro-target-color, var(--md-sys-color-on-surface, #111827))}.prx-micro-delta{display:inline-flex;align-items:center;gap:4px;min-inline-size:0;font-size:var(--prx-micro-font-size, 12px);line-height:1.2;font-variant-numeric:tabular-nums}.prx-micro-delta__icon{flex:0 0 auto}.prx-micro-delta__value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prx-micro-visualization__caption{display:block;margin-block-start:4px;color:var(--prx-micro-caption-color, var(--md-sys-color-on-surface-variant, #4b5563))}[data-tone=info]{background:var(--prx-micro-tone-info, var(--md-sys-color-primary, #2563eb));color:var(--prx-micro-tone-info-text, var(--md-sys-color-primary, #2563eb))}[data-tone=success]{background:var(--prx-micro-tone-success, #15803d);color:var(--prx-micro-tone-success-text, #15803d)}[data-tone=warning]{background:var(--prx-micro-tone-warning, #ca8a04);color:var(--prx-micro-tone-warning-text, #ca8a04)}[data-tone=danger],[data-tone=critical]{background:var(--prx-micro-tone-danger, var(--md-sys-color-error, #dc2626));color:var(--prx-micro-tone-danger-text, var(--md-sys-color-error, #dc2626))}.prx-micro-delta--positive{color:var(--prx-micro-tone-success-text, #15803d)}.prx-micro-delta--negative{color:var(--prx-micro-tone-danger-text, var(--md-sys-color-error, #dc2626))}\n"] }]
|
|
3239
|
+
}], propDecorators: { visualizationInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "visualization", required: false }] }], fallbackInput: [{ type: i0.Input, args: [{ isSignal: true, alias: "fallbackText", required: false }] }] } });
|
|
3240
|
+
function clampPercent(value) {
|
|
3241
|
+
if (!Number.isFinite(value)) {
|
|
3242
|
+
return 0;
|
|
3243
|
+
}
|
|
3244
|
+
return Math.min(Math.max(value, 0), 100);
|
|
3245
|
+
}
|
|
3246
|
+
|
|
2938
3247
|
const PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH = {
|
|
2939
3248
|
Jan: [
|
|
2940
3249
|
{ segment: 'Enterprise', total: 52000 },
|
|
@@ -7276,4 +7585,4 @@ const PRAXIS_CHARTS_AUTHORING_MANIFEST = {
|
|
|
7276
7585
|
* Generated bundle index. Do not edit.
|
|
7277
7586
|
*/
|
|
7278
7587
|
|
|
7279
|
-
export { AnalyticsChartConfigAdapterService, AnalyticsChartContractService, ChartContractNormalizerService, ChartContractValidationService, ChartEditorDefaultsService, ChartEditorPreviewMapperService, PRAXIS_CHARTS_AUTHORING_MANIFEST, PRAXIS_CHARTS_I18N, PRAXIS_CHART_BACKEND_MOCK_BAR, PRAXIS_CHART_BACKEND_MOCK_COMBO, PRAXIS_CHART_BACKEND_MOCK_DONUT, PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR, PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR, PRAXIS_CHART_BACKEND_MOCK_SCATTER, PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA, PRAXIS_CHART_BACKEND_MOCK_TIMESERIES, PRAXIS_CHART_COMPONENT_METADATA, PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH, PRAXIS_CHART_DRILLDOWN_PANEL_METADATA, PRAXIS_CHART_ENGINE, PRAXIS_CHART_PALETTE_TOKENS, PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA, PRAXIS_CHART_THEME_VARIANTS, PraxisChartBackendPayloadAdapterService, PraxisChartCanonicalContractMapperService, PraxisChartComponent, PraxisChartCompositionShowcaseComponent, PraxisChartConfigEditor, PraxisChartDataTransformerService, PraxisChartDrilldownPanelComponent, PraxisChartOptionBuilderService, PraxisChartSchemaMapperService, PraxisChartStateProbeComponent, PraxisChartStatsApiService, PraxisChartWidgetConfigEditor, buildPraxisChartInteractiveCanvasPage, buildPraxisChartInteractiveWidgetPage, buildPraxisChartMockCanvasPage, buildPraxisChartMockWidgetPage, createPraxisChartsI18nConfig, isPraxisChartPaletteToken, providePraxisChartDrilldownPanelMetadata, providePraxisChartStateProbeMetadata, providePraxisCharts, providePraxisChartsI18n, providePraxisChartsMetadata, resolvePraxisChartPaletteToken, resolvePraxisChartsText };
|
|
7588
|
+
export { AnalyticsChartConfigAdapterService, AnalyticsChartContractService, ChartContractNormalizerService, ChartContractValidationService, ChartEditorDefaultsService, ChartEditorPreviewMapperService, PRAXIS_CHARTS_AUTHORING_MANIFEST, PRAXIS_CHARTS_I18N, PRAXIS_CHART_BACKEND_MOCK_BAR, PRAXIS_CHART_BACKEND_MOCK_COMBO, PRAXIS_CHART_BACKEND_MOCK_DONUT, PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR, PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR, PRAXIS_CHART_BACKEND_MOCK_SCATTER, PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA, PRAXIS_CHART_BACKEND_MOCK_TIMESERIES, PRAXIS_CHART_COMPONENT_METADATA, PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH, PRAXIS_CHART_DRILLDOWN_PANEL_METADATA, PRAXIS_CHART_ENGINE, PRAXIS_CHART_PALETTE_TOKENS, PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA, PRAXIS_CHART_THEME_VARIANTS, PraxisChartBackendPayloadAdapterService, PraxisChartCanonicalContractMapperService, PraxisChartComponent, PraxisChartCompositionShowcaseComponent, PraxisChartConfigEditor, PraxisChartDataTransformerService, PraxisChartDrilldownPanelComponent, PraxisChartOptionBuilderService, PraxisChartSchemaMapperService, PraxisChartStateProbeComponent, PraxisChartStatsApiService, PraxisChartWidgetConfigEditor, PraxisMicroVisualizationComponent, buildPraxisChartInteractiveCanvasPage, buildPraxisChartInteractiveWidgetPage, buildPraxisChartMockCanvasPage, buildPraxisChartMockWidgetPage, createPraxisChartsI18nConfig, isPraxisChartPaletteToken, providePraxisChartDrilldownPanelMetadata, providePraxisChartStateProbeMetadata, providePraxisCharts, providePraxisChartsI18n, providePraxisChartsMetadata, resolvePraxisChartPaletteToken, resolvePraxisChartsText };
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@praxisui/charts",
|
|
3
|
-
"version": "9.0.0-beta.
|
|
3
|
+
"version": "9.0.0-beta.22",
|
|
4
4
|
"description": "Metadata-driven charts library for Praxis UI Angular with engine adapters and Apache ECharts as the initial renderer.",
|
|
5
5
|
"peerDependencies": {
|
|
6
6
|
"@angular/common": "^21.0.0",
|
|
7
7
|
"@angular/core": "^21.0.0",
|
|
8
|
-
"@praxisui/core": "^9.0.0-beta.
|
|
8
|
+
"@praxisui/core": "^9.0.0-beta.22",
|
|
9
9
|
"@angular/forms": "^21.0.0",
|
|
10
10
|
"@angular/material": "^21.0.0",
|
|
11
|
-
"@praxisui/table": "^9.0.0-beta.
|
|
11
|
+
"@praxisui/table": "^9.0.0-beta.22",
|
|
12
12
|
"rxjs": "~7.8.0"
|
|
13
13
|
},
|
|
14
14
|
"dependencies": {
|
|
@@ -2,7 +2,7 @@ import * as _praxisui_charts from '@praxisui/charts';
|
|
|
2
2
|
import * as _angular_core from '@angular/core';
|
|
3
3
|
import { InjectionToken, Provider, AfterViewInit, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
|
|
4
4
|
import * as _praxisui_core from '@praxisui/core';
|
|
5
|
-
import { PraxisTextValue, WidgetDefinition, WidgetShellConfig, WidgetInstance, ComponentMetadataRegistry, ApiUrlConfig, PraxisI18nService, PraxisAnalyticsProjection, AnalyticsSchemaContractService, AnalyticsPresentationResolver, WidgetPageDefinition, SettingsValueProvider, PraxisI18nDictionary, PraxisI18nConfig, PraxisI18nMessageDescriptor, ComponentAuthoringManifest, ComponentDocMeta } from '@praxisui/core';
|
|
5
|
+
import { PraxisTextValue, PraxisPresentationVisualizationConfig, PraxisPresentationVisualizationPoint, PraxisPresentationVisualizationSegment, PraxisPresentationVisualizationThreshold, WidgetDefinition, WidgetShellConfig, WidgetInstance, ComponentMetadataRegistry, ApiUrlConfig, PraxisI18nService, PraxisAnalyticsProjection, AnalyticsSchemaContractService, AnalyticsPresentationResolver, WidgetPageDefinition, SettingsValueProvider, PraxisI18nDictionary, PraxisI18nConfig, PraxisI18nMessageDescriptor, ComponentAuthoringManifest, ComponentDocMeta } from '@praxisui/core';
|
|
6
6
|
import { Observable, BehaviorSubject } from 'rxjs';
|
|
7
7
|
import { EChartsCoreOption } from 'echarts';
|
|
8
8
|
import { HttpClient } from '@angular/common/http';
|
|
@@ -531,6 +531,38 @@ declare class PraxisChartComponent {
|
|
|
531
531
|
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisChartComponent, "praxis-chart", never, { "config": { "alias": "config"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; "isSignal": true; }; "chartDocument": { "alias": "chartDocument"; "required": false; "isSignal": true; }; "filterCriteria": { "alias": "filterCriteria"; "required": false; "isSignal": true; }; "queryContext": { "alias": "queryContext"; "required": false; "isSignal": true; }; "remoteDataResolver": { "alias": "remoteDataResolver"; "required": false; "isSignal": true; }; "enableCustomization": { "alias": "enableCustomization"; "required": false; "isSignal": true; }; "availableResources": { "alias": "availableResources"; "required": false; "isSignal": true; }; "availableFields": { "alias": "availableFields"; "required": false; "isSignal": true; }; "availableTargets": { "alias": "availableTargets"; "required": false; "isSignal": true; }; }, { "pointClick": "pointClick"; "selectionChange": "selectionChange"; "crossFilter": "crossFilter"; "queryRequest": "queryRequest"; "loadStateChange": "loadStateChange"; "chartDocumentApplied": "chartDocumentApplied"; "chartDocumentSaved": "chartDocumentSaved"; }, never, never, true, never>;
|
|
532
532
|
}
|
|
533
533
|
|
|
534
|
+
interface BulletBand {
|
|
535
|
+
label?: string;
|
|
536
|
+
tone?: PraxisPresentationVisualizationThreshold['tone'];
|
|
537
|
+
left: number;
|
|
538
|
+
width: number;
|
|
539
|
+
}
|
|
540
|
+
declare class PraxisMicroVisualizationComponent {
|
|
541
|
+
visualizationInput: _angular_core.InputSignal<PraxisPresentationVisualizationConfig | null>;
|
|
542
|
+
fallbackInput: _angular_core.InputSignal<string>;
|
|
543
|
+
readonly visualization: _angular_core.Signal<PraxisPresentationVisualizationConfig | null>;
|
|
544
|
+
readonly fallbackText: _angular_core.Signal<string>;
|
|
545
|
+
readonly kind: _angular_core.Signal<"fallback" | _praxisui_core.PraxisPresentationVisualizationKind>;
|
|
546
|
+
readonly surface: _angular_core.Signal<_praxisui_core.PraxisPresentationVisualizationSurface | null>;
|
|
547
|
+
readonly size: _angular_core.Signal<_praxisui_core.PraxisPresentationVisualizationSize | null>;
|
|
548
|
+
readonly isTableCell: _angular_core.Signal<boolean>;
|
|
549
|
+
readonly ariaLabel: _angular_core.Signal<string | null>;
|
|
550
|
+
readonly comparisonItems: _angular_core.Signal<PraxisPresentationVisualizationPoint[]>;
|
|
551
|
+
readonly stackedSegments: _angular_core.Signal<PraxisPresentationVisualizationSegment[]>;
|
|
552
|
+
readonly bulletThresholds: _angular_core.Signal<PraxisPresentationVisualizationThreshold[]>;
|
|
553
|
+
readonly bulletBands: _angular_core.Signal<BulletBand[]>;
|
|
554
|
+
readonly deltaValue: _angular_core.Signal<number>;
|
|
555
|
+
readonly deltaText: _angular_core.Signal<string>;
|
|
556
|
+
readonly deltaIcon: _angular_core.Signal<"" | "-" | "+">;
|
|
557
|
+
itemPercent(value: PraxisPresentationVisualizationPoint['value']): number;
|
|
558
|
+
segmentPercent(value: PraxisPresentationVisualizationSegment['value']): number;
|
|
559
|
+
valuePercent(value: unknown): number;
|
|
560
|
+
formatNumber(value: number | undefined): string;
|
|
561
|
+
private resolveBulletMax;
|
|
562
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<PraxisMicroVisualizationComponent, never>;
|
|
563
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<PraxisMicroVisualizationComponent, "praxis-micro-visualization", never, { "visualizationInput": { "alias": "visualization"; "required": false; "isSignal": true; }; "fallbackInput": { "alias": "fallbackText"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
564
|
+
}
|
|
565
|
+
|
|
534
566
|
declare class PraxisChartDrilldownPanelComponent {
|
|
535
567
|
readonly title: _angular_core.InputSignal<string>;
|
|
536
568
|
readonly selection: _angular_core.InputSignal<PraxisChartPointEvent | null>;
|
|
@@ -1334,5 +1366,5 @@ declare function providePraxisChartDrilldownPanelMetadata(): Provider;
|
|
|
1334
1366
|
declare const PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA: ComponentDocMeta;
|
|
1335
1367
|
declare function providePraxisChartStateProbeMetadata(): Provider;
|
|
1336
1368
|
|
|
1337
|
-
export { AnalyticsChartConfigAdapterService, AnalyticsChartContractService, ChartContractNormalizerService, ChartContractValidationService, ChartEditorDefaultsService, ChartEditorPreviewMapperService, PRAXIS_CHARTS_AUTHORING_MANIFEST, PRAXIS_CHARTS_I18N, PRAXIS_CHART_BACKEND_MOCK_BAR, PRAXIS_CHART_BACKEND_MOCK_COMBO, PRAXIS_CHART_BACKEND_MOCK_DONUT, PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR, PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR, PRAXIS_CHART_BACKEND_MOCK_SCATTER, PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA, PRAXIS_CHART_BACKEND_MOCK_TIMESERIES, PRAXIS_CHART_COMPONENT_METADATA, PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH, PRAXIS_CHART_DRILLDOWN_PANEL_METADATA, PRAXIS_CHART_ENGINE, PRAXIS_CHART_PALETTE_TOKENS, PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA, PRAXIS_CHART_THEME_VARIANTS, PraxisChartBackendPayloadAdapterService, PraxisChartCanonicalContractMapperService, PraxisChartComponent, PraxisChartCompositionShowcaseComponent, PraxisChartConfigEditor, PraxisChartDataTransformerService, PraxisChartDrilldownPanelComponent, PraxisChartOptionBuilderService, PraxisChartSchemaMapperService, PraxisChartStateProbeComponent, PraxisChartStatsApiService, PraxisChartWidgetConfigEditor, buildPraxisChartInteractiveCanvasPage, buildPraxisChartInteractiveWidgetPage, buildPraxisChartMockCanvasPage, buildPraxisChartMockWidgetPage, createPraxisChartsI18nConfig, isPraxisChartPaletteToken, providePraxisChartDrilldownPanelMetadata, providePraxisChartStateProbeMetadata, providePraxisCharts, providePraxisChartsI18n, providePraxisChartsMetadata, resolvePraxisChartPaletteToken, resolvePraxisChartsText };
|
|
1369
|
+
export { AnalyticsChartConfigAdapterService, AnalyticsChartContractService, ChartContractNormalizerService, ChartContractValidationService, ChartEditorDefaultsService, ChartEditorPreviewMapperService, PRAXIS_CHARTS_AUTHORING_MANIFEST, PRAXIS_CHARTS_I18N, PRAXIS_CHART_BACKEND_MOCK_BAR, PRAXIS_CHART_BACKEND_MOCK_COMBO, PRAXIS_CHART_BACKEND_MOCK_DONUT, PRAXIS_CHART_BACKEND_MOCK_HORIZONTAL_BAR, PRAXIS_CHART_BACKEND_MOCK_MULTI_METRIC_BAR, PRAXIS_CHART_BACKEND_MOCK_SCATTER, PRAXIS_CHART_BACKEND_MOCK_STACKED_AREA, PRAXIS_CHART_BACKEND_MOCK_TIMESERIES, PRAXIS_CHART_COMPONENT_METADATA, PRAXIS_CHART_DRILLDOWN_DATA_BY_MONTH, PRAXIS_CHART_DRILLDOWN_PANEL_METADATA, PRAXIS_CHART_ENGINE, PRAXIS_CHART_PALETTE_TOKENS, PRAXIS_CHART_STATE_PROBE_COMPONENT_METADATA, PRAXIS_CHART_THEME_VARIANTS, PraxisChartBackendPayloadAdapterService, PraxisChartCanonicalContractMapperService, PraxisChartComponent, PraxisChartCompositionShowcaseComponent, PraxisChartConfigEditor, PraxisChartDataTransformerService, PraxisChartDrilldownPanelComponent, PraxisChartOptionBuilderService, PraxisChartSchemaMapperService, PraxisChartStateProbeComponent, PraxisChartStatsApiService, PraxisChartWidgetConfigEditor, PraxisMicroVisualizationComponent, buildPraxisChartInteractiveCanvasPage, buildPraxisChartInteractiveWidgetPage, buildPraxisChartMockCanvasPage, buildPraxisChartMockWidgetPage, createPraxisChartsI18nConfig, isPraxisChartPaletteToken, providePraxisChartDrilldownPanelMetadata, providePraxisChartStateProbeMetadata, providePraxisCharts, providePraxisChartsI18n, providePraxisChartsMetadata, resolvePraxisChartPaletteToken, resolvePraxisChartsText };
|
|
1338
1370
|
export type { AnalyticsChartConfigAdapterOptions, AnalyticsChartContractDefinition, AnalyticsChartContractLoadOptions, AnalyticsChartContractLoadResult, AnalyticsChartContractSource, ChartConfigEditorApplyEvent, ChartConfigEditorResetEvent, ChartConfigEditorSaveEvent, ChartContractIssueSeverity, ChartContractValidationIssue, ChartContractValidationResult, ChartEditorFieldOption, ChartEditorPreviewPayload, ChartEditorResourceOption, ChartEditorTargetOption, PraxisChartAggregation, PraxisChartAxisConfig, PraxisChartAxisLabelConfig, PraxisChartAxisPosition, PraxisChartAxisType, PraxisChartBackendPayload, PraxisChartBackendWidgetPayload, PraxisChartCanvasItem, PraxisChartCartesianSeries, PraxisChartConfig, PraxisChartConfigEditorData, PraxisChartCrossFilterEvent, PraxisChartDataRow, PraxisChartDataSource, PraxisChartDeclarativeEventAction, PraxisChartDistributionStatsRequest, PraxisChartEmptyStateConfig, PraxisChartEngineAdapter, PraxisChartEngineRenderPayload, PraxisChartErrorStateConfig, PraxisChartGroupByStatsRequest, PraxisChartInteractionConfig, PraxisChartLegendConfig, PraxisChartLoadState, PraxisChartLocalDataSource, PraxisChartMetricConfig, PraxisChartMotionConfig, PraxisChartMotionPreset, PraxisChartPaletteToken, PraxisChartPieSlice, PraxisChartPointEvent, PraxisChartPrimitive, PraxisChartQueryConfig, PraxisChartQueryContext, PraxisChartQueryMetricConfig, PraxisChartQueryRequestEvent, PraxisChartRemoteDataResolver, PraxisChartRemoteDataResolverResult, PraxisChartRemoteDataSource, PraxisChartSchemaMeta, PraxisChartSelectionEvent, PraxisChartSeriesConfig, PraxisChartSeriesLabelConfig, PraxisChartSizingConfig, PraxisChartSizingMode, PraxisChartStateConfig, PraxisChartStatsDistributionMode, PraxisChartStatsGranularity, PraxisChartStatsMetricOperation, PraxisChartStatsMetricRequest, PraxisChartStatsOperation, PraxisChartStatsOrderBy, PraxisChartStatsRequest, PraxisChartSurfaceConfig, PraxisChartSurfaceMode, PraxisChartThemeConfig, PraxisChartThemeVariant, PraxisChartTimeSeriesStatsRequest, PraxisChartTooltipConfig, PraxisChartTransformedData, PraxisChartType, PraxisChartWidgetEditorInputs, PraxisChartWidgetEditorValue, PraxisChartWidgetInstance, PraxisChartWidgetLike, PraxisChartWidgetResolution, PraxisChartWidgetSchema, PraxisChartsI18nOptions, PraxisChartsText, PraxisXUiChartAggregation, PraxisXUiChartAggregationConfig, PraxisXUiChartContract, PraxisXUiChartDimension, PraxisXUiChartEventAction, PraxisXUiChartEvents, PraxisXUiChartFilter, PraxisXUiChartKind, PraxisXUiChartMetric, PraxisXUiChartMotion, PraxisXUiChartMotionPreset, PraxisXUiChartPreset, PraxisXUiChartRefresh, PraxisXUiChartRuntimeHints, PraxisXUiChartSizing, PraxisXUiChartSizingMode, PraxisXUiChartSort, PraxisXUiChartSource, PraxisXUiChartSourceKind, PraxisXUiChartState, PraxisXUiChartStateDescriptor, PraxisXUiChartStatsDistributionMode, PraxisXUiChartStatsOperation, PraxisXUiChartStatsOrderBy, PraxisXUiChartStatsSourceOptions, PraxisXUiChartSurface, PraxisXUiChartSurfaceMode, PraxisXUiChartTextValue, PraxisXUiChartTheme, PraxisXUiChartToggleableFeature };
|