nirs4all-ui 0.1.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.
Files changed (42) hide show
  1. package/README.md +42 -0
  2. package/dist/components/RuntimeEngineBadge.d.ts +15 -0
  3. package/dist/components/RuntimeEngineBadge.d.ts.map +1 -0
  4. package/dist/components/RuntimeEngineBadge.js +12 -0
  5. package/dist/components/RuntimeEngineBadge.js.map +1 -0
  6. package/dist/components/index.d.ts +2 -0
  7. package/dist/components/index.d.ts.map +1 -0
  8. package/dist/components/index.js +2 -0
  9. package/dist/components/index.js.map +1 -0
  10. package/dist/index.d.ts +11 -0
  11. package/dist/index.d.ts.map +1 -0
  12. package/dist/index.js +11 -0
  13. package/dist/index.js.map +1 -0
  14. package/dist/runtime/index.d.ts +18 -0
  15. package/dist/runtime/index.d.ts.map +1 -0
  16. package/dist/runtime/index.js +20 -0
  17. package/dist/runtime/index.js.map +1 -0
  18. package/dist/runtime/resultMetadata.d.ts +64 -0
  19. package/dist/runtime/resultMetadata.d.ts.map +1 -0
  20. package/dist/runtime/resultMetadata.js +310 -0
  21. package/dist/runtime/resultMetadata.js.map +1 -0
  22. package/dist/runtime/statusDisplay.d.ts +38 -0
  23. package/dist/runtime/statusDisplay.d.ts.map +1 -0
  24. package/dist/runtime/statusDisplay.js +89 -0
  25. package/dist/runtime/statusDisplay.js.map +1 -0
  26. package/dist/score/index.d.ts +19 -0
  27. package/dist/score/index.d.ts.map +1 -0
  28. package/dist/score/index.js +19 -0
  29. package/dist/score/index.js.map +1 -0
  30. package/dist/score/metricKeys.d.ts +18 -0
  31. package/dist/score/metricKeys.d.ts.map +1 -0
  32. package/dist/score/metricKeys.js +63 -0
  33. package/dist/score/metricKeys.js.map +1 -0
  34. package/dist/score/scoreMetricCatalog.d.ts +59 -0
  35. package/dist/score/scoreMetricCatalog.d.ts.map +1 -0
  36. package/dist/score/scoreMetricCatalog.js +324 -0
  37. package/dist/score/scoreMetricCatalog.js.map +1 -0
  38. package/dist/score/scoreValues.d.ts +28 -0
  39. package/dist/score/scoreValues.d.ts.map +1 -0
  40. package/dist/score/scoreValues.js +92 -0
  41. package/dist/score/scoreValues.js.map +1 -0
  42. package/package.json +58 -0
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Pure runtime/result status display helpers.
3
+ *
4
+ * This module owns the reusable view-model tokens for run and pipeline result
5
+ * status rendering. React components map `icon` onto host-specific icon
6
+ * components; the foundation stays framework-free.
7
+ */
8
+ export const RUNTIME_RESULT_STATUSES = ["queued", "running", "completed", "failed", "partial"];
9
+ export const RUNTIME_RESULT_STATUS_DISPLAY = {
10
+ queued: {
11
+ status: "queued",
12
+ label: "Queued",
13
+ colorClass: "text-muted-foreground",
14
+ bgClass: "bg-muted/50",
15
+ iconClass: "",
16
+ icon: "clock",
17
+ badgeVariant: "secondary",
18
+ isBusy: true,
19
+ },
20
+ running: {
21
+ status: "running",
22
+ label: "Running",
23
+ colorClass: "text-chart-2",
24
+ bgClass: "bg-chart-2/10",
25
+ iconClass: "animate-spin",
26
+ icon: "refresh",
27
+ badgeVariant: "secondary",
28
+ isBusy: true,
29
+ },
30
+ completed: {
31
+ status: "completed",
32
+ label: "Completed",
33
+ colorClass: "text-chart-1",
34
+ bgClass: "bg-chart-1/10",
35
+ iconClass: "",
36
+ icon: "check",
37
+ badgeVariant: "default",
38
+ isBusy: false,
39
+ },
40
+ failed: {
41
+ status: "failed",
42
+ label: "Failed",
43
+ colorClass: "text-destructive",
44
+ bgClass: "bg-destructive/10",
45
+ iconClass: "",
46
+ icon: "alert",
47
+ badgeVariant: "secondary",
48
+ isBusy: false,
49
+ },
50
+ partial: {
51
+ status: "partial",
52
+ label: "Partial",
53
+ colorClass: "text-amber-500",
54
+ bgClass: "bg-amber-500/10",
55
+ iconClass: "",
56
+ icon: "partial",
57
+ badgeVariant: "secondary",
58
+ isBusy: false,
59
+ },
60
+ };
61
+ export function isRuntimeResultStatus(status) {
62
+ return status != null && Object.prototype.hasOwnProperty.call(RUNTIME_RESULT_STATUS_DISPLAY, status);
63
+ }
64
+ export function resolveRuntimeResultStatus(status, fallback = "completed") {
65
+ return isRuntimeResultStatus(status) ? status : fallback;
66
+ }
67
+ export function getRuntimeResultStatusDisplay(status) {
68
+ return RUNTIME_RESULT_STATUS_DISPLAY[resolveRuntimeResultStatus(status)];
69
+ }
70
+ export function isBusyRuntimeResultStatus(status) {
71
+ return isRuntimeResultStatus(status) && RUNTIME_RESULT_STATUS_DISPLAY[status].isBusy;
72
+ }
73
+ export function getRuntimeResultStatusProgress(status, progress) {
74
+ return resolveRuntimeResultStatus(status) === "running" && progress != null ? progress : null;
75
+ }
76
+ export function buildRuntimeResultStatusView(status, progress) {
77
+ return {
78
+ ...getRuntimeResultStatusDisplay(status),
79
+ progress: getRuntimeResultStatusProgress(status, progress),
80
+ };
81
+ }
82
+ export function getRuntimeResultEmptyMessage(status, messages) {
83
+ if (status === "running")
84
+ return messages.running;
85
+ if (status === "queued")
86
+ return messages.queued;
87
+ return messages.fallback;
88
+ }
89
+ //# sourceMappingURL=statusDisplay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"statusDisplay.js","sourceRoot":"","sources":["../../src/runtime/statusDisplay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Score / metric view-model foundation — public surface.
3
+ *
4
+ * Pure, dependency-free helpers for the metric vocabulary shared across the app
5
+ * (Datasets, Runs, Results, Predictions): metric-key normalization, the static
6
+ * metric catalog + task-type selection rules, and direction-aware score parsing
7
+ * / comparison / formatting.
8
+ *
9
+ * Layering (all pure — no React, no IO, no app state):
10
+ * metricKeys ──► scoreValues
11
+ * └─► scoreMetricCatalog
12
+ *
13
+ * App-runtime score-map parsing/extraction stays in each host app. Import this
14
+ * foundation from `nirs4all-ui/score`.
15
+ */
16
+ export * from "./metricKeys.js";
17
+ export * from "./scoreValues.js";
18
+ export * from "./scoreMetricCatalog.js";
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/score/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Score / metric view-model foundation — public surface.
3
+ *
4
+ * Pure, dependency-free helpers for the metric vocabulary shared across the app
5
+ * (Datasets, Runs, Results, Predictions): metric-key normalization, the static
6
+ * metric catalog + task-type selection rules, and direction-aware score parsing
7
+ * / comparison / formatting.
8
+ *
9
+ * Layering (all pure — no React, no IO, no app state):
10
+ * metricKeys ──► scoreValues
11
+ * └─► scoreMetricCatalog
12
+ *
13
+ * App-runtime score-map parsing/extraction stays in each host app. Import this
14
+ * foundation from `nirs4all-ui/score`.
15
+ */
16
+ export * from "./metricKeys.js";
17
+ export * from "./scoreValues.js";
18
+ export * from "./scoreMetricCatalog.js";
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/score/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Metric-key normalization and aliasing.
3
+ *
4
+ * The foundational, dependency-free layer of the score utilities: it maps the
5
+ * many spellings a metric key can arrive in (backend JSON, NIRS naming, sklearn
6
+ * names) onto a single canonical key. Everything else in `scores.ts` builds on
7
+ * top of these helpers, so they live here as a self-contained, pure slice.
8
+ */
9
+ /** Lower-case, trim, and collapse spaces/hyphens to underscores. */
10
+ export declare function normalizeMetricLookupKey(key: string | null | undefined): string;
11
+ /** Resolve any metric spelling to its canonical key (empty string if blank). */
12
+ export declare function canonicalMetricKey(key: string | null | undefined): string;
13
+ /**
14
+ * All keys a metric value might be stored under: the canonical key, the
15
+ * normalized input, and every known alias of the canonical key.
16
+ */
17
+ export declare function metricKeyCandidates(key: string | null | undefined): string[];
18
+ //# sourceMappingURL=metricKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metricKeys.d.ts","sourceRoot":"","sources":["../../src/score/metricKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA8BH,oEAAoE;AACpE,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAE/E;AAED,gFAAgF;AAChF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAIzE;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,EAAE,CAW5E"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Metric-key normalization and aliasing.
3
+ *
4
+ * The foundational, dependency-free layer of the score utilities: it maps the
5
+ * many spellings a metric key can arrive in (backend JSON, NIRS naming, sklearn
6
+ * names) onto a single canonical key. Everything else in `scores.ts` builds on
7
+ * top of these helpers, so they live here as a self-contained, pure slice.
8
+ */
9
+ /**
10
+ * Maps non-canonical metric spellings onto their canonical key.
11
+ * Mirrors the metric names emitted by `nirs4all/core/metrics.py`.
12
+ */
13
+ const METRIC_KEY_ALIASES = {
14
+ mean_squared_error: "mse",
15
+ root_mean_squared_error: "rmse",
16
+ mean_absolute_error: "mae",
17
+ mean_absolute_percentage_error: "mape",
18
+ r2_score: "r2",
19
+ explained_variance_score: "explained_variance",
20
+ median_absolute_error: "median_ae",
21
+ f1_score: "f1",
22
+ auc: "roc_auc",
23
+ mcc: "matthews_corrcoef",
24
+ kappa: "cohen_kappa",
25
+ jaccard_score: "jaccard",
26
+ rmsep: "rmse",
27
+ rmsecv: "rmse",
28
+ };
29
+ const METRIC_ALIAS_KEYS_BY_CANONICAL = new Map();
30
+ for (const [aliasKey, canonicalKey] of Object.entries(METRIC_KEY_ALIASES)) {
31
+ const aliases = METRIC_ALIAS_KEYS_BY_CANONICAL.get(canonicalKey) ?? [];
32
+ aliases.push(aliasKey);
33
+ METRIC_ALIAS_KEYS_BY_CANONICAL.set(canonicalKey, aliases);
34
+ }
35
+ /** Lower-case, trim, and collapse spaces/hyphens to underscores. */
36
+ export function normalizeMetricLookupKey(key) {
37
+ return (key ?? "").trim().toLowerCase().replace(/[\s-]+/g, "_");
38
+ }
39
+ /** Resolve any metric spelling to its canonical key (empty string if blank). */
40
+ export function canonicalMetricKey(key) {
41
+ const normalized = normalizeMetricLookupKey(key);
42
+ if (!normalized)
43
+ return "";
44
+ return METRIC_KEY_ALIASES[normalized] ?? normalized;
45
+ }
46
+ /**
47
+ * All keys a metric value might be stored under: the canonical key, the
48
+ * normalized input, and every known alias of the canonical key.
49
+ */
50
+ export function metricKeyCandidates(key) {
51
+ const normalized = normalizeMetricLookupKey(key);
52
+ const canonical = canonicalMetricKey(key);
53
+ if (!canonical)
54
+ return [];
55
+ const candidates = new Set([canonical]);
56
+ if (normalized)
57
+ candidates.add(normalized);
58
+ for (const aliasKey of METRIC_ALIAS_KEYS_BY_CANONICAL.get(canonical) ?? []) {
59
+ candidates.add(aliasKey);
60
+ }
61
+ return [...candidates];
62
+ }
63
+ //# sourceMappingURL=metricKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metricKeys.js","sourceRoot":"","sources":["../../src/score/metricKeys.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,MAAM,kBAAkB,GAA2B;IACjD,kBAAkB,EAAE,KAAK;IACzB,uBAAuB,EAAE,MAAM;IAC/B,mBAAmB,EAAE,KAAK;IAC1B,8BAA8B,EAAE,MAAM;IACtC,QAAQ,EAAE,IAAI;IACd,wBAAwB,EAAE,oBAAoB;IAC9C,qBAAqB,EAAE,WAAW;IAClC,QAAQ,EAAE,IAAI;IACd,GAAG,EAAE,SAAS;IACd,GAAG,EAAE,mBAAmB;IACxB,KAAK,EAAE,aAAa;IACpB,aAAa,EAAE,SAAS;IACxB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,MAAM;CACf,CAAC;AAEF,MAAM,8BAA8B,GAAG,IAAI,GAAG,EAAoB,CAAC;AACnE,KAAK,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC;IAC1E,MAAM,OAAO,GAAG,8BAA8B,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IACvE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvB,8BAA8B,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AAC5D,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,wBAAwB,CAAC,GAA8B;IACrE,OAAO,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,kBAAkB,CAAC,GAA8B;IAC/D,MAAM,UAAU,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,OAAO,kBAAkB,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC;AACtD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAA8B;IAChE,MAAM,UAAU,GAAG,wBAAwB,CAAC,GAAG,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAE1B,MAAM,UAAU,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAChD,IAAI,UAAU;QAAE,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC3C,KAAK,MAAM,QAAQ,IAAI,8BAA8B,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QAC3E,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Metric catalog, task-type selection helpers, and metric presets.
3
+ *
4
+ * This module owns the static metric definitions and the rules for exposing
5
+ * them by task type. Runtime score-map parsing and display extraction stay in
6
+ * `scores.ts`.
7
+ */
8
+ /** Regression display metrics (compact). */
9
+ export declare const REGRESSION_METRICS: readonly ["r2", "rmse", "rpd"];
10
+ /** Classification display metrics (compact). */
11
+ export declare const CLASSIFICATION_METRICS: readonly ["accuracy", "balanced_accuracy", "precision", "recall"];
12
+ /** Requested default metric set for dataset-item summaries on runs/results pages. */
13
+ export declare const DEFAULT_DATASET_ITEM_REGRESSION_METRICS: readonly ["rmse", "r2", "nrmse", "sep", "rpd", "pearson_r"];
14
+ export declare const LEGACY_DATASET_ITEM_REGRESSION_METRICS: readonly ["rmse", "r2", "sep", "rpd", "bias", "mae"];
15
+ export declare const DEFAULT_DATASET_ITEM_CLASSIFICATION_METRICS: readonly ["accuracy", "balanced_accuracy", "precision", "recall"];
16
+ export declare const LEGACY_DATASET_ITEM_CLASSIFICATION_METRICS: readonly ["accuracy", "balanced_accuracy", "f1", "roc_auc"];
17
+ export interface MetricDefinition {
18
+ key: string;
19
+ label: string;
20
+ abbreviation: string;
21
+ direction: "higher" | "lower" | "zero";
22
+ group: "general" | "regression" | "multiclass" | "binary";
23
+ }
24
+ export type MetricGroup = MetricDefinition["group"];
25
+ export declare const ALL_GENERAL_METRICS: MetricDefinition[];
26
+ export declare const ALL_REGRESSION_METRICS: MetricDefinition[];
27
+ export declare const ALL_CLASSIFICATION_METRICS: MetricDefinition[];
28
+ export declare const ALL_SCORE_METRICS: MetricDefinition[];
29
+ export declare function isClassificationTaskType(taskType: string | null | undefined): boolean;
30
+ export declare function getMetricsForTaskType(taskType: string | null): readonly string[];
31
+ export declare function getMetricDefinition(key: string | null | undefined): MetricDefinition | undefined;
32
+ export declare function isKnownMetricKey(key: string | null | undefined): boolean;
33
+ export declare function orderMetricKeys(metricKeys: readonly string[]): string[];
34
+ export declare function getMetricDefinitions(metricKeys: readonly string[]): MetricDefinition[];
35
+ export declare function groupMetricDefinitions(metricKeys: readonly string[]): Array<{
36
+ group: MetricGroup;
37
+ label: string;
38
+ metrics: MetricDefinition[];
39
+ }>;
40
+ export declare function getDefaultSelectedMetricsForTaskTypes(taskTypes: Iterable<string | null | undefined>): string[];
41
+ export declare function getLegacySelectedMetricsForTaskTypes(taskTypes: Iterable<string | null | undefined>): string[];
42
+ export declare function getDefaultSelectionUpgradeCandidatesForTaskTypes(taskTypes: Iterable<string | null | undefined>): string[][];
43
+ export declare function getAvailableMetricKeysForTaskTypes(taskTypes: Iterable<string | null | undefined>): string[];
44
+ export declare function filterMetricsForTaskType(metricKeys: readonly string[], taskType: string | null | undefined): string[];
45
+ /** Get all available metrics for a task type. */
46
+ export declare function getAvailableMetrics(taskType: string | null): MetricDefinition[];
47
+ /** Metric preset definitions. */
48
+ export interface MetricPreset {
49
+ id: string;
50
+ label: string;
51
+ keys: string[];
52
+ }
53
+ export declare const REGRESSION_PRESETS: MetricPreset[];
54
+ export declare const CLASSIFICATION_PRESETS: MetricPreset[];
55
+ export declare function getPresetsForTaskType(taskType: string | null): MetricPreset[];
56
+ export declare function getPresetsForTaskTypes(taskTypes: Iterable<string | null | undefined>): MetricPreset[];
57
+ /** Get the default selected metrics for a task type. */
58
+ export declare function getDefaultSelectedMetrics(taskType: string | null): string[];
59
+ //# sourceMappingURL=scoreMetricCatalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreMetricCatalog.d.ts","sourceRoot":"","sources":["../../src/score/scoreMetricCatalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,324 @@
1
+ /**
2
+ * Metric catalog, task-type selection helpers, and metric presets.
3
+ *
4
+ * This module owns the static metric definitions and the rules for exposing
5
+ * them by task type. Runtime score-map parsing and display extraction stay in
6
+ * `scores.ts`.
7
+ */
8
+ import { canonicalMetricKey } from "./metricKeys.js";
9
+ /** Regression display metrics (compact). */
10
+ export const REGRESSION_METRICS = ["r2", "rmse", "rpd"];
11
+ /** Classification display metrics (compact). */
12
+ export const CLASSIFICATION_METRICS = [
13
+ "accuracy",
14
+ "balanced_accuracy",
15
+ "precision",
16
+ "recall",
17
+ ];
18
+ /** Requested default metric set for dataset-item summaries on runs/results pages. */
19
+ export const DEFAULT_DATASET_ITEM_REGRESSION_METRICS = [
20
+ "rmse",
21
+ "r2",
22
+ "nrmse",
23
+ "sep",
24
+ "rpd",
25
+ "pearson_r",
26
+ ];
27
+ export const LEGACY_DATASET_ITEM_REGRESSION_METRICS = [
28
+ "rmse",
29
+ "r2",
30
+ "sep",
31
+ "rpd",
32
+ "bias",
33
+ "mae",
34
+ ];
35
+ export const DEFAULT_DATASET_ITEM_CLASSIFICATION_METRICS = [
36
+ "accuracy",
37
+ "balanced_accuracy",
38
+ "precision",
39
+ "recall",
40
+ ];
41
+ export const LEGACY_DATASET_ITEM_CLASSIFICATION_METRICS = [
42
+ "accuracy",
43
+ "balanced_accuracy",
44
+ "f1",
45
+ "roc_auc",
46
+ ];
47
+ const CLASSIFICATION_TASK_TYPES = new Set([
48
+ "classification",
49
+ "binary_classification",
50
+ "multiclass_classification",
51
+ ]);
52
+ // ============================================================================
53
+ // Full metric catalog - matches nirs4all/core/metrics.py
54
+ // ============================================================================
55
+ export const ALL_GENERAL_METRICS = [];
56
+ export const ALL_REGRESSION_METRICS = [
57
+ { key: "r2", label: "R²", abbreviation: "R²", direction: "higher", group: "regression" },
58
+ { key: "rmse", label: "RMSE", abbreviation: "RMSE", direction: "lower", group: "regression" },
59
+ { key: "mse", label: "MSE", abbreviation: "MSE", direction: "lower", group: "regression" },
60
+ { key: "mae", label: "MAE", abbreviation: "MAE", direction: "lower", group: "regression" },
61
+ { key: "mape", label: "MAPE", abbreviation: "MAPE", direction: "lower", group: "regression" },
62
+ { key: "sep", label: "SEP", abbreviation: "SEP", direction: "lower", group: "regression" },
63
+ { key: "rpd", label: "RPD", abbreviation: "RPD", direction: "higher", group: "regression" },
64
+ { key: "bias", label: "Bias", abbreviation: "Bias", direction: "zero", group: "regression" },
65
+ { key: "consistency", label: "Consistency", abbreviation: "Cons", direction: "higher", group: "regression" },
66
+ { key: "nrmse", label: "NRMSE", abbreviation: "NRMSE", direction: "lower", group: "regression" },
67
+ { key: "nmse", label: "NMSE", abbreviation: "NMSE", direction: "lower", group: "regression" },
68
+ { key: "nmae", label: "NMAE", abbreviation: "NMAE", direction: "lower", group: "regression" },
69
+ { key: "pearson_r", label: "Pearson", abbreviation: "Pearson", direction: "higher", group: "regression" },
70
+ { key: "spearman_r", label: "Spearman", abbreviation: "Spearman", direction: "higher", group: "regression" },
71
+ {
72
+ key: "explained_variance",
73
+ label: "Expl. Variance",
74
+ abbreviation: "ExpVar",
75
+ direction: "higher",
76
+ group: "regression",
77
+ },
78
+ { key: "max_error", label: "Max Error", abbreviation: "MaxErr", direction: "lower", group: "regression" },
79
+ { key: "median_ae", label: "Median AE", abbreviation: "MedAE", direction: "lower", group: "regression" },
80
+ ];
81
+ export const ALL_CLASSIFICATION_METRICS = [
82
+ { key: "accuracy", label: "Accuracy", abbreviation: "Acc", direction: "higher", group: "multiclass" },
83
+ {
84
+ key: "balanced_accuracy",
85
+ label: "Balanced Accuracy",
86
+ abbreviation: "BalAcc",
87
+ direction: "higher",
88
+ group: "multiclass",
89
+ },
90
+ { key: "precision", label: "Precision", abbreviation: "Prec", direction: "higher", group: "multiclass" },
91
+ {
92
+ key: "balanced_precision",
93
+ label: "Balanced Precision",
94
+ abbreviation: "BalPrec",
95
+ direction: "higher",
96
+ group: "multiclass",
97
+ },
98
+ { key: "recall", label: "Recall", abbreviation: "Rec", direction: "higher", group: "multiclass" },
99
+ {
100
+ key: "balanced_recall",
101
+ label: "Balanced Recall",
102
+ abbreviation: "BalRec",
103
+ direction: "higher",
104
+ group: "multiclass",
105
+ },
106
+ { key: "f1", label: "F1", abbreviation: "F1", direction: "higher", group: "multiclass" },
107
+ { key: "specificity", label: "Specificity", abbreviation: "Spec", direction: "higher", group: "multiclass" },
108
+ { key: "roc_auc", label: "ROC AUC", abbreviation: "AUC", direction: "higher", group: "binary" },
109
+ { key: "matthews_corrcoef", label: "MCC", abbreviation: "MCC", direction: "higher", group: "binary" },
110
+ { key: "cohen_kappa", label: "Cohen Kappa", abbreviation: "Kappa", direction: "higher", group: "binary" },
111
+ { key: "jaccard", label: "Jaccard", abbreviation: "Jaccard", direction: "higher", group: "binary" },
112
+ ];
113
+ export const ALL_SCORE_METRICS = [
114
+ ...ALL_GENERAL_METRICS,
115
+ ...ALL_REGRESSION_METRICS,
116
+ ...ALL_CLASSIFICATION_METRICS,
117
+ ];
118
+ const METRIC_DEFINITIONS_BY_KEY = new Map(ALL_SCORE_METRICS.map(metric => [metric.key, metric]));
119
+ export function isClassificationTaskType(taskType) {
120
+ return CLASSIFICATION_TASK_TYPES.has((taskType || "").toLowerCase());
121
+ }
122
+ function hasRegressionTaskType(taskType) {
123
+ return !!taskType && !isClassificationTaskType(taskType);
124
+ }
125
+ export function getMetricsForTaskType(taskType) {
126
+ if (isClassificationTaskType(taskType))
127
+ return CLASSIFICATION_METRICS;
128
+ return REGRESSION_METRICS;
129
+ }
130
+ export function getMetricDefinition(key) {
131
+ const canonical = canonicalMetricKey(key);
132
+ return canonical ? METRIC_DEFINITIONS_BY_KEY.get(canonical) : undefined;
133
+ }
134
+ export function isKnownMetricKey(key) {
135
+ return getMetricDefinition(key) != null;
136
+ }
137
+ export function orderMetricKeys(metricKeys) {
138
+ const requested = new Set(metricKeys
139
+ .map(key => canonicalMetricKey(key))
140
+ .filter(key => key && METRIC_DEFINITIONS_BY_KEY.has(key)));
141
+ return ALL_SCORE_METRICS
142
+ .map(metric => metric.key)
143
+ .filter(key => requested.has(key));
144
+ }
145
+ export function getMetricDefinitions(metricKeys) {
146
+ return orderMetricKeys(metricKeys)
147
+ .map(key => METRIC_DEFINITIONS_BY_KEY.get(key))
148
+ .filter((metric) => !!metric);
149
+ }
150
+ export function groupMetricDefinitions(metricKeys) {
151
+ const labels = {
152
+ general: "General",
153
+ regression: "Regression",
154
+ multiclass: "Multiclass",
155
+ binary: "Binary",
156
+ };
157
+ const definitions = getMetricDefinitions(metricKeys);
158
+ return ["regression", "multiclass", "binary", "general"]
159
+ .map(group => ({
160
+ group,
161
+ label: labels[group],
162
+ metrics: definitions.filter(metric => metric.group === group),
163
+ }))
164
+ .filter(section => section.metrics.length > 0);
165
+ }
166
+ function combineMetricSelections(...metricLists) {
167
+ return orderMetricKeys(metricLists.flatMap(metrics => metrics ?? []));
168
+ }
169
+ export function getDefaultSelectedMetricsForTaskTypes(taskTypes) {
170
+ let hasClassification = false;
171
+ let hasRegression = false;
172
+ for (const taskType of taskTypes) {
173
+ if (isClassificationTaskType(taskType))
174
+ hasClassification = true;
175
+ else if (hasRegressionTaskType(taskType))
176
+ hasRegression = true;
177
+ }
178
+ if (hasClassification && hasRegression) {
179
+ return combineMetricSelections(DEFAULT_DATASET_ITEM_REGRESSION_METRICS, DEFAULT_DATASET_ITEM_CLASSIFICATION_METRICS);
180
+ }
181
+ if (hasClassification)
182
+ return [...DEFAULT_DATASET_ITEM_CLASSIFICATION_METRICS];
183
+ return [...DEFAULT_DATASET_ITEM_REGRESSION_METRICS];
184
+ }
185
+ export function getLegacySelectedMetricsForTaskTypes(taskTypes) {
186
+ let hasClassification = false;
187
+ let hasRegression = false;
188
+ for (const taskType of taskTypes) {
189
+ if (isClassificationTaskType(taskType))
190
+ hasClassification = true;
191
+ else if (hasRegressionTaskType(taskType))
192
+ hasRegression = true;
193
+ }
194
+ if (hasClassification && hasRegression) {
195
+ return combineMetricSelections(LEGACY_DATASET_ITEM_REGRESSION_METRICS, LEGACY_DATASET_ITEM_CLASSIFICATION_METRICS);
196
+ }
197
+ if (hasClassification)
198
+ return [...LEGACY_DATASET_ITEM_CLASSIFICATION_METRICS];
199
+ return [...LEGACY_DATASET_ITEM_REGRESSION_METRICS];
200
+ }
201
+ export function getDefaultSelectionUpgradeCandidatesForTaskTypes(taskTypes) {
202
+ let hasClassification = false;
203
+ let hasRegression = false;
204
+ for (const taskType of taskTypes) {
205
+ if (isClassificationTaskType(taskType))
206
+ hasClassification = true;
207
+ else if (hasRegressionTaskType(taskType))
208
+ hasRegression = true;
209
+ }
210
+ if (!(hasClassification && hasRegression)) {
211
+ return [];
212
+ }
213
+ return [
214
+ [...DEFAULT_DATASET_ITEM_REGRESSION_METRICS],
215
+ [...LEGACY_DATASET_ITEM_REGRESSION_METRICS],
216
+ [...DEFAULT_DATASET_ITEM_CLASSIFICATION_METRICS],
217
+ [...LEGACY_DATASET_ITEM_CLASSIFICATION_METRICS],
218
+ ].map(orderMetricKeys);
219
+ }
220
+ export function getAvailableMetricKeysForTaskTypes(taskTypes) {
221
+ let hasClassification = false;
222
+ let hasRegression = false;
223
+ for (const taskType of taskTypes) {
224
+ if (isClassificationTaskType(taskType))
225
+ hasClassification = true;
226
+ else if (hasRegressionTaskType(taskType))
227
+ hasRegression = true;
228
+ }
229
+ if (hasClassification && hasRegression) {
230
+ return orderMetricKeys([
231
+ ...ALL_GENERAL_METRICS.map(metric => metric.key),
232
+ ...ALL_REGRESSION_METRICS.map(metric => metric.key),
233
+ ...ALL_CLASSIFICATION_METRICS.map(metric => metric.key),
234
+ ]);
235
+ }
236
+ if (hasClassification) {
237
+ return orderMetricKeys([
238
+ ...ALL_GENERAL_METRICS.map(metric => metric.key),
239
+ ...ALL_CLASSIFICATION_METRICS.map(metric => metric.key),
240
+ ]);
241
+ }
242
+ return orderMetricKeys([
243
+ ...ALL_GENERAL_METRICS.map(metric => metric.key),
244
+ ...ALL_REGRESSION_METRICS.map(metric => metric.key),
245
+ ]);
246
+ }
247
+ export function filterMetricsForTaskType(metricKeys, taskType) {
248
+ const allowedKeys = new Set([
249
+ ...ALL_GENERAL_METRICS,
250
+ ...(isClassificationTaskType(taskType) ? ALL_CLASSIFICATION_METRICS : ALL_REGRESSION_METRICS),
251
+ ].map(metric => metric.key));
252
+ return orderMetricKeys(metricKeys).filter(key => allowedKeys.has(key));
253
+ }
254
+ /** Get all available metrics for a task type. */
255
+ export function getAvailableMetrics(taskType) {
256
+ if (isClassificationTaskType(taskType)) {
257
+ return ALL_CLASSIFICATION_METRICS;
258
+ }
259
+ return ALL_REGRESSION_METRICS;
260
+ }
261
+ export const REGRESSION_PRESETS = [
262
+ { id: "essential", label: "Essential", keys: ["r2", "rmse", "mae"] },
263
+ { id: "nirs", label: "NIRS", keys: ["r2", "rmse", "sep", "rpd", "bias", "consistency", "nrmse"] },
264
+ { id: "ml", label: "ML", keys: ["r2", "rmse", "mse", "mae", "mape", "pearson_r"] },
265
+ { id: "full", label: "Full", keys: ALL_REGRESSION_METRICS.map(m => m.key) },
266
+ ];
267
+ export const CLASSIFICATION_PRESETS = [
268
+ { id: "essential", label: "Essential", keys: ["accuracy", "balanced_accuracy", "f1"] },
269
+ { id: "full", label: "Full", keys: ALL_CLASSIFICATION_METRICS.map(m => m.key) },
270
+ ];
271
+ export function getPresetsForTaskType(taskType) {
272
+ if (isClassificationTaskType(taskType)) {
273
+ return CLASSIFICATION_PRESETS;
274
+ }
275
+ return REGRESSION_PRESETS;
276
+ }
277
+ export function getPresetsForTaskTypes(taskTypes) {
278
+ let hasClassification = false;
279
+ let hasRegression = false;
280
+ for (const taskType of taskTypes) {
281
+ if (isClassificationTaskType(taskType))
282
+ hasClassification = true;
283
+ else if (hasRegressionTaskType(taskType))
284
+ hasRegression = true;
285
+ }
286
+ if (!(hasClassification && hasRegression)) {
287
+ return getPresetsForTaskType(hasClassification ? "classification" : "regression");
288
+ }
289
+ const classificationEssential = CLASSIFICATION_PRESETS.find(preset => preset.id === "essential")?.keys ?? [];
290
+ const classificationFull = CLASSIFICATION_PRESETS.find(preset => preset.id === "full")?.keys ?? [];
291
+ return [
292
+ {
293
+ id: "essential",
294
+ label: "Essential",
295
+ keys: combineMetricSelections(REGRESSION_PRESETS.find(preset => preset.id === "essential")?.keys, classificationEssential),
296
+ },
297
+ {
298
+ id: "nirs",
299
+ label: "NIRS",
300
+ keys: combineMetricSelections(REGRESSION_PRESETS.find(preset => preset.id === "nirs")?.keys, classificationEssential),
301
+ },
302
+ {
303
+ id: "ml",
304
+ label: "ML",
305
+ keys: combineMetricSelections(REGRESSION_PRESETS.find(preset => preset.id === "ml")?.keys, classificationEssential),
306
+ },
307
+ {
308
+ id: "full",
309
+ label: "Full",
310
+ keys: combineMetricSelections(REGRESSION_PRESETS.find(preset => preset.id === "full")?.keys, classificationFull),
311
+ },
312
+ ];
313
+ }
314
+ /** Get the default selected metrics for a task type. */
315
+ export function getDefaultSelectedMetrics(taskType) {
316
+ if (isClassificationTaskType(taskType)) {
317
+ return [...DEFAULT_DATASET_ITEM_CLASSIFICATION_METRICS];
318
+ }
319
+ if (taskType == null) {
320
+ return combineMetricSelections(DEFAULT_DATASET_ITEM_REGRESSION_METRICS, DEFAULT_DATASET_ITEM_CLASSIFICATION_METRICS);
321
+ }
322
+ return [...DEFAULT_DATASET_ITEM_REGRESSION_METRICS];
323
+ }
324
+ //# sourceMappingURL=scoreMetricCatalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoreMetricCatalog.js","sourceRoot":"","sources":["../../src/score/scoreMetricCatalog.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,4CAA4C;AAC5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAU,CAAC;AAEjE,gDAAgD;AAChD,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,UAAU;IACV,mBAAmB;IACnB,WAAW;IACX,QAAQ;CACA,CAAC;AAEX,qFAAqF;AACrF,MAAM,CAAC,MAAM,uCAAuC,GAAG;IACrD,MAAM;IACN,IAAI;IACJ,OAAO;IACP,KAAK;IACL,KAAK;IACL,WAAW;CACH,CAAC;AAEX,MAAM,CAAC,MAAM,sCAAsC,GAAG;IACpD,MAAM;IACN,IAAI;IACJ,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;CACG,CAAC;AAEX,MAAM,CAAC,MAAM,2CAA2C,GAAG;IACzD,UAAU;IACV,mBAAmB;IACnB,WAAW;IACX,QAAQ;CACA,CAAC;AAEX,MAAM,CAAC,MAAM,0CAA0C,GAAG;IACxD,UAAU;IACV,mBAAmB;IACnB,IAAI;IACJ,SAAS;CACD,CAAC;AAYX,MAAM,yBAAyB,GAAG,IAAI,GAAG,CAAC;IACxC,gBAAgB;IAChB,uBAAuB;IACvB,2BAA2B;CAC5B,CAAC,CAAC;AAEH,+EAA+E;AAC/E,yDAAyD;AACzD,+EAA+E;AAE/E,MAAM,CAAC,MAAM,mBAAmB,GAAuB,EAAE,CAAC;AAE1D,MAAM,CAAC,MAAM,sBAAsB,GAAuB;IACxD,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;IACxF,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;IAC7F,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;IAC1F,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;IAC1F,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;IAC7F,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;IAC1F,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;IAC3F,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE;IAC5F,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;IAC5G,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;IAChG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;IAC7F,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;IAC7F,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;IACzG,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;IAC5G;QACE,GAAG,EAAE,oBAAoB;QACzB,KAAK,EAAE,gBAAgB;QACvB,YAAY,EAAE,QAAQ;QACtB,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,YAAY;KACpB;IACD,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;IACzG,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE;CACzG,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAuB;IAC5D,EAAE,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;IACrG;QACE,GAAG,EAAE,mBAAmB;QACxB,KAAK,EAAE,mBAAmB;QAC1B,YAAY,EAAE,QAAQ;QACtB,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,YAAY;KACpB;IACD,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;IACxG;QACE,GAAG,EAAE,oBAAoB;QACzB,KAAK,EAAE,oBAAoB;QAC3B,YAAY,EAAE,SAAS;QACvB,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,YAAY;KACpB;IACD,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;IACjG;QACE,GAAG,EAAE,iBAAiB;QACtB,KAAK,EAAE,iBAAiB;QACxB,YAAY,EAAE,QAAQ;QACtB,SAAS,EAAE,QAAQ;QACnB,KAAK,EAAE,YAAY;KACpB;IACD,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;IACxF,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE;IAC5G,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC/F,EAAE,GAAG,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACrG,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;IACzG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;CACpG,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAuB;IACnD,GAAG,mBAAmB;IACtB,GAAG,sBAAsB;IACzB,GAAG,0BAA0B;CAC9B,CAAC;AAEF,MAAM,yBAAyB,GAAG,IAAI,GAAG,CACvC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAU,CAAC,CAC/D,CAAC;AAEF,MAAM,UAAU,wBAAwB,CAAC,QAAmC;IAC1E,OAAO,yBAAyB,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,qBAAqB,CAAC,QAAmC;IAChE,OAAO,CAAC,CAAC,QAAQ,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,QAAuB;IAC3D,IAAI,wBAAwB,CAAC,QAAQ,CAAC;QAAE,OAAO,sBAAsB,CAAC;IACtE,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAA8B;IAChE,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC1C,OAAO,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAA8B;IAC7D,OAAO,mBAAmB,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,UAA6B;IAC3D,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,UAAU;SACP,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;SACnC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAC5D,CAAC;IACF,OAAO,iBAAiB;SACrB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;SACzB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAA6B;IAChE,OAAO,eAAe,CAAC,UAAU,CAAC;SAC/B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;SAC9C,MAAM,CAAC,CAAC,MAAM,EAA8B,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAA6B;IAKlE,MAAM,MAAM,GAAgC;QAC1C,OAAO,EAAE,SAAS;QAClB,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE,YAAY;QACxB,MAAM,EAAE,QAAQ;KACjB,CAAC;IAEF,MAAM,WAAW,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAErD,OAAQ,CAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,CAAW;SAChE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACb,KAAK;QACL,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;QACpB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC;KAC9D,CAAC,CAAC;SACF,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAG,WAAwD;IAC1F,OAAO,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,UAAU,qCAAqC,CACnD,SAA8C;IAE9C,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,wBAAwB,CAAC,QAAQ,CAAC;YAAE,iBAAiB,GAAG,IAAI,CAAC;aAC5D,IAAI,qBAAqB,CAAC,QAAQ,CAAC;YAAE,aAAa,GAAG,IAAI,CAAC;IACjE,CAAC;IAED,IAAI,iBAAiB,IAAI,aAAa,EAAE,CAAC;QACvC,OAAO,uBAAuB,CAC5B,uCAAuC,EACvC,2CAA2C,CAC5C,CAAC;IACJ,CAAC;IACD,IAAI,iBAAiB;QAAE,OAAO,CAAC,GAAG,2CAA2C,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,uCAAuC,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,oCAAoC,CAClD,SAA8C;IAE9C,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,wBAAwB,CAAC,QAAQ,CAAC;YAAE,iBAAiB,GAAG,IAAI,CAAC;aAC5D,IAAI,qBAAqB,CAAC,QAAQ,CAAC;YAAE,aAAa,GAAG,IAAI,CAAC;IACjE,CAAC;IAED,IAAI,iBAAiB,IAAI,aAAa,EAAE,CAAC;QACvC,OAAO,uBAAuB,CAC5B,sCAAsC,EACtC,0CAA0C,CAC3C,CAAC;IACJ,CAAC;IACD,IAAI,iBAAiB;QAAE,OAAO,CAAC,GAAG,0CAA0C,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,sCAAsC,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,gDAAgD,CAC9D,SAA8C;IAE9C,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,wBAAwB,CAAC,QAAQ,CAAC;YAAE,iBAAiB,GAAG,IAAI,CAAC;aAC5D,IAAI,qBAAqB,CAAC,QAAQ,CAAC;YAAE,aAAa,GAAG,IAAI,CAAC;IACjE,CAAC;IAED,IAAI,CAAC,CAAC,iBAAiB,IAAI,aAAa,CAAC,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO;QACL,CAAC,GAAG,uCAAuC,CAAC;QAC5C,CAAC,GAAG,sCAAsC,CAAC;QAC3C,CAAC,GAAG,2CAA2C,CAAC;QAChD,CAAC,GAAG,0CAA0C,CAAC;KAChD,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,SAA8C;IAE9C,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,wBAAwB,CAAC,QAAQ,CAAC;YAAE,iBAAiB,GAAG,IAAI,CAAC;aAC5D,IAAI,qBAAqB,CAAC,QAAQ,CAAC;YAAE,aAAa,GAAG,IAAI,CAAC;IACjE,CAAC;IAED,IAAI,iBAAiB,IAAI,aAAa,EAAE,CAAC;QACvC,OAAO,eAAe,CAAC;YACrB,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;YAChD,GAAG,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;YACnD,GAAG,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;IACL,CAAC;IACD,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,eAAe,CAAC;YACrB,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;YAChD,GAAG,0BAA0B,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,eAAe,CAAC;QACrB,GAAG,mBAAmB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;QAChD,GAAG,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC;KACpD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,UAA6B,EAC7B,QAAmC;IAEnC,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB;QACE,GAAG,mBAAmB;QACtB,GAAG,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,sBAAsB,CAAC;KAC9F,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAC5B,CAAC;IAEF,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,mBAAmB,CAAC,QAAuB;IACzD,IAAI,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,0BAA0B,CAAC;IACpC,CAAC;IACD,OAAO,sBAAsB,CAAC;AAChC,CAAC;AASD,MAAM,CAAC,MAAM,kBAAkB,GAAmB;IAChD,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;IACpE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE;IACjG,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE;IAClF,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;CAC5E,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAmB;IACpD,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,UAAU,EAAE,mBAAmB,EAAE,IAAI,CAAC,EAAE;IACtF,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;CAChF,CAAC;AAEF,MAAM,UAAU,qBAAqB,CAAC,QAAuB;IAC3D,IAAI,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,sBAAsB,CAAC;IAChC,CAAC;IACD,OAAO,kBAAkB,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,SAA8C;IAE9C,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAC9B,IAAI,aAAa,GAAG,KAAK,CAAC;IAE1B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,wBAAwB,CAAC,QAAQ,CAAC;YAAE,iBAAiB,GAAG,IAAI,CAAC;aAC5D,IAAI,qBAAqB,CAAC,QAAQ,CAAC;YAAE,aAAa,GAAG,IAAI,CAAC;IACjE,CAAC;IAED,IAAI,CAAC,CAAC,iBAAiB,IAAI,aAAa,CAAC,EAAE,CAAC;QAC1C,OAAO,qBAAqB,CAAC,iBAAiB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,uBAAuB,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;IAC7G,MAAM,kBAAkB,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;IAEnG,OAAO;QACL;YACE,EAAE,EAAE,WAAW;YACf,KAAK,EAAE,WAAW;YAClB,IAAI,EAAE,uBAAuB,CAC3B,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE,IAAI,EAClE,uBAAuB,CACxB;SACF;QACD;YACE,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,uBAAuB,CAC3B,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,IAAI,EAC7D,uBAAuB,CACxB;SACF;QACD;YACE,EAAE,EAAE,IAAI;YACR,KAAK,EAAE,IAAI;YACX,IAAI,EAAE,uBAAuB,CAC3B,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,IAAI,EAC3D,uBAAuB,CACxB;SACF;QACD;YACE,EAAE,EAAE,MAAM;YACV,KAAK,EAAE,MAAM;YACb,IAAI,EAAE,uBAAuB,CAC3B,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,IAAI,EAC7D,kBAAkB,CACnB;SACF;KACF,CAAC;AACJ,CAAC;AAED,wDAAwD;AACxD,MAAM,UAAU,yBAAyB,CAAC,QAAuB;IAC/D,IAAI,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,2CAA2C,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACrB,OAAO,uBAAuB,CAC5B,uCAAuC,EACvC,2CAA2C,CAC5C,CAAC;IACJ,CAAC;IACD,OAAO,CAAC,GAAG,uCAAuC,CAAC,CAAC;AACtD,CAAC"}