@seed-ship/mcp-ui-solid 6.22.0 → 6.24.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/CHANGELOG.md +219 -0
- package/README.md +209 -2
- package/dist/components/ChartJSRenderer.cjs +192 -66
- package/dist/components/ChartJSRenderer.cjs.map +1 -1
- package/dist/components/ChartJSRenderer.d.ts.map +1 -1
- package/dist/components/ChartJSRenderer.js +192 -66
- package/dist/components/ChartJSRenderer.js.map +1 -1
- package/dist/components/DegradedFallback.cjs +34 -2
- package/dist/components/DegradedFallback.cjs.map +1 -1
- package/dist/components/DegradedFallback.d.ts +7 -0
- package/dist/components/DegradedFallback.d.ts.map +1 -1
- package/dist/components/DegradedFallback.js +34 -2
- package/dist/components/DegradedFallback.js.map +1 -1
- package/dist/components/MissingValue.cjs +43 -0
- package/dist/components/MissingValue.cjs.map +1 -0
- package/dist/components/MissingValue.d.ts +27 -0
- package/dist/components/MissingValue.d.ts.map +1 -0
- package/dist/components/MissingValue.js +43 -0
- package/dist/components/MissingValue.js.map +1 -0
- package/dist/components/UIResourceRenderer.cjs +250 -202
- package/dist/components/UIResourceRenderer.cjs.map +1 -1
- package/dist/components/UIResourceRenderer.d.ts +2 -1
- package/dist/components/UIResourceRenderer.d.ts.map +1 -1
- package/dist/components/UIResourceRenderer.js +250 -202
- package/dist/components/UIResourceRenderer.js.map +1 -1
- package/dist/components/chart-data-table.cjs +30 -5
- package/dist/components/chart-data-table.cjs.map +1 -1
- package/dist/components/chart-data-table.d.ts +18 -1
- package/dist/components/chart-data-table.d.ts.map +1 -1
- package/dist/components/chart-data-table.js +30 -5
- package/dist/components/chart-data-table.js.map +1 -1
- package/dist/components/chart-missing-plugin.cjs +194 -0
- package/dist/components/chart-missing-plugin.cjs.map +1 -0
- package/dist/components/chart-missing-plugin.d.ts +127 -0
- package/dist/components/chart-missing-plugin.d.ts.map +1 -0
- package/dist/components/chart-missing-plugin.js +194 -0
- package/dist/components/chart-missing-plugin.js.map +1 -0
- package/dist/context/MCPUIConfigContext.cjs.map +1 -1
- package/dist/context/MCPUIConfigContext.d.ts +57 -28
- package/dist/context/MCPUIConfigContext.d.ts.map +1 -1
- package/dist/context/MCPUIConfigContext.js.map +1 -1
- package/dist/context/MCPUIMathContext.cjs +19 -0
- package/dist/context/MCPUIMathContext.cjs.map +1 -0
- package/dist/context/MCPUIMathContext.d.ts +18 -0
- package/dist/context/MCPUIMathContext.d.ts.map +1 -0
- package/dist/context/MCPUIMathContext.js +19 -0
- package/dist/context/MCPUIMathContext.js.map +1 -0
- package/dist/context/MCPUIStringsContext.cjs +12 -1
- package/dist/context/MCPUIStringsContext.cjs.map +1 -1
- package/dist/context/MCPUIStringsContext.d.ts +62 -0
- package/dist/context/MCPUIStringsContext.d.ts.map +1 -1
- package/dist/context/MCPUIStringsContext.js +12 -1
- package/dist/context/MCPUIStringsContext.js.map +1 -1
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/plugins/katex.cjs +23 -0
- package/dist/plugins/katex.cjs.map +1 -0
- package/dist/plugins/katex.d.cts +7 -0
- package/dist/plugins/katex.d.ts +7 -0
- package/dist/plugins/katex.d.ts.map +1 -0
- package/dist/plugins/katex.js +23 -0
- package/dist/plugins/katex.js.map +1 -0
- package/dist/services/component-registry.cjs +9 -2
- package/dist/services/component-registry.cjs.map +1 -1
- package/dist/services/component-registry.d.ts.map +1 -1
- package/dist/services/component-registry.js +9 -2
- package/dist/services/component-registry.js.map +1 -1
- package/dist/services/validation.cjs +31 -8
- package/dist/services/validation.cjs.map +1 -1
- package/dist/services/validation.d.ts.map +1 -1
- package/dist/services/validation.js +31 -8
- package/dist/services/validation.js.map +1 -1
- package/dist/types/index.d.ts +14 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/degraded-projections.cjs +19 -3
- package/dist/utils/degraded-projections.cjs.map +1 -1
- package/dist/utils/degraded-projections.d.ts +22 -2
- package/dist/utils/degraded-projections.d.ts.map +1 -1
- package/dist/utils/degraded-projections.js +19 -3
- package/dist/utils/degraded-projections.js.map +1 -1
- package/dist/utils/iframe-coep.cjs.map +1 -1
- package/dist/utils/iframe-coep.d.ts +7 -6
- package/dist/utils/iframe-coep.d.ts.map +1 -1
- package/dist/utils/iframe-coep.js.map +1 -1
- package/dist/utils/math-markdown.cjs +240 -0
- package/dist/utils/math-markdown.cjs.map +1 -0
- package/dist/utils/math-markdown.d.ts +16 -0
- package/dist/utils/math-markdown.d.ts.map +1 -0
- package/dist/utils/math-markdown.js +240 -0
- package/dist/utils/math-markdown.js.map +1 -0
- package/dist/utils/missing-value.cjs +60 -0
- package/dist/utils/missing-value.cjs.map +1 -0
- package/dist/utils/missing-value.d.ts +79 -0
- package/dist/utils/missing-value.d.ts.map +1 -0
- package/dist/utils/missing-value.js +60 -0
- package/dist/utils/missing-value.js.map +1 -0
- package/package.json +23 -4
- package/src/components/ChartJSRenderer.tsx +159 -6
- package/src/components/DegradedFallback.tsx +24 -2
- package/src/components/MissingValue.tsx +61 -0
- package/src/components/UIResourceRenderer.tsx +64 -10
- package/src/components/chart-data-table.ts +50 -6
- package/src/components/chart-missing-plugin.ts +334 -0
- package/src/context/MCPUIConfigContext.tsx +57 -28
- package/src/context/MCPUIMathContext.tsx +32 -0
- package/src/context/MCPUIStringsContext.tsx +76 -0
- package/src/index.ts +4 -0
- package/src/plugins/katex.ts +25 -0
- package/src/services/component-registry.ts +10 -2
- package/src/services/validation.ts +44 -9
- package/src/types/index.ts +13 -1
- package/src/utils/degraded-projections.ts +44 -4
- package/src/utils/iframe-coep.ts +7 -6
- package/src/utils/math-markdown.ts +222 -0
- package/src/utils/missing-value.ts +127 -0
|
@@ -2,12 +2,15 @@ import { createComponent, getNextElement, getNextMarker, insert, effect, setAttr
|
|
|
2
2
|
import { createSignal, createMemo, createUniqueId, createEffect, untrack, onCleanup, Show, For } from "solid-js";
|
|
3
3
|
import { ExpandableWrapper, useExpanded } from "./ExpandableWrapper.js";
|
|
4
4
|
import { DegradedFallback } from "./DegradedFallback.js";
|
|
5
|
+
import { MissingValueMark, MissingValueLegend } from "./MissingValue.js";
|
|
5
6
|
import { chartToDataTable } from "./chart-data-table.js";
|
|
7
|
+
import { missingNoteKind, applyUnitAxisTitle, createTooltipLabel, withDatasetsNoGapSpan, createMissingLegendGenerator, createMissingValuesPlugin } from "./chart-missing-plugin.js";
|
|
8
|
+
import { summarizeChartMissing, PART_TO_WHOLE_CHART_TYPES } from "../utils/missing-value.js";
|
|
6
9
|
import { useTelemetry } from "../context/MCPUITelemetryContext.js";
|
|
7
10
|
import { useMCPUIConfig } from "../context/MCPUIConfigContext.js";
|
|
8
11
|
import { useMCPUIStrings } from "../context/MCPUIStringsContext.js";
|
|
9
12
|
import { formatMCPUIString } from "../utils/format-string.js";
|
|
10
|
-
var _tmpl$ = /* @__PURE__ */ template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white">`), _tmpl$2 = /* @__PURE__ */ template(`<button type=button class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"><svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15">`), _tmpl$3 = /* @__PURE__ */ template(`<div class="inline-flex items-center gap-1"><button type=button class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"><svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607zM13.5 10.5h-6"></path></svg></button><button type=button class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"><svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607zM10.5 7.5v6m3-3h-6"></path></svg></button><!$><!/>`), _tmpl$4 = /* @__PURE__ */ template(`<button type=button class="opacity-0 group-hover:opacity-60 hover:!opacity-100 disabled:!opacity-30 disabled:cursor-not-allowed px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"><svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z">`), _tmpl$5 = /* @__PURE__ */ template(`<tr><td class="px-3 py-6 text-center text-gray-500 dark:text-gray-400">`), _tmpl$6 = /* @__PURE__ */ template(`<div><table class="w-full border-collapse text-left text-sm"><caption class=sr-only><!$><!/> — <!$><!/></caption><thead class="bg-gray-50 dark:bg-gray-900/40"><tr></tr></thead><tbody><!$><!/><!$><!/>`), _tmpl$7 = /* @__PURE__ */ template(`<div class="absolute inset-0 flex items-center justify-center bg-white/80 dark:bg-gray-800/80"><div class="flex flex-col items-center gap-2"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"></div><span class="text-sm text-gray-500 dark:text-gray-400">`), _tmpl$8 = /* @__PURE__ */ template(`<div><div class="flex items-center justify-between gap-3 mb-3 flex-shrink-0"><div class=min-w-0></div><div class="flex items-center gap-2"><div class="inline-flex rounded-md border border-gray-200 p-0.5 dark:border-gray-600"role=group><button type=button></button><button type=button></button></div><!$><!/><!$><!/></div></div><p class=sr-only><!$><!/>. <!$><!/></p><!$><!/><!$><!/><div><canvas role=img></canvas><!$><!/>`), _tmpl$
|
|
13
|
+
var _tmpl$ = /* @__PURE__ */ template(`<h3 class="text-sm font-semibold text-gray-900 dark:text-white">`), _tmpl$2 = /* @__PURE__ */ template(`<button type=button class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"><svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M4 4v5h.582m15.356 2A8.001 8.001 0 004.582 9m0 0H9m11 11v-5h-.581m0 0a8.003 8.003 0 01-15.357-2m15.357 2H15">`), _tmpl$3 = /* @__PURE__ */ template(`<div class="inline-flex items-center gap-1"><button type=button class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"><svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607zM13.5 10.5h-6"></path></svg></button><button type=button class="opacity-60 hover:opacity-100 px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"><svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607zM10.5 7.5v6m3-3h-6"></path></svg></button><!$><!/>`), _tmpl$4 = /* @__PURE__ */ template(`<button type=button class="opacity-0 group-hover:opacity-60 hover:!opacity-100 disabled:!opacity-30 disabled:cursor-not-allowed px-2 py-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-full hover:bg-gray-100 dark:hover:bg-gray-700 transition-all shadow-sm"><svg class="w-3 h-3 text-gray-500 dark:text-gray-400"fill=none viewBox="0 0 24 24"stroke=currentColor><path stroke-linecap=round stroke-linejoin=round stroke-width=2 d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z">`), _tmpl$5 = /* @__PURE__ */ template(`<tr><td class="px-3 py-6 text-center text-gray-500 dark:text-gray-400">`), _tmpl$6 = /* @__PURE__ */ template(`<div><table class="w-full border-collapse text-left text-sm"><caption class=sr-only><!$><!/> — <!$><!/></caption><thead class="bg-gray-50 dark:bg-gray-900/40"><tr></tr></thead><tbody><!$><!/><!$><!/>`), _tmpl$7 = /* @__PURE__ */ template(`<div class="absolute inset-0 flex items-center justify-center bg-white/80 dark:bg-gray-800/80"><div class="flex flex-col items-center gap-2"><div class="animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"></div><span class="text-sm text-gray-500 dark:text-gray-400">`), _tmpl$8 = /* @__PURE__ */ template(`<p>`), _tmpl$9 = /* @__PURE__ */ template(`<p data-mcp-chart-note=no-data>`), _tmpl$0 = /* @__PURE__ */ template(`<div data-mcp-chart-notes class="mt-2 space-y-0.5 text-xs text-gray-600 dark:text-gray-400"><!$><!/><!$><!/>`), _tmpl$1 = /* @__PURE__ */ template(`<div><div class="flex items-center justify-between gap-3 mb-3 flex-shrink-0"><div class=min-w-0></div><div class="flex items-center gap-2"><div class="inline-flex rounded-md border border-gray-200 p-0.5 dark:border-gray-600"role=group><button type=button></button><button type=button></button></div><!$><!/><!$><!/></div></div><p class=sr-only><!$><!/>. <!$><!/></p><!$><!/><!$><!/><div><canvas role=img></canvas><!$><!/></div><!$><!/>`), _tmpl$10 = /* @__PURE__ */ template(`<th scope=col class="px-3 py-2 font-medium text-gray-900 dark:text-gray-100">`), _tmpl$11 = /* @__PURE__ */ template(`<tr class="border-t border-gray-100 dark:border-gray-700">`), _tmpl$12 = /* @__PURE__ */ template(`<td class="px-3 py-2 text-gray-700 dark:text-gray-300">`);
|
|
11
14
|
let ChartJS = null;
|
|
12
15
|
let chartJSLoadPromise = null;
|
|
13
16
|
const loadChartJS = async () => {
|
|
@@ -108,9 +111,33 @@ const ChartJSRenderer = (props) => {
|
|
|
108
111
|
series: strings.chartTableSeries,
|
|
109
112
|
point: strings.chartTablePoint,
|
|
110
113
|
label: strings.degradedColLabel,
|
|
111
|
-
seriesName: strings.degradedSeries
|
|
114
|
+
seriesName: strings.degradedSeries,
|
|
115
|
+
withUnit: strings.chartLabelWithUnit
|
|
112
116
|
}));
|
|
117
|
+
const missingSummary = createMemo(() => summarizeChartMissing(params()));
|
|
118
|
+
const unit = () => {
|
|
119
|
+
const value = params().unit;
|
|
120
|
+
return typeof value === "string" && value !== "" ? value : void 0;
|
|
121
|
+
};
|
|
122
|
+
const anyMissingCell = () => tableData().missing.some((row) => row.some(Boolean));
|
|
123
|
+
const notesShown = () => missingSummary().hasMissing && !PART_TO_WHOLE_CHART_TYPES.has(params().type) && activeView() === "chart" && !error();
|
|
124
|
+
const noteKind = () => missingNoteKind(params().type, params().options);
|
|
125
|
+
const conventionNoteShown = () => noteKind() === "bars" ? missingSummary().hasMissing : missingSummary().partiallyMissing.some(Boolean);
|
|
126
|
+
const noDataSeries = () => {
|
|
127
|
+
var _a;
|
|
128
|
+
const names = (((_a = params().data) == null ? void 0 : _a.datasets) ?? []).map((dataset, index) => missingSummary().fullyMissing[index] ? (dataset == null ? void 0 : dataset.label) || formatMCPUIString(strings.degradedSeries, {
|
|
129
|
+
n: index + 1
|
|
130
|
+
}) : null).filter((name) => name !== null);
|
|
131
|
+
try {
|
|
132
|
+
return new Intl.ListFormat(strings.locale, {
|
|
133
|
+
type: "conjunction"
|
|
134
|
+
}).format(names);
|
|
135
|
+
} catch {
|
|
136
|
+
return names.join(", ");
|
|
137
|
+
}
|
|
138
|
+
};
|
|
113
139
|
const descriptionId = createUniqueId();
|
|
140
|
+
const notesId = createUniqueId();
|
|
114
141
|
const title = () => params().title || strings.chartView;
|
|
115
142
|
const exportEnabled = () => params().exportable !== false;
|
|
116
143
|
const copyDataJSON = () => JSON.stringify({
|
|
@@ -180,9 +207,11 @@ const ChartJSRenderer = (props) => {
|
|
|
180
207
|
a.click();
|
|
181
208
|
};
|
|
182
209
|
createEffect(async () => {
|
|
183
|
-
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
210
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p;
|
|
184
211
|
if (!canvasRef) return;
|
|
185
212
|
const chartParams = params();
|
|
213
|
+
const chartMissing = missingSummary();
|
|
214
|
+
const chartUnit = unit();
|
|
186
215
|
const zoom = zoomOptions();
|
|
187
216
|
const version = ++renderVersion;
|
|
188
217
|
setIsLoading(true);
|
|
@@ -194,6 +223,9 @@ const ChartJSRenderer = (props) => {
|
|
|
194
223
|
chartInstance.destroy();
|
|
195
224
|
chartInstance = null;
|
|
196
225
|
}
|
|
226
|
+
if (chartMissing.hasMissing && PART_TO_WHOLE_CHART_TYPES.has(chartParams.type)) {
|
|
227
|
+
throw new Error(strings.chartMissingUnsupported);
|
|
228
|
+
}
|
|
197
229
|
const hostZoomOptions = (_b = (_a = chartParams.options) == null ? void 0 : _a.plugins) == null ? void 0 : _b.zoom;
|
|
198
230
|
const baseOptions = {
|
|
199
231
|
responsive: true,
|
|
@@ -239,11 +271,46 @@ const ChartJSRenderer = (props) => {
|
|
|
239
271
|
}
|
|
240
272
|
};
|
|
241
273
|
}
|
|
242
|
-
|
|
274
|
+
applyUnitAxisTitle(baseOptions, chartParams.type, chartUnit);
|
|
275
|
+
const chartConfig = {
|
|
243
276
|
type: chartParams.type,
|
|
244
277
|
data: chartParams.data,
|
|
245
278
|
options: baseOptions
|
|
246
|
-
}
|
|
279
|
+
};
|
|
280
|
+
if (chartUnit !== void 0 || chartMissing.hasMissing) {
|
|
281
|
+
const tooltip = baseOptions.plugins.tooltip;
|
|
282
|
+
if (tooltip !== false && tooltip !== null && !((_g = tooltip == null ? void 0 : tooltip.callbacks) == null ? void 0 : _g.label)) {
|
|
283
|
+
baseOptions.plugins.tooltip = {
|
|
284
|
+
...tooltip,
|
|
285
|
+
callbacks: {
|
|
286
|
+
...tooltip == null ? void 0 : tooltip.callbacks,
|
|
287
|
+
label: createTooltipLabel(() => strings, chartUnit, chartParams.type)
|
|
288
|
+
}
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
if (chartMissing.hasMissing) {
|
|
293
|
+
chartConfig.data = withDatasetsNoGapSpan(chartParams.data);
|
|
294
|
+
const defaultGenerate = ((_i = (_h = baseOptions.plugins.legend) == null ? void 0 : _h.labels) == null ? void 0 : _i.generateLabels) ?? ((_m = (_l = (_k = (_j = Chart == null ? void 0 : Chart.defaults) == null ? void 0 : _j.plugins) == null ? void 0 : _k.legend) == null ? void 0 : _l.labels) == null ? void 0 : _m.generateLabels);
|
|
295
|
+
if (typeof defaultGenerate === "function") {
|
|
296
|
+
baseOptions.plugins.legend = {
|
|
297
|
+
...baseOptions.plugins.legend,
|
|
298
|
+
labels: {
|
|
299
|
+
...(_n = baseOptions.plugins.legend) == null ? void 0 : _n.labels,
|
|
300
|
+
generateLabels: createMissingLegendGenerator(defaultGenerate, chartMissing.fullyMissing, () => strings)
|
|
301
|
+
}
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
chartConfig.plugins = [createMissingValuesPlugin({
|
|
305
|
+
allMissing: chartMissing.allMissing,
|
|
306
|
+
getNoDataText: () => strings.chartNoData,
|
|
307
|
+
getFontFamily: () => {
|
|
308
|
+
var _a2, _b2;
|
|
309
|
+
return (_b2 = (_a2 = Chart == null ? void 0 : Chart.defaults) == null ? void 0 : _a2.font) == null ? void 0 : _b2.family;
|
|
310
|
+
}
|
|
311
|
+
})];
|
|
312
|
+
}
|
|
313
|
+
chartInstance = new Chart(canvasRef, chartConfig);
|
|
247
314
|
setIsZoomed(false);
|
|
248
315
|
setIsLoading(false);
|
|
249
316
|
} catch (err) {
|
|
@@ -254,11 +321,11 @@ const ChartJSRenderer = (props) => {
|
|
|
254
321
|
telemetry == null ? void 0 : telemetry.dispatch({
|
|
255
322
|
type: "render:error",
|
|
256
323
|
errorMessage: error2.message,
|
|
257
|
-
id: ((
|
|
324
|
+
id: ((_o = props.component) == null ? void 0 : _o.id) ?? "",
|
|
258
325
|
componentType: "chart",
|
|
259
326
|
ts: Date.now()
|
|
260
327
|
});
|
|
261
|
-
(
|
|
328
|
+
(_p = props.onError) == null ? void 0 : _p.call(props, error2);
|
|
262
329
|
}
|
|
263
330
|
});
|
|
264
331
|
createEffect(() => {
|
|
@@ -292,7 +359,7 @@ const ChartJSRenderer = (props) => {
|
|
|
292
359
|
get children() {
|
|
293
360
|
return createComponent(ContextAwareChartLayout, {
|
|
294
361
|
render: (isExpanded2) => (() => {
|
|
295
|
-
var _el$ = getNextElement(_tmpl$
|
|
362
|
+
var _el$ = getNextElement(_tmpl$1), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$5 = _el$3.nextSibling, _el$6 = _el$5.firstChild, _el$7 = _el$6.firstChild, _el$8 = _el$7.nextSibling, _el$14 = _el$6.nextSibling, [_el$15, _co$2] = getNextMarker(_el$14.nextSibling), _el$16 = _el$15.nextSibling, [_el$17, _co$3] = getNextMarker(_el$16.nextSibling), _el$18 = _el$2.nextSibling, _el$20 = _el$18.firstChild, [_el$21, _co$4] = getNextMarker(_el$20.nextSibling), _el$19 = _el$21.nextSibling, _el$22 = _el$19.nextSibling, [_el$23, _co$5] = getNextMarker(_el$22.nextSibling), _el$56 = _el$18.nextSibling, [_el$57, _co$11] = getNextMarker(_el$56.nextSibling), _el$58 = _el$57.nextSibling, [_el$59, _co$12] = getNextMarker(_el$58.nextSibling), _el$41 = _el$59.nextSibling, _el$42 = _el$41.firstChild, _el$47 = _el$42.nextSibling, [_el$48, _co$0] = getNextMarker(_el$47.nextSibling), _el$60 = _el$41.nextSibling, [_el$61, _co$13] = getNextMarker(_el$60.nextSibling);
|
|
296
363
|
insert(_el$3, createComponent(Show, {
|
|
297
364
|
get when() {
|
|
298
365
|
return params().title;
|
|
@@ -393,73 +460,94 @@ const ChartJSRenderer = (props) => {
|
|
|
393
460
|
}
|
|
394
461
|
}, tableData));
|
|
395
462
|
}
|
|
396
|
-
}), _el$
|
|
463
|
+
}), _el$57, _co$11);
|
|
397
464
|
insert(_el$, createComponent(Show, {
|
|
398
465
|
get when() {
|
|
399
466
|
return activeView() === "data";
|
|
400
467
|
},
|
|
401
468
|
get children() {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
469
|
+
return [(() => {
|
|
470
|
+
var _el$24 = getNextElement(_tmpl$6), _el$25 = _el$24.firstChild, _el$26 = _el$25.firstChild, _el$28 = _el$26.firstChild, [_el$29, _co$6] = getNextMarker(_el$28.nextSibling), _el$27 = _el$29.nextSibling, _el$30 = _el$27.nextSibling, [_el$31, _co$7] = getNextMarker(_el$30.nextSibling), _el$32 = _el$26.nextSibling, _el$33 = _el$32.firstChild, _el$34 = _el$32.nextSibling, _el$37 = _el$34.firstChild, [_el$38, _co$8] = getNextMarker(_el$37.nextSibling), _el$39 = _el$38.nextSibling, [_el$40, _co$9] = getNextMarker(_el$39.nextSibling);
|
|
471
|
+
insert(_el$26, title, _el$29, _co$6);
|
|
472
|
+
insert(_el$26, () => strings.chartDataTable, _el$31, _co$7);
|
|
473
|
+
insert(_el$33, createComponent(For, {
|
|
474
|
+
get each() {
|
|
475
|
+
return tableData().columns;
|
|
476
|
+
},
|
|
477
|
+
children: (column) => (() => {
|
|
478
|
+
var _el$62 = getNextElement(_tmpl$10);
|
|
479
|
+
insert(_el$62, column);
|
|
480
|
+
return _el$62;
|
|
481
|
+
})()
|
|
482
|
+
}));
|
|
483
|
+
insert(_el$34, createComponent(For, {
|
|
484
|
+
get each() {
|
|
485
|
+
return tableData().rows;
|
|
486
|
+
},
|
|
487
|
+
children: (row, rowIndex) => (() => {
|
|
488
|
+
var _el$63 = getNextElement(_tmpl$11);
|
|
489
|
+
insert(_el$63, createComponent(For, {
|
|
490
|
+
get each() {
|
|
491
|
+
return tableData().columns;
|
|
492
|
+
},
|
|
493
|
+
children: (_column, index) => (() => {
|
|
494
|
+
var _el$64 = getNextElement(_tmpl$12);
|
|
495
|
+
insert(_el$64, createComponent(Show, {
|
|
496
|
+
get when() {
|
|
497
|
+
var _a;
|
|
498
|
+
return (_a = tableData().missing[rowIndex()]) == null ? void 0 : _a[index()];
|
|
499
|
+
},
|
|
500
|
+
get fallback() {
|
|
501
|
+
return String(row[index()] ?? "");
|
|
502
|
+
},
|
|
503
|
+
get children() {
|
|
504
|
+
return createComponent(MissingValueMark, {});
|
|
505
|
+
}
|
|
506
|
+
}));
|
|
507
|
+
return _el$64;
|
|
508
|
+
})()
|
|
509
|
+
}));
|
|
510
|
+
return _el$63;
|
|
511
|
+
})()
|
|
512
|
+
}), _el$38, _co$8);
|
|
513
|
+
insert(_el$34, createComponent(Show, {
|
|
514
|
+
get when() {
|
|
515
|
+
return tableData().rows.length === 0;
|
|
516
|
+
},
|
|
517
|
+
get children() {
|
|
518
|
+
var _el$35 = getNextElement(_tmpl$5), _el$36 = _el$35.firstChild;
|
|
519
|
+
insert(_el$36, () => strings.chartNoData);
|
|
520
|
+
effect(() => setAttribute(_el$36, "colspan", Math.max(1, tableData().columns.length)));
|
|
521
|
+
return _el$35;
|
|
522
|
+
}
|
|
523
|
+
}), _el$40, _co$9);
|
|
524
|
+
effect((_p$) => {
|
|
525
|
+
var _v$0 = `w-full overflow-auto rounded border border-gray-200 dark:border-gray-700 ${isExpanded2() ? "flex-1 min-h-0" : ""}`, _v$1 = isExpanded2() ? void 0 : {
|
|
526
|
+
height: params().height || "250px",
|
|
527
|
+
"max-height": "70vh"
|
|
528
|
+
};
|
|
529
|
+
_v$0 !== _p$.e && className(_el$24, _p$.e = _v$0);
|
|
530
|
+
_p$.t = style(_el$24, _v$1, _p$.t);
|
|
531
|
+
return _p$;
|
|
532
|
+
}, {
|
|
533
|
+
e: void 0,
|
|
534
|
+
t: void 0
|
|
535
|
+
});
|
|
536
|
+
return _el$24;
|
|
537
|
+
})(), createComponent(Show, {
|
|
435
538
|
get when() {
|
|
436
|
-
return
|
|
539
|
+
return anyMissingCell();
|
|
437
540
|
},
|
|
438
541
|
get children() {
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
return _el$35;
|
|
542
|
+
return createComponent(MissingValueLegend, {
|
|
543
|
+
"class": "mt-2"
|
|
544
|
+
});
|
|
443
545
|
}
|
|
444
|
-
})
|
|
445
|
-
effect((_p$) => {
|
|
446
|
-
var _v$0 = `w-full overflow-auto rounded border border-gray-200 dark:border-gray-700 ${isExpanded2() ? "flex-1 min-h-0" : ""}`, _v$1 = isExpanded2() ? void 0 : {
|
|
447
|
-
height: params().height || "250px",
|
|
448
|
-
"max-height": "70vh"
|
|
449
|
-
};
|
|
450
|
-
_v$0 !== _p$.e && className(_el$24, _p$.e = _v$0);
|
|
451
|
-
_p$.t = style(_el$24, _v$1, _p$.t);
|
|
452
|
-
return _p$;
|
|
453
|
-
}, {
|
|
454
|
-
e: void 0,
|
|
455
|
-
t: void 0
|
|
456
|
-
});
|
|
457
|
-
return _el$24;
|
|
546
|
+
})];
|
|
458
547
|
}
|
|
459
|
-
}), _el$
|
|
548
|
+
}), _el$59, _co$12);
|
|
460
549
|
var _ref$ = canvasRef;
|
|
461
550
|
typeof _ref$ === "function" ? use(_ref$, _el$42) : canvasRef = _el$42;
|
|
462
|
-
setAttribute(_el$42, "aria-describedby", descriptionId);
|
|
463
551
|
insert(_el$41, createComponent(Show, {
|
|
464
552
|
get when() {
|
|
465
553
|
return memo(() => !!isLoading())() && activeView() === "chart";
|
|
@@ -470,6 +558,42 @@ const ChartJSRenderer = (props) => {
|
|
|
470
558
|
return _el$43;
|
|
471
559
|
}
|
|
472
560
|
}), _el$48, _co$0);
|
|
561
|
+
insert(_el$, createComponent(Show, {
|
|
562
|
+
get when() {
|
|
563
|
+
return notesShown();
|
|
564
|
+
},
|
|
565
|
+
get children() {
|
|
566
|
+
var _el$49 = getNextElement(_tmpl$0), _el$52 = _el$49.firstChild, [_el$53, _co$1] = getNextMarker(_el$52.nextSibling), _el$54 = _el$53.nextSibling, [_el$55, _co$10] = getNextMarker(_el$54.nextSibling);
|
|
567
|
+
setAttribute(_el$49, "id", notesId);
|
|
568
|
+
insert(_el$49, createComponent(Show, {
|
|
569
|
+
get when() {
|
|
570
|
+
return conventionNoteShown();
|
|
571
|
+
},
|
|
572
|
+
get children() {
|
|
573
|
+
var _el$50 = getNextElement(_tmpl$8);
|
|
574
|
+
insert(_el$50, (() => {
|
|
575
|
+
var _c$ = memo(() => noteKind() === "bars");
|
|
576
|
+
return () => _c$() ? strings.chartMissingBars : memo(() => noteKind() === "omitted")() ? strings.chartMissingPoints : strings.chartMissingGaps;
|
|
577
|
+
})());
|
|
578
|
+
effect(() => setAttribute(_el$50, "data-mcp-chart-note", noteKind()));
|
|
579
|
+
return _el$50;
|
|
580
|
+
}
|
|
581
|
+
}), _el$53, _co$1);
|
|
582
|
+
insert(_el$49, createComponent(Show, {
|
|
583
|
+
get when() {
|
|
584
|
+
return missingSummary().fullyMissing.some(Boolean);
|
|
585
|
+
},
|
|
586
|
+
get children() {
|
|
587
|
+
var _el$51 = getNextElement(_tmpl$9);
|
|
588
|
+
insert(_el$51, () => formatMCPUIString(strings.chartSeriesNoData, {
|
|
589
|
+
series: noDataSeries()
|
|
590
|
+
}));
|
|
591
|
+
return _el$51;
|
|
592
|
+
}
|
|
593
|
+
}), _el$55, _co$10);
|
|
594
|
+
return _el$49;
|
|
595
|
+
}
|
|
596
|
+
}), _el$61, _co$13);
|
|
473
597
|
effect((_p$) => {
|
|
474
598
|
var _v$10 = `relative w-full bg-white dark:bg-gray-800 rounded-lg shadow-sm border border-gray-200 dark:border-gray-700 overflow-hidden p-4 group ${isExpanded2() ? "flex-1 min-h-0 flex flex-col" : ""} ${params().className || ""}`, _v$11 = strings.chartViewSelector, _v$12 = activeView() === "chart", _v$13 = `rounded px-2 py-1 text-xs font-medium transition-colors ${activeView() === "chart" ? "bg-gray-900 text-white dark:bg-gray-100 dark:text-gray-900" : "text-gray-600 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-700"}`, _v$14 = activeView() === "data", _v$15 = `rounded px-2 py-1 text-xs font-medium transition-colors ${activeView() === "data" ? "bg-gray-900 text-white dark:bg-gray-100 dark:text-gray-900" : "text-gray-600 hover:bg-gray-100 dark:text-gray-300 dark:hover:bg-gray-700"}`, _v$16 = `relative w-full ${isExpanded2() ? "flex-1 min-h-0" : ""}`, _v$17 = error() || activeView() === "data" ? {
|
|
475
599
|
display: "none"
|
|
@@ -479,7 +603,7 @@ const ChartJSRenderer = (props) => {
|
|
|
479
603
|
} : {
|
|
480
604
|
height: params().height || "250px",
|
|
481
605
|
display: "block"
|
|
482
|
-
}, _v$18 = title(), _v$19 = activeView() !== "chart" || Boolean(error());
|
|
606
|
+
}, _v$18 = title(), _v$19 = notesShown() ? `${descriptionId} ${notesId}` : descriptionId, _v$20 = activeView() !== "chart" || Boolean(error());
|
|
483
607
|
_v$10 !== _p$.e && className(_el$, _p$.e = _v$10);
|
|
484
608
|
_v$11 !== _p$.t && setAttribute(_el$6, "aria-label", _p$.t = _v$11);
|
|
485
609
|
_v$12 !== _p$.a && setAttribute(_el$7, "aria-pressed", _p$.a = _v$12);
|
|
@@ -489,7 +613,8 @@ const ChartJSRenderer = (props) => {
|
|
|
489
613
|
_v$16 !== _p$.s && className(_el$41, _p$.s = _v$16);
|
|
490
614
|
_p$.h = style(_el$41, _v$17, _p$.h);
|
|
491
615
|
_v$18 !== _p$.r && setAttribute(_el$42, "aria-label", _p$.r = _v$18);
|
|
492
|
-
_v$19 !== _p$.d && setAttribute(_el$42, "aria-
|
|
616
|
+
_v$19 !== _p$.d && setAttribute(_el$42, "aria-describedby", _p$.d = _v$19);
|
|
617
|
+
_v$20 !== _p$.l && setAttribute(_el$42, "aria-hidden", _p$.l = _v$20);
|
|
493
618
|
return _p$;
|
|
494
619
|
}, {
|
|
495
620
|
e: void 0,
|
|
@@ -501,7 +626,8 @@ const ChartJSRenderer = (props) => {
|
|
|
501
626
|
s: void 0,
|
|
502
627
|
h: void 0,
|
|
503
628
|
r: void 0,
|
|
504
|
-
d: void 0
|
|
629
|
+
d: void 0,
|
|
630
|
+
l: void 0
|
|
505
631
|
});
|
|
506
632
|
runHydrationEvents();
|
|
507
633
|
return _el$;
|