nirs4all-ui 0.1.17 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/assets/dropzone.css +21 -0
  2. package/assets/qualification.css +3 -0
  3. package/dist/components/DatasetDropzone.d.ts +44 -0
  4. package/dist/components/DatasetDropzone.d.ts.map +1 -0
  5. package/dist/components/DatasetDropzone.js +84 -0
  6. package/dist/components/DatasetDropzone.js.map +1 -0
  7. package/dist/components/index.d.ts +1 -0
  8. package/dist/components/index.d.ts.map +1 -1
  9. package/dist/components/index.js +1 -0
  10. package/dist/components/index.js.map +1 -1
  11. package/dist/pipelines/studio-presets.json +13 -23
  12. package/dist/qualification/EvidenceTable.d.ts +3 -1
  13. package/dist/qualification/EvidenceTable.d.ts.map +1 -1
  14. package/dist/qualification/EvidenceTable.js +14 -6
  15. package/dist/qualification/EvidenceTable.js.map +1 -1
  16. package/dist/qualification/TargetDistribution.d.ts +4 -3
  17. package/dist/qualification/TargetDistribution.d.ts.map +1 -1
  18. package/dist/qualification/TargetDistribution.js +36 -21
  19. package/dist/qualification/TargetDistribution.js.map +1 -1
  20. package/dist/qualification/extractBlocks.d.ts +20 -0
  21. package/dist/qualification/extractBlocks.d.ts.map +1 -1
  22. package/dist/qualification/extractBlocks.js +34 -0
  23. package/dist/qualification/extractBlocks.js.map +1 -1
  24. package/dist/qualification/locale.d.ts +41 -0
  25. package/dist/qualification/locale.d.ts.map +1 -1
  26. package/dist/qualification/locale.js +45 -0
  27. package/dist/qualification/locale.js.map +1 -1
  28. package/dist/qualification/report.d.ts +13 -1
  29. package/dist/qualification/report.d.ts.map +1 -1
  30. package/dist/qualification/report.js +91 -3
  31. package/dist/qualification/report.js.map +1 -1
  32. package/package.json +1 -1
@@ -0,0 +1,21 @@
1
+ /* DatasetDropzone — ecosystem drop target (theme.css tokens). */
2
+ .n4dz{display:flex;flex-direction:column;gap:10px;width:100%}
3
+ .n4dz-zone{position:relative;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px 24px;border:2px dashed color-mix(in srgb,var(--teal,#0d9488) 45%,transparent);border-radius:var(--radius,16px);background:color-mix(in srgb,var(--surface,#fff) 85%,transparent);text-align:center;cursor:pointer;outline:none;transition:border-color .2s,background .2s,transform .2s}
4
+ .n4dz-zone:hover,.n4dz-zone[data-active]{border-color:var(--teal,#0d9488);background:color-mix(in srgb,var(--teal,#0d9488) 6%,var(--surface,#fff))}
5
+ .n4dz-zone[data-active]{transform:translateY(-2px)}
6
+ .n4dz-zone:focus-visible{outline:2px solid var(--teal,#0d9488);outline-offset:3px}
7
+ .n4dz-zone[data-busy]{cursor:progress;border-style:solid;border-color:var(--teal,#0d9488)}
8
+ .n4dz-hairline{position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--teal-d,#0f766e),var(--teal-l,#2dd4bf),var(--cyan,#06b6d4),var(--green,#10b981));opacity:.9}
9
+ .n4dz-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:color-mix(in srgb,var(--teal,#0d9488) 12%,transparent);color:var(--teal,#0d9488);transition:background .2s,color .2s}
10
+ .n4dz-zone[data-active] .n4dz-icon{background:var(--teal,#0d9488);color:#fff}
11
+ .n4dz-text{display:flex;flex-direction:column;gap:4px;align-items:center}
12
+ .n4dz-title{font-family:var(--display,inherit);font-size:1.15rem;font-weight:600;color:var(--text,inherit)}
13
+ .n4dz-hint{max-width:480px;font-size:.86rem;line-height:1.5;color:var(--text-2,#475569)}
14
+ .n4dz-link{border:0;background:none;padding:0;font:inherit;font-weight:600;color:var(--teal-d,#0f766e);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
15
+ .n4dz-spinner{width:28px;height:28px;border-radius:50%;border:3px solid color-mix(in srgb,var(--teal,#0d9488) 25%,transparent);border-top-color:var(--teal,#0d9488);animation:n4dz-spin .8s linear infinite}
16
+ @keyframes n4dz-spin{to{transform:rotate(360deg)}}
17
+ @media (prefers-reduced-motion:reduce){.n4dz-spinner{animation-duration:2.4s}}
18
+ .n4dz-error{padding:.7rem 1rem;border-radius:var(--radius-sm,10px);border:1px solid rgba(225,29,72,.3);background:rgba(225,29,72,.07);color:var(--text,inherit);text-align:left;font-size:.88rem}
19
+ .n4dz-note{margin:0;font-size:.78rem;color:var(--text-3,#64748b);text-align:center}
20
+ .n4dz-folder{align-self:center;font-size:.86rem}
21
+ .n4dz-link:disabled{cursor:default;opacity:.5}
@@ -174,3 +174,6 @@ a.n4q-stat:hover{border-color:var(--teal,#0d9488);transform:translateY(-1px);box
174
174
  :root[data-theme=dark] .n4q-matrix-track{background:rgba(255,255,255,.08)}
175
175
  :root[data-theme=dark] .n4q-band{fill-opacity:.22}
176
176
  .n4q-table thead .n4q-nocase{text-transform:none;letter-spacing:0}
177
+ .n4q-family-row th{padding-top:1rem;font-size:.95rem;font-weight:700;text-transform:none;letter-spacing:0;border-bottom:2px solid var(--n4q-line,rgba(100,116,139,.3))}
178
+ .n4q-family-count{margin-left:.6rem;font-size:.76rem;font-weight:500;opacity:.7}
179
+ .n4q-structured{font-size:.82rem;max-width:28rem}
@@ -0,0 +1,44 @@
1
+ import { type ReactNode } from "react";
2
+ /** A file chosen by drop or picker; `name` keeps its path inside a dropped or chosen folder. */
3
+ export interface DroppedFile {
4
+ name: string;
5
+ file: File;
6
+ }
7
+ /** Files of a file input, with their folder-relative path when a folder was chosen. */
8
+ export declare function pickedFiles(list: ArrayLike<File> | null | undefined): DroppedFile[];
9
+ /**
10
+ * Files of a drop, dropped folders read recursively. Call it synchronously from the drop
11
+ * handler: the browser invalidates the drag data once the event returns.
12
+ */
13
+ export declare function droppedFiles(transfer: DataTransfer): Promise<DroppedFile[]>;
14
+ export interface DatasetDropzoneProps {
15
+ /** Called with every dropped or chosen file (folders expanded). */
16
+ onFiles: (files: DroppedFile[]) => void;
17
+ /** A dropped folder could not be read. */
18
+ onError?: (error: unknown) => void;
19
+ title?: ReactNode;
20
+ /** Usually "or browse — formats"; rendered under the title. */
21
+ hint?: ReactNode;
22
+ /** Shows a folder picker button with this label under the zone. */
23
+ folderLabel?: string;
24
+ busy?: boolean;
25
+ busyTitle?: ReactNode;
26
+ busyHint?: ReactNode;
27
+ error?: ReactNode;
28
+ /** Small reassurance line, e.g. that files never leave the browser. */
29
+ note?: ReactNode;
30
+ /** Highlights the zone while the host tracks a page-level drag. */
31
+ active?: boolean;
32
+ accept?: string;
33
+ icon?: ReactNode;
34
+ busyIcon?: ReactNode;
35
+ className?: string;
36
+ }
37
+ /**
38
+ * Ecosystem dataset drop zone (Studio, Web, QualiNIRS, IO): dashed teal target with a spectral
39
+ * hairline, drag highlight, click/keyboard file picker, an optional folder picker button under the
40
+ * zone, and a busy state (host `busy` or a dropped folder being listed) that replaces the icon by a
41
+ * spinner. It only lists the files the user hands over; parsing and assembly stay in the host.
42
+ */
43
+ export declare function DatasetDropzone({ onFiles, onError, title, hint, folderLabel, busy, busyTitle, busyHint, error, note, active, accept, icon, busyIcon, className, }: DatasetDropzoneProps): import("react").JSX.Element;
44
+ //# sourceMappingURL=DatasetDropzone.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatasetDropzone.d.ts","sourceRoot":"","sources":["../../src/components/DatasetDropzone.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE7E,gGAAgG;AAChG,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,IAAI,CAAC;CACZ;AAKD,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,EAAE,CAEnF;AAuBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAM3E;AAED,MAAM,WAAW,oBAAoB;IACnC,mEAAmE;IACnE,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,KAAK,IAAI,CAAC;IACxC,0CAA0C;IAC1C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mEAAmE;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,uEAAuE;IACvE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,mEAAmE;IACnE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAQD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EAAE,OAAO,EAAE,KAAgC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAY,EAAE,SAAmC,EACxH,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,MAAc,EAAE,MAAM,EAAE,IAAkB,EAAE,QAAQ,EAAE,SAAS,GACvF,EAAE,oBAAoB,+BAuDtB"}
@@ -0,0 +1,84 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useRef, useState } from "react";
3
+ /** Hidden files (.DS_Store, .git/…) never belong to a dataset. */
4
+ const visible = (picked) => !picked.name.split("/").some((part) => part.startsWith("."));
5
+ /** Files of a file input, with their folder-relative path when a folder was chosen. */
6
+ export function pickedFiles(list) {
7
+ return Array.from(list ?? []).map((file) => ({ name: file.webkitRelativePath || file.name, file })).filter(visible);
8
+ }
9
+ async function readEntries(entries) {
10
+ const out = [];
11
+ const walk = async (entry) => {
12
+ // hidden files and folders are skipped before any read
13
+ if (entry.name.startsWith("."))
14
+ return;
15
+ if (entry.isFile) {
16
+ const file = await new Promise((resolve, reject) => entry.file(resolve, reject));
17
+ out.push({ name: entry.fullPath.replace(/^\//, ""), file });
18
+ return;
19
+ }
20
+ const reader = entry.createReader();
21
+ for (;;) {
22
+ const batch = await new Promise((resolve, reject) => reader.readEntries(resolve, reject));
23
+ if (!batch.length)
24
+ return;
25
+ for (const child of batch)
26
+ await walk(child);
27
+ }
28
+ };
29
+ for (const entry of entries)
30
+ await walk(entry);
31
+ return out;
32
+ }
33
+ /**
34
+ * Files of a drop, dropped folders read recursively. Call it synchronously from the drop
35
+ * handler: the browser invalidates the drag data once the event returns.
36
+ */
37
+ export function droppedFiles(transfer) {
38
+ const entries = Array.from(transfer.items ?? [])
39
+ .map((item) => item.webkitGetAsEntry?.() ?? null)
40
+ .filter((entry) => entry !== null);
41
+ if (!entries.length)
42
+ return Promise.resolve(pickedFiles(transfer.files));
43
+ return readEntries(entries);
44
+ }
45
+ const UPLOAD_ICON = (_jsx("svg", { viewBox: "0 0 24 24", width: "28", height: "28", "aria-hidden": "true", children: _jsx("path", { d: "M12 15V4m0 0L7.5 8.5M12 4l4.5 4.5M5 15v3a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-3", fill: "none", stroke: "currentColor", strokeWidth: "1.8", strokeLinecap: "round", strokeLinejoin: "round" }) }));
46
+ /**
47
+ * Ecosystem dataset drop zone (Studio, Web, QualiNIRS, IO): dashed teal target with a spectral
48
+ * hairline, drag highlight, click/keyboard file picker, an optional folder picker button under the
49
+ * zone, and a busy state (host `busy` or a dropped folder being listed) that replaces the icon by a
50
+ * spinner. It only lists the files the user hands over; parsing and assembly stay in the host.
51
+ */
52
+ export function DatasetDropzone({ onFiles, onError, title = "Drop your spectra here", hint, folderLabel, busy = false, busyTitle = "Reading your dataset…", busyHint, error, note, active = false, accept, icon = UPLOAD_ICON, busyIcon, className, }) {
53
+ const files = useRef(null);
54
+ const folder = useRef(null);
55
+ const [dragging, setDragging] = useState(false);
56
+ // a dropped folder is read asynchronously; overlapping drops are refused until it is done
57
+ const reading = useRef(false);
58
+ const [readingDrop, setReadingDrop] = useState(false);
59
+ const blocked = busy || readingDrop;
60
+ const open = () => { if (!blocked)
61
+ files.current?.click(); };
62
+ const onKey = (event) => {
63
+ if (event.key === "Enter" || event.key === " ") {
64
+ event.preventDefault();
65
+ open();
66
+ }
67
+ };
68
+ const highlighted = (dragging || active) && !blocked;
69
+ return (_jsxs("div", { className: ["n4dz", className].filter(Boolean).join(" "), children: [_jsxs("div", { className: "n4dz-zone", role: "button", tabIndex: 0, "aria-disabled": blocked, "aria-busy": blocked, "data-active": highlighted || undefined, "data-busy": blocked || undefined, onClick: open, onKeyDown: onKey, onDragOver: (event) => { event.preventDefault(); if (!blocked)
70
+ setDragging(true); }, onDragLeave: (event) => { if (!event.currentTarget.contains(event.relatedTarget))
71
+ setDragging(false); }, onDrop: (event) => {
72
+ event.preventDefault();
73
+ event.stopPropagation();
74
+ setDragging(false);
75
+ if (busy || reading.current)
76
+ return;
77
+ reading.current = true;
78
+ setReadingDrop(true);
79
+ droppedFiles(event.dataTransfer)
80
+ .then(onFiles, (cause) => onError?.(cause))
81
+ .finally(() => { reading.current = false; setReadingDrop(false); });
82
+ }, children: [_jsx("span", { className: "n4dz-hairline", "aria-hidden": "true" }), _jsx("span", { className: "n4dz-icon", "aria-hidden": "true", children: blocked ? (busyIcon ?? _jsx("span", { className: "n4dz-spinner" })) : icon }), _jsxs("span", { className: "n4dz-text", role: blocked ? "status" : undefined, "aria-live": blocked ? "polite" : undefined, children: [_jsx("span", { className: "n4dz-title", children: blocked ? busyTitle : title }), blocked ? (busyHint ? _jsx("span", { className: "n4dz-hint", children: busyHint }) : null) : (hint ? _jsx("span", { className: "n4dz-hint", children: hint }) : null)] })] }), folderLabel ? (_jsx("button", { type: "button", className: "n4dz-link n4dz-folder", disabled: blocked, onClick: () => folder.current?.click(), children: folderLabel })) : null, _jsx("input", { ref: files, type: "file", multiple: true, accept: accept, hidden: true, tabIndex: -1, onChange: (event) => { onFiles(pickedFiles(event.target.files)); event.target.value = ""; } }), folderLabel ? _jsx("input", { ref: folder, type: "file", multiple: true, hidden: true, tabIndex: -1, webkitdirectory: "", onChange: (event) => { onFiles(pickedFiles(event.target.files)); event.target.value = ""; } }) : null, error ? _jsx("div", { className: "n4dz-error", role: "alert", children: error }) : null, note ? _jsx("p", { className: "n4dz-note", children: note }) : null] }));
83
+ }
84
+ //# sourceMappingURL=DatasetDropzone.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DatasetDropzone.js","sourceRoot":"","sources":["../../src/components/DatasetDropzone.tsx"],"names":[],"mappings":"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"}
@@ -10,4 +10,5 @@ export * from "./RuntimeDiagnosticList.js";
10
10
  export * from "./RuntimeEngineBadge.js";
11
11
  export * from "./RuntimeResultStatusBadge.js";
12
12
  export * from "./PipelinePresetCard.js";
13
+ export * from "./DatasetDropzone.js";
13
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC"}
@@ -10,4 +10,5 @@ export * from "./RuntimeDiagnosticList.js";
10
10
  export * from "./RuntimeEngineBadge.js";
11
11
  export * from "./RuntimeResultStatusBadge.js";
12
12
  export * from "./PipelinePresetCard.js";
13
+ export * from "./DatasetDropzone.js";
13
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC"}
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "source": "nirs4all-studio/api/presets",
3
- "commit": "2926c6a44b50715ee79a213ebbf523dba5d92f3d",
3
+ "commit": "7a4bddb3e3a7c2cae985e011fe38feae8e507363",
4
4
  "files_sha256": {
5
- "complex_pls.yaml": "d29397856ee3f32c27704b564fcd079ed8f78c03d91ec33b274fa454fff264f2",
5
+ "complex_pls.yaml": "d4c8ed7989cc813d0ef9886d682def3960957d756eb74c7e6f6f55b5314fadd9",
6
6
  "complex_trees.yaml": "ab5f88ec1c1f0adeff67e8e32d9a690389ec3b7fffeffc67bc38edbba231dccf",
7
7
  "deep_nonlinear_exploration.yaml": "815f5ff1e960cb73cdec080f29ba1897983a0e37320f771cfd01f1f11f6c34e2",
8
- "fast_result.yaml": "9b1a17e4cb3ab5bef0e9e06f0cfd29cfe4d07757417f98a3816656818a5ea074",
8
+ "fast_result.yaml": "a14839845ccd84a82371ffc4521f359aa2fb4624804f26319832a1e6a405deab",
9
9
  "nonlinear_exploration.yaml": "fb5bc52da3d05f9dd5de256213f398bca8d1375802cfe05d8928ab55d28a2844",
10
10
  "simple_pls.yaml": "b78ccde2d0145809bfb49067aef71ff9a30abb5ddfe6e3f4e552cee05aefc8f4",
11
11
  "simple_trees_boosting.yaml": "76f1c9948f66ecd07f7c2253fb460dc5e8f6d4acdf324a60662f463846a9958f",
12
12
  "ultra_pls.yaml": "51c9c9ce88f47d813b4ff06b38b647e4e2b48be8796ae963f785022e9feedc65",
13
- "ultra_slow.yaml": "e18f81d578c9e89c3e276c6c5f325b40fe1212aac20089a64a5ea0685cffa6f2",
13
+ "ultra_slow.yaml": "7142f406c1a5d50dc7c1db2569e7296e73339343f8202290c6ebe31c57900e31",
14
14
  "ultra_trees.yaml": "c0346f612ea050ad97f1097e1c1e6b336dcd426e84bb79f9271e1745e061227d"
15
15
  },
16
16
  "presets": [
@@ -135,9 +135,9 @@
135
135
  "model": {
136
136
  "class": "nirs4all.operators.models.sklearn.aom_pls.AOMPLSRegressor",
137
137
  "params": {
138
- "n_components": 12,
139
- "center": true,
140
- "scale": false
138
+ "max_components": 12,
139
+ "center_x": true,
140
+ "scale_x": false
141
141
  }
142
142
  },
143
143
  "name": "AOM-PLS"
@@ -590,9 +590,9 @@
590
590
  "model": {
591
591
  "class": "nirs4all.operators.models.sklearn.aom_pls.AOMPLSRegressor",
592
592
  "params": {
593
- "n_components": 12,
594
- "center": true,
595
- "scale": false
593
+ "max_components": 12,
594
+ "center_x": true,
595
+ "scale_x": false
596
596
  }
597
597
  },
598
598
  "name": "AOM-PLS"
@@ -3712,8 +3712,8 @@
3712
3712
  "model": {
3713
3713
  "class": "nirs4all.operators.models.sklearn.aom_pls.AOMPLSRegressor",
3714
3714
  "params": {
3715
- "center": true,
3716
- "scale": false
3715
+ "center_x": true,
3716
+ "scale_x": false
3717
3717
  }
3718
3718
  },
3719
3719
  "name": "AOM-PLS-Finetuned",
@@ -3721,20 +3721,10 @@
3721
3721
  "n_trials": 80,
3722
3722
  "sampler": "tpe",
3723
3723
  "model_params": {
3724
- "n_components": [
3724
+ "max_components": [
3725
3725
  "int",
3726
3726
  1,
3727
3727
  27
3728
- ],
3729
- "n_orth": [
3730
- "int",
3731
- 0,
3732
- 5
3733
- ],
3734
- "operator_index": [
3735
- "int",
3736
- 0,
3737
- 120
3738
3728
  ]
3739
3729
  }
3740
3730
  }
@@ -6,7 +6,9 @@ export interface EvidenceTableProps {
6
6
  locale?: Locale;
7
7
  caption?: string;
8
8
  className?: string;
9
+ /** Group rows under their metric family (default true). */
10
+ grouped?: boolean;
9
11
  }
10
12
  /** Evidence availability table: every metric with status, reason, scope, denominators, provenance. Native table = keyboard/AT friendly. */
11
- export declare function EvidenceTable({ metrics, provenance, locale, caption, className }: EvidenceTableProps): import("react").JSX.Element;
13
+ export declare function EvidenceTable({ metrics, provenance, locale, caption, className, grouped }: EvidenceTableProps): import("react").JSX.Element;
12
14
  //# sourceMappingURL=EvidenceTable.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EvidenceTable.d.ts","sourceRoot":"","sources":["../../src/qualification/EvidenceTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAKpD,OAAO,KAAK,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEnF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC5C,UAAU,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,2IAA2I;AAC3I,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAa,EAAE,OAAO,EAAE,SAAS,EAAE,EAAE,kBAAkB,+BAwC3G"}
1
+ {"version":3,"file":"EvidenceTable.d.ts","sourceRoot":"","sources":["../../src/qualification/EvidenceTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAO,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAMpD,OAAO,KAAK,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AAEnF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAC5C,UAAU,CAAC,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAQD,2IAA2I;AAC3I,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAa,EAAE,OAAO,EAAE,SAAS,EAAE,OAAc,EAAE,EAAE,kBAAkB,+BAoD3H"}
@@ -1,13 +1,21 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { loc } from '../lab/locale.js';
3
3
  import { cx } from './_cx.js';
4
+ import { isScaledEngineNumber } from './engineNumber.js';
4
5
  import { AvailabilityBadge } from './Badges.js';
5
- import { metricLabel, QUALIFICATION_TEXT as T } from './locale.js';
6
- import { formatDenominators, formatQualificationValue, formatScalarParameters } from './report.js';
6
+ import { METRIC_FAMILY_LABEL, METRIC_FAMILY_QUESTION, metricLabel, QUALIFICATION_TEXT as T } from './locale.js';
7
+ import { formatDenominators, formatQualificationValue, formatScalarParameters, groupMetricsByFamily } from './report.js';
8
+ const fullValue = (value) => {
9
+ if (value === null || typeof value !== 'object')
10
+ return undefined;
11
+ const json = JSON.stringify(value);
12
+ return json.length > 2000 ? `${json.slice(0, 1999)}…` : json;
13
+ };
7
14
  /** Evidence availability table: every metric with status, reason, scope, denominators, provenance. Native table = keyboard/AT friendly. */
8
- export function EvidenceTable({ metrics, provenance, locale = 'fr', caption, className }) {
9
- return (_jsx("div", { className: cx('n4q-table-wrap', className), role: "region", tabIndex: 0, "aria-label": caption ?? loc(T.evidence, locale), children: _jsxs("table", { className: "n4q-table", children: [_jsx("caption", { children: caption ?? loc(T.evidence, locale) }), _jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: loc(T.metric, locale) }), _jsx("th", { scope: "col", children: loc(T.status, locale) }), _jsx("th", { scope: "col", children: loc(T.value, locale) }), _jsx("th", { scope: "col", children: loc(T.scope, locale) }), _jsx("th", { scope: "col", children: loc(T.denominators, locale) }), _jsx("th", { scope: "col", children: loc(T.provenance, locale) })] }) }), _jsx("tbody", { children: metrics.map((m, i) => (_jsxs("tr", { "data-metric-id": m.id, "data-availability": m.status, children: [_jsxs("th", { scope: "row", children: [metricLabel(m.id, locale) !== m.id ? _jsx("span", { className: "n4q-metric-name", children: metricLabel(m.id, locale) }) : null, _jsx("code", { children: m.id })] }), _jsx("td", { children: _jsx(AvailabilityBadge, { status: m.status, reason: m.reasonCode, locale: locale }) }), _jsx("td", { className: "n4q-num", children: m.status === 'computed'
10
- ? _jsxs(_Fragment, { children: [formatQualificationValue(m.value, locale), m.unit ? _jsxs("span", { className: "n4q-unit", children: [" ", m.unit] }) : null] })
11
- : _jsx("span", { className: "n4q-null", children: loc(T.notAvailable, locale) }) }), _jsxs("td", { children: [m.scope, _jsx("span", { className: "n4q-sub", children: [m.sourceId && `${loc(T.source, locale)} ${m.sourceId}`, m.targetId && `${loc(T.target, locale)} ${m.targetId}`, `${loc(T.population, locale)} ${m.populationId}`, `${loc(T.view, locale)} ${m.viewId}`].filter(Boolean).join(' · ') }), formatScalarParameters(m.parameters) ? _jsxs("span", { className: "n4q-sub", children: [loc(T.parameters, locale), ": ", formatScalarParameters(m.parameters)] }) : null] }), _jsx("td", { children: formatDenominators(m.denominators) || '—' }), _jsxs("td", { children: [_jsx("code", { children: m.protocolVersion }), provenance ? _jsx("span", { className: "n4q-sub", children: provenance.engineVersion }) : null] })] }, `${m.id}:${m.sourceId ?? ''}:${m.targetId ?? ''}:${i}`))) })] }) }));
15
+ export function EvidenceTable({ metrics, provenance, locale = 'fr', caption, className, grouped = true }) {
16
+ const groups = grouped ? groupMetricsByFamily(metrics) : [{ family: null, metrics: [...metrics] }];
17
+ return (_jsx("div", { className: cx('n4q-table-wrap', className), role: "region", tabIndex: 0, "aria-label": caption ?? loc(T.evidence, locale), children: _jsxs("table", { className: "n4q-table", children: [_jsx("caption", { children: caption ?? loc(T.evidence, locale) }), _jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: loc(T.metric, locale) }), _jsx("th", { scope: "col", children: loc(T.status, locale) }), _jsx("th", { scope: "col", children: loc(T.value, locale) }), _jsx("th", { scope: "col", children: loc(T.scope, locale) }), _jsx("th", { scope: "col", children: loc(T.denominators, locale) }), _jsx("th", { scope: "col", children: loc(T.provenance, locale) })] }) }), groups.map((group) => (_jsxs("tbody", { "data-family": group.family ?? undefined, children: [group.family ? (_jsx("tr", { className: "n4q-family-row", children: _jsxs("th", { scope: "rowgroup", colSpan: 6, children: [loc(METRIC_FAMILY_LABEL[group.family], locale), _jsx("span", { className: "n4q-family-count", children: loc(T.nMetrics, locale).replace('{n}', String(group.metrics.length)) }), _jsx("span", { className: "n4q-sub", children: loc(METRIC_FAMILY_QUESTION[group.family], locale) })] }) })) : null, group.metrics.map((m, i) => (_jsxs("tr", { "data-metric-id": m.id, "data-availability": m.status, children: [_jsxs("th", { scope: "row", children: [metricLabel(m.id, locale) !== m.id ? _jsx("span", { className: "n4q-metric-name", children: metricLabel(m.id, locale) }) : null, _jsx("code", { children: m.id })] }), _jsx("td", { children: _jsx(AvailabilityBadge, { status: m.status, reason: m.reasonCode, locale: locale }) }), _jsx("td", { className: m.value !== null && typeof m.value === 'object' && !isScaledEngineNumber(m.value) ? 'n4q-structured' : 'n4q-num', title: m.status === 'computed' ? fullValue(m.value) : undefined, children: m.status === 'computed'
18
+ ? _jsxs(_Fragment, { children: [formatQualificationValue(m.value, locale), m.unit ? _jsxs("span", { className: "n4q-unit", children: [" ", m.unit] }) : null] })
19
+ : _jsx("span", { className: "n4q-null", children: loc(T.notAvailable, locale) }) }), _jsxs("td", { children: [m.scope, _jsx("span", { className: "n4q-sub", children: [m.sourceId && `${loc(T.source, locale)} ${m.sourceId}`, m.targetId && `${loc(T.target, locale)} ${m.targetId}`, `${loc(T.population, locale)} ${m.populationId}`, `${loc(T.view, locale)} ${m.viewId}`].filter(Boolean).join(' · ') }), formatScalarParameters(m.parameters) ? _jsxs("span", { className: "n4q-sub", children: [loc(T.parameters, locale), ": ", formatScalarParameters(m.parameters)] }) : null] }), _jsx("td", { children: formatDenominators(m.denominators) || '—' }), _jsxs("td", { children: [_jsx("code", { children: m.protocolVersion }), provenance ? _jsx("span", { className: "n4q-sub", children: provenance.engineVersion }) : null] })] }, `${m.id}:${m.sourceId ?? ''}:${m.targetId ?? ''}:${i}`)))] }, group.family ?? 'all')))] }) }));
12
20
  }
13
21
  //# sourceMappingURL=EvidenceTable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EvidenceTable.js","sourceRoot":"","sources":["../../src/qualification/EvidenceTable.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EvidenceTable.js","sourceRoot":"","sources":["../../src/qualification/EvidenceTable.tsx"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ export interface TargetPoint {
10
10
  export interface TargetDistributionProps {
11
11
  /** engine (Methods) summary of the eligible exact values */
12
12
  summary: ContinuousSummary | null;
13
- /** raw declared values shown as a strip under the box (host decides the population) */
13
+ /** raw declared values shown as a histogram under the box (host decides the population) */
14
14
  points?: readonly TargetPoint[];
15
15
  unit?: string | null;
16
16
  title: string;
@@ -20,9 +20,10 @@ export interface TargetDistributionProps {
20
20
  }
21
21
  /**
22
22
  * Continuous target: the engine's quartile box (min–max whiskers, Q1–Q3 box, median,
23
- * mean) above a strip of the raw declared values, censored/composite ones hollow.
23
+ * mean) above a histogram of the raw declared values; censored/composite counts are
24
+ * stacked as outlined bars.
24
25
  */
25
- export declare function TargetDistribution({ summary, points, unit, title, locale, width, className }: TargetDistributionProps): import("react").JSX.Element;
26
+ export declare function TargetDistribution({ summary, points: declared, unit, title, locale, width, className }: TargetDistributionProps): import("react").JSX.Element;
26
27
  export interface ClassCountBarsProps {
27
28
  counts: Readonly<Record<string, number>>;
28
29
  title: string;
@@ -1 +1 @@
1
- {"version":3,"file":"TargetDistribution.d.ts","sourceRoot":"","sources":["../../src/qualification/TargetDistribution.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAKpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;AAEnE,uFAAuF;AACvF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,4DAA4D;IAC5D,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,uFAAuF;IACvF,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,MAAW,EAAE,IAAI,EAAE,KAAK,EAAE,MAAa,EAAE,KAAY,EAAE,SAAS,EAAE,EAAE,uBAAuB,+BAgHxI;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,mGAAmG;AACnG,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAW,EAAE,SAAS,EAAE,EAAE,mBAAmB,+BA2B5F"}
1
+ {"version":3,"file":"TargetDistribution.d.ts","sourceRoot":"","sources":["../../src/qualification/TargetDistribution.tsx"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAKpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;AAEnE,uFAAuF;AACvF,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,4DAA4D;IAC5D,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,2FAA2F;IAC3F,MAAM,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAkBD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAa,EAAE,IAAI,EAAE,KAAK,EAAE,MAAa,EAAE,KAAY,EAAE,SAAS,EAAE,EAAE,uBAAuB,+BAyIlJ;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,mGAAmG;AACnG,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAW,EAAE,SAAS,EAAE,EAAE,mBAAmB,+BA2B5F"}
@@ -9,50 +9,65 @@ const STATUS_COLOR = { exact: '#0d9488', censored: '#d97706', composite: '#7c3ae
9
9
  const BOX = '#0d9488';
10
10
  const MEAN = '#4f46e5';
11
11
  const PAD = { left: 16, right: 16 };
12
- /** Deterministic 0..1 jitter from an id (stable across renders, no randomness). */
13
- function jitter(id) {
14
- let h = 2166136261;
15
- for (let i = 0; i < id.length; i++)
16
- h = Math.imul(h ^ id.charCodeAt(i), 16777619);
17
- return ((h >>> 0) % 1000) / 1000;
12
+ /** Equal-width bins over the shown extent (about √n bins, 5 to 40), with counts per status. */
13
+ function binsOf(points, lo, hi) {
14
+ const k = Math.max(5, Math.min(40, Math.ceil(Math.sqrt(points.length))));
15
+ const step = hi > lo ? (hi - lo) / k : 1;
16
+ const bins = Array.from({ length: k }, (_, i) => ({ from: lo + i * step, to: lo + (i + 1) * step, exact: 0, censored: 0, composite: 0 }));
17
+ for (const p of points)
18
+ bins[Math.min(k - 1, Math.max(0, Math.floor((p.value - lo) / step)))][p.status] += 1;
19
+ return bins;
18
20
  }
21
+ const STACK = ['exact', 'censored', 'composite'];
19
22
  /**
20
23
  * Continuous target: the engine's quartile box (min–max whiskers, Q1–Q3 box, median,
21
- * mean) above a strip of the raw declared values, censored/composite ones hollow.
24
+ * mean) above a histogram of the raw declared values; censored/composite counts are
25
+ * stacked as outlined bars.
22
26
  */
23
- export function TargetDistribution({ summary, points = [], unit, title, locale = 'fr', width = 1000, className }) {
27
+ export function TargetDistribution({ summary, points: declared = [], unit, title, locale = 'fr', width = 1000, className }) {
24
28
  const id = useId();
25
29
  const [hover, setHover] = useState(null);
26
30
  const t = (k) => loc(C[k], locale);
27
- const height = points.length ? 196 : 112;
31
+ // non-finite values cannot be placed on the axis; they are neither binned nor counted
32
+ const points = declared.filter((p) => Number.isFinite(p.value));
33
+ const height = points.length ? 236 : 112;
28
34
  const x0 = PAD.left;
29
35
  const x1 = width - PAD.right;
30
36
  const all = [...points.map((p) => p.value), ...(summary ? [summary.min, summary.max] : [])];
37
+ const range = extentOf(all.length ? all : [0, 1]);
31
38
  const xd = niceExtent(all.length ? all : [0, 1], 0.04);
32
39
  const xs = makeScale(xd, x0, x1);
33
40
  const boxY = 18;
34
41
  const boxH = 34;
35
42
  const mid = boxY + boxH / 2;
36
- const stripY = 76;
37
- const stripH = 72;
43
+ const histTop = 72;
38
44
  const axisY = height - 10;
45
+ const histBottom = axisY - 16;
39
46
  const u = unit ? ` ${unit}` : '';
40
47
  const desc = summary
41
48
  ? `${t('min')} ${fmt(summary.min)}, ${t('q25')} ${fmt(summary.q25)}, ${t('median')} ${fmt(summary.median)}, ${t('q75')} ${fmt(summary.q75)}, ${t('max')} ${fmt(summary.max)}, ${t('mean')} ${fmt(summary.mean)}${u}; n=${summary.count}`
42
49
  : `${points.length}`;
43
- const hp = typeof hover === 'number' ? points[hover] : undefined;
44
- // hollow (excluded) values are drawn last so they are never hidden under exact ones
45
- const order = points.map((p, i) => i).sort((a, b) => Number(points[a].status !== 'exact') - Number(points[b].status !== 'exact'));
50
+ const bins = points.length ? binsOf(points, range.min, range.max) : [];
51
+ const top = Math.max(1, ...bins.map((b) => b.exact + b.censored + b.composite));
52
+ const ys = (v) => histBottom - (v / top) * (histBottom - histTop);
53
+ const hb = typeof hover === 'number' ? bins[hover] : undefined;
46
54
  const counts = { exact: 0, censored: 0, composite: 0 };
47
55
  for (const p of points)
48
56
  counts[p.status] += 1;
49
- return (_jsxs("figure", { className: cx('n4q-chart', 'n4q-target', className), children: [_jsxs("div", { className: "n4q-chart-plot", children: [_jsxs("svg", { viewBox: `0 0 ${width} ${height}`, className: "n4q-svg", role: "img", "aria-labelledby": `${id}-t ${id}-d`, onMouseLeave: () => setHover(null), children: [_jsx("title", { id: `${id}-t`, children: title }), _jsx("desc", { id: `${id}-d`, children: desc }), ticks(xd, Math.max(3, Math.min(8, Math.floor((x1 - x0) / 80)))).map((v) => (_jsxs("g", { children: [_jsx("line", { className: "n4q-grid", x1: xs(v), x2: xs(v), y1: 8, y2: axisY - 12 }), _jsx("text", { className: "n4q-tick", x: xs(v), y: axisY, textAnchor: "middle", children: fmt(v) })] }, v))), summary ? (_jsxs("g", { tabIndex: 0, role: "img", "aria-label": desc, className: "n4q-hit", onMouseEnter: () => setHover('box'), onFocus: () => setHover('box'), onBlur: () => setHover(null), children: [_jsx("rect", { x: xs(summary.min) - 6, y: boxY - 6, width: xs(summary.max) - xs(summary.min) + 12, height: boxH + 12, fill: "transparent" }), _jsx("line", { className: "n4q-whisker", x1: xs(summary.min), x2: xs(summary.q25), y1: mid, y2: mid }), _jsx("line", { className: "n4q-whisker", x1: xs(summary.q75), x2: xs(summary.max), y1: mid, y2: mid }), _jsx("line", { className: "n4q-whisker", x1: xs(summary.min), x2: xs(summary.min), y1: mid - 8, y2: mid + 8 }), _jsx("line", { className: "n4q-whisker", x1: xs(summary.max), x2: xs(summary.max), y1: mid - 8, y2: mid + 8 }), _jsx("rect", { x: xs(summary.q25), y: boxY, width: Math.max(2, xs(summary.q75) - xs(summary.q25)), height: boxH, rx: 4, fill: BOX, fillOpacity: hover === 'box' ? 0.3 : 0.18 }), _jsx("line", { x1: xs(summary.median), x2: xs(summary.median), y1: boxY, y2: boxY + boxH, stroke: BOX, strokeWidth: 3, strokeLinecap: "round" }), _jsx("path", { d: `M${xs(summary.mean)},${mid - 6}l6,6l-6,6l-6,-6Z`, fill: MEAN, className: "n4q-marker" })] })) : null, order.map((i) => {
50
- const p = points[i];
51
- const cx0 = xs(p.value);
52
- const cy = stripY + 6 + jitter(p.id) * (stripH - 12);
53
- const hollow = p.status !== 'exact';
54
- return (_jsxs("g", { onMouseEnter: () => setHover(i), className: "n4q-hit", children: [_jsx("circle", { cx: cx0, cy: cy, r: 11, fill: "transparent" }), _jsx("circle", { className: "n4q-dot", cx: cx0, cy: cy, r: hover === i ? 6 : 4.5, fill: STATUS_COLOR[p.status], fillOpacity: 0.85, style: hollow ? { fill: 'var(--n4q-surface, #fff)', fillOpacity: 1, stroke: STATUS_COLOR[p.status], strokeWidth: 2 } : undefined })] }, `${p.id}:${i}`));
55
- })] }), hover === 'box' && summary ? (_jsxs(ChartTooltip, { x: xs(summary.median), y: boxY, width: width, height: height, children: [_jsxs("div", { className: "n4q-tip-head", children: [t('count'), " ", summary.count] }), _jsx(TipRow, { label: t('max'), value: `${fmt(summary.max)}${u}` }), _jsx(TipRow, { label: t('q75'), value: fmt(summary.q75) }), _jsx(TipRow, { color: BOX, label: t('median'), value: fmt(summary.median) }), _jsx(TipRow, { label: t('q25'), value: fmt(summary.q25) }), _jsx(TipRow, { label: t('min'), value: fmt(summary.min) }), _jsx(TipRow, { color: MEAN, label: t('mean'), value: fmt(summary.mean) }), _jsx(TipRow, { label: t('sd'), value: fmt(summary.sampleSd) })] })) : null, hp ? (_jsxs(ChartTooltip, { x: xs(hp.value), y: stripY, width: width, height: height, children: [_jsx(TipRow, { color: STATUS_COLOR[hp.status], label: hp.id, value: `${fmt(hp.value)}${u}` }), _jsx("div", { className: "n4q-tip-sub", children: t(hp.status) })] })) : null] }), _jsx("figcaption", { children: _jsxs("ul", { className: "n4q-legend", children: [summary ? _jsxs("li", { children: [_jsx("span", { className: "n4q-key-box", "aria-hidden": "true" }), t('q25'), "\u2013", t('q75'), " \u00B7 ", t('median')] }) : null, summary ? _jsxs("li", { children: [_jsx("span", { className: "n4q-key-diamond", style: { background: MEAN }, "aria-hidden": "true" }), t('mean')] }) : null, Object.keys(counts).filter((s) => counts[s] > 0).map((s) => (_jsxs("li", { children: [_jsx("span", { className: s === 'exact' ? 'n4q-key-dot' : 'n4q-key-dot n4q-key-hollow', style: s === 'exact' ? { background: STATUS_COLOR[s] } : { borderColor: STATUS_COLOR[s] }, "aria-hidden": "true" }), t(s), " ", _jsx("strong", { children: counts[s] })] }, s)))] }) })] }));
57
+ return (_jsxs("figure", { className: cx('n4q-chart', 'n4q-target', className), children: [_jsxs("div", { className: "n4q-chart-plot", children: [_jsxs("svg", { viewBox: `0 0 ${width} ${height}`, className: "n4q-svg", role: "img", "aria-labelledby": `${id}-t ${id}-d`, onMouseLeave: () => setHover(null), children: [_jsx("title", { id: `${id}-t`, children: title }), _jsx("desc", { id: `${id}-d`, children: desc }), ticks(xd, Math.max(3, Math.min(8, Math.floor((x1 - x0) / 80)))).map((v) => (_jsxs("g", { children: [_jsx("line", { className: "n4q-grid", x1: xs(v), x2: xs(v), y1: 8, y2: axisY - 12 }), _jsx("text", { className: "n4q-tick", x: xs(v), y: axisY, textAnchor: "middle", children: fmt(v) })] }, v))), summary ? (_jsxs("g", { tabIndex: 0, role: "img", "aria-label": desc, className: "n4q-hit", onMouseEnter: () => setHover('box'), onFocus: () => setHover('box'), onBlur: () => setHover(null), children: [_jsx("rect", { x: xs(summary.min) - 6, y: boxY - 6, width: xs(summary.max) - xs(summary.min) + 12, height: boxH + 12, fill: "transparent" }), _jsx("line", { className: "n4q-whisker", x1: xs(summary.min), x2: xs(summary.q25), y1: mid, y2: mid }), _jsx("line", { className: "n4q-whisker", x1: xs(summary.q75), x2: xs(summary.max), y1: mid, y2: mid }), _jsx("line", { className: "n4q-whisker", x1: xs(summary.min), x2: xs(summary.min), y1: mid - 8, y2: mid + 8 }), _jsx("line", { className: "n4q-whisker", x1: xs(summary.max), x2: xs(summary.max), y1: mid - 8, y2: mid + 8 }), _jsx("rect", { x: xs(summary.q25), y: boxY, width: Math.max(2, xs(summary.q75) - xs(summary.q25)), height: boxH, rx: 4, fill: BOX, fillOpacity: hover === 'box' ? 0.3 : 0.18 }), _jsx("line", { x1: xs(summary.median), x2: xs(summary.median), y1: boxY, y2: boxY + boxH, stroke: BOX, strokeWidth: 3, strokeLinecap: "round" }), _jsx("path", { d: `M${xs(summary.mean)},${mid - 6}l6,6l-6,6l-6,-6Z`, fill: MEAN, className: "n4q-marker" })] })) : null, bins.length ? _jsx("line", { className: "n4q-whisker", x1: x0, x2: x1, y1: histBottom, y2: histBottom }) : null, bins.map((b, i) => {
58
+ const left = xs(b.from) + 0.5;
59
+ const w = Math.max(1, xs(b.to) - xs(b.from) - 1);
60
+ let base = 0;
61
+ return (_jsxs("g", { className: "n4q-hit", onMouseEnter: () => setHover(i), children: [_jsx("rect", { x: left, y: histTop, width: w, height: histBottom - histTop, fill: "transparent" }), STACK.map((status) => {
62
+ const n = b[status];
63
+ if (!n)
64
+ return null;
65
+ const y = ys(base + n);
66
+ const h = ys(base) - y;
67
+ base += n;
68
+ return (_jsx("rect", { x: left, y: y, width: w, height: h, fill: STATUS_COLOR[status], fillOpacity: hover === i ? 1 : 0.85, style: status === 'exact' ? undefined : { fill: 'var(--n4q-surface, #fff)', fillOpacity: 1, stroke: STATUS_COLOR[status], strokeWidth: 2 } }, status));
69
+ })] }, i));
70
+ })] }), hover === 'box' && summary ? (_jsxs(ChartTooltip, { x: xs(summary.median), y: boxY, width: width, height: height, children: [_jsxs("div", { className: "n4q-tip-head", children: [t('count'), " ", summary.count] }), _jsx(TipRow, { label: t('max'), value: `${fmt(summary.max)}${u}` }), _jsx(TipRow, { label: t('q75'), value: fmt(summary.q75) }), _jsx(TipRow, { color: BOX, label: t('median'), value: fmt(summary.median) }), _jsx(TipRow, { label: t('q25'), value: fmt(summary.q25) }), _jsx(TipRow, { label: t('min'), value: fmt(summary.min) }), _jsx(TipRow, { color: MEAN, label: t('mean'), value: fmt(summary.mean) }), _jsx(TipRow, { label: t('sd'), value: fmt(summary.sampleSd) })] })) : null, hb ? (_jsxs(ChartTooltip, { x: xs((hb.from + hb.to) / 2), y: histTop, width: width, height: height, children: [_jsxs("div", { className: "n4q-tip-head", children: [fmt(hb.from), " \u2013 ", fmt(hb.to), u] }), STACK.filter((s) => hb[s] > 0).map((s) => _jsx(TipRow, { color: STATUS_COLOR[s], label: t(s), value: String(hb[s]) }, s))] })) : null, bins.length ? (_jsxs("table", { className: "n4q-visually-hidden", children: [_jsx("caption", { children: title }), _jsx("thead", { children: _jsxs("tr", { children: [_jsx("th", { scope: "col", children: t('range') }), STACK.map((s) => _jsx("th", { scope: "col", children: t(s) }, s))] }) }), _jsx("tbody", { children: bins.filter((b) => b.exact + b.censored + b.composite).map((b) => (_jsxs("tr", { children: [_jsxs("th", { scope: "row", children: [fmt(b.from), " \u2013 ", fmt(b.to), u] }), STACK.map((s) => _jsx("td", { children: b[s] }, s))] }, b.from))) })] })) : null] }), _jsx("figcaption", { children: _jsxs("ul", { className: "n4q-legend", children: [summary ? _jsxs("li", { children: [_jsx("span", { className: "n4q-key-box", "aria-hidden": "true" }), t('q25'), "\u2013", t('q75'), " \u00B7 ", t('median')] }) : null, summary ? _jsxs("li", { children: [_jsx("span", { className: "n4q-key-diamond", style: { background: MEAN }, "aria-hidden": "true" }), t('mean')] }) : null, Object.keys(counts).filter((s) => counts[s] > 0).map((s) => (_jsxs("li", { children: [_jsx("span", { className: s === 'exact' ? 'n4q-key-dot' : 'n4q-key-dot n4q-key-hollow', style: s === 'exact' ? { background: STATUS_COLOR[s] } : { borderColor: STATUS_COLOR[s] }, "aria-hidden": "true" }), t(s), " ", _jsx("strong", { children: counts[s] })] }, s)))] }) })] }));
56
71
  }
57
72
  /** Categorical target: horizontal bars of engine class counts, largest first, value at the tip. */
58
73
  export function ClassCountBars({ counts, title, width = 640, className }) {
@@ -1 +1 @@
1
- {"version":3,"file":"TargetDistribution.js","sourceRoot":"","sources":["../../src/qualification/TargetDistribution.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TargetDistribution.js","sourceRoot":"","sources":["../../src/qualification/TargetDistribution.tsx"],"names":[],"mappings":"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"}
@@ -418,4 +418,24 @@ export declare function extractDuplicates(view: QualificationReportView, sourceI
418
418
  * computed (unbalanced design), the REML ICC(1) becomes the ICC series, labelled as such.
419
419
  */
420
420
  export declare function withRepeatabilityUncertainty(contexts: readonly RepeatabilityContext[], uncertainty: readonly RepeatabilityUncertainty[]): RepeatabilityContext[];
421
+ /** One per-observation intrinsic signature (Methods), with its native median and p95. */
422
+ export interface IntrinsicSignal {
423
+ /** `<family>.<signal>`, e.g. `pca.pca_t2`, `events.spike_count`, `reference.rms` */
424
+ id: string;
425
+ state: MetricState;
426
+ unit: string | null;
427
+ /** observation-aligned; a null value is an observation the signal could not use */
428
+ sampleIds: string[];
429
+ observationIds: string[];
430
+ values: (number | null)[];
431
+ median: number | null;
432
+ p95: number | null;
433
+ }
434
+ /** Intrinsic spectral signatures of one source (`options.intrinsic_qc`), or null when not requested. */
435
+ export interface IntrinsicSignatures {
436
+ signals: Readonly<Record<string, IntrinsicSignal>>;
437
+ /** computed dataset-level scalars, keyed `<family>.<name>` (e.g. `events.global_spike_count`) */
438
+ globals: Readonly<Record<string, number>>;
439
+ }
440
+ export declare function extractIntrinsic(view: QualificationReportView, sourceId: string): IntrinsicSignatures | null;
421
441
  //# sourceMappingURL=extractBlocks.d.ts.map