nirs4all-ui 0.1.16 → 0.2.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/README.md +20 -0
- package/assets/dropzone.css +21 -0
- package/assets/pipeline-presets.css +38 -0
- package/assets/qualification.css +142 -0
- package/dist/components/DatasetDropzone.d.ts +44 -0
- package/dist/components/DatasetDropzone.d.ts.map +1 -0
- package/dist/components/DatasetDropzone.js +84 -0
- package/dist/components/DatasetDropzone.js.map +1 -0
- package/dist/components/PipelinePresetCard.d.ts +16 -0
- package/dist/components/PipelinePresetCard.d.ts.map +1 -0
- package/dist/components/PipelinePresetCard.js +21 -0
- package/dist/components/PipelinePresetCard.js.map +1 -0
- package/dist/components/index.d.ts +2 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +2 -0
- package/dist/components/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/pipelines/canonicalPipelinePreview.d.ts +21 -0
- package/dist/pipelines/canonicalPipelinePreview.d.ts.map +1 -0
- package/dist/pipelines/canonicalPipelinePreview.js +384 -0
- package/dist/pipelines/canonicalPipelinePreview.js.map +1 -0
- package/dist/pipelines/index.d.ts +5 -0
- package/dist/pipelines/index.d.ts.map +1 -0
- package/dist/pipelines/index.js +5 -0
- package/dist/pipelines/index.js.map +1 -0
- package/dist/pipelines/pipelineStats.d.ts +27 -0
- package/dist/pipelines/pipelineStats.d.ts.map +1 -0
- package/dist/pipelines/pipelineStats.js +128 -0
- package/dist/pipelines/pipelineStats.js.map +1 -0
- package/dist/pipelines/presets.d.ts +50 -0
- package/dist/pipelines/presets.d.ts.map +1 -0
- package/dist/pipelines/presets.js +92 -0
- package/dist/pipelines/presets.js.map +1 -0
- package/dist/pipelines/studio-presets.json +3996 -0
- package/dist/pipelines/studioPresets.d.ts +21 -0
- package/dist/pipelines/studioPresets.d.ts.map +1 -0
- package/dist/pipelines/studioPresets.js +12 -0
- package/dist/pipelines/studioPresets.js.map +1 -0
- package/dist/qualification/AvailabilitySummary.d.ts +3 -1
- package/dist/qualification/AvailabilitySummary.d.ts.map +1 -1
- package/dist/qualification/AvailabilitySummary.js +2 -2
- package/dist/qualification/AvailabilitySummary.js.map +1 -1
- package/dist/qualification/CapabilityGrid.d.ts +10 -0
- package/dist/qualification/CapabilityGrid.d.ts.map +1 -0
- package/dist/qualification/CapabilityGrid.js +16 -0
- package/dist/qualification/CapabilityGrid.js.map +1 -0
- package/dist/qualification/CheckList.d.ts +19 -0
- package/dist/qualification/CheckList.d.ts.map +1 -0
- package/dist/qualification/CheckList.js +14 -0
- package/dist/qualification/CheckList.js.map +1 -0
- package/dist/qualification/ComparisonMatrix.d.ts +37 -0
- package/dist/qualification/ComparisonMatrix.d.ts.map +1 -0
- package/dist/qualification/ComparisonMatrix.js +30 -0
- package/dist/qualification/ComparisonMatrix.js.map +1 -0
- package/dist/qualification/EigenvalueScree.d.ts +17 -0
- package/dist/qualification/EigenvalueScree.d.ts.map +1 -0
- package/dist/qualification/EigenvalueScree.js +39 -0
- package/dist/qualification/EigenvalueScree.js.map +1 -0
- package/dist/qualification/EvidenceTable.d.ts +3 -1
- package/dist/qualification/EvidenceTable.d.ts.map +1 -1
- package/dist/qualification/EvidenceTable.js +14 -6
- package/dist/qualification/EvidenceTable.js.map +1 -1
- package/dist/qualification/FindingList.d.ts +3 -1
- package/dist/qualification/FindingList.d.ts.map +1 -1
- package/dist/qualification/FindingList.js +5 -3
- package/dist/qualification/FindingList.js.map +1 -1
- package/dist/qualification/HypothesisTestTable.d.ts +48 -0
- package/dist/qualification/HypothesisTestTable.d.ts.map +1 -0
- package/dist/qualification/HypothesisTestTable.js +26 -0
- package/dist/qualification/HypothesisTestTable.js.map +1 -0
- package/dist/qualification/MeasureBars.d.ts +45 -0
- package/dist/qualification/MeasureBars.d.ts.map +1 -0
- package/dist/qualification/MeasureBars.js +52 -0
- package/dist/qualification/MeasureBars.js.map +1 -0
- package/dist/qualification/PopulationFlow.d.ts +42 -0
- package/dist/qualification/PopulationFlow.d.ts.map +1 -0
- package/dist/qualification/PopulationFlow.js +123 -0
- package/dist/qualification/PopulationFlow.js.map +1 -0
- package/dist/qualification/RepeatabilityProfile.d.ts +19 -0
- package/dist/qualification/RepeatabilityProfile.d.ts.map +1 -0
- package/dist/qualification/RepeatabilityProfile.js +119 -0
- package/dist/qualification/RepeatabilityProfile.js.map +1 -0
- package/dist/qualification/ReplicateHistogram.d.ts +23 -0
- package/dist/qualification/ReplicateHistogram.d.ts.map +1 -0
- package/dist/qualification/ReplicateHistogram.js +41 -0
- package/dist/qualification/ReplicateHistogram.js.map +1 -0
- package/dist/qualification/ScoreMap.d.ts +38 -0
- package/dist/qualification/ScoreMap.d.ts.map +1 -0
- package/dist/qualification/ScoreMap.js +77 -0
- package/dist/qualification/ScoreMap.js.map +1 -0
- package/dist/qualification/SpectraExplorer.d.ts +31 -0
- package/dist/qualification/SpectraExplorer.d.ts.map +1 -0
- package/dist/qualification/SpectraExplorer.js +111 -0
- package/dist/qualification/SpectraExplorer.js.map +1 -0
- package/dist/qualification/StatTile.d.ts +16 -0
- package/dist/qualification/StatTile.d.ts.map +1 -0
- package/dist/qualification/StatTile.js +10 -0
- package/dist/qualification/StatTile.js.map +1 -0
- package/dist/qualification/TargetDistribution.d.ts +35 -0
- package/dist/qualification/TargetDistribution.d.ts.map +1 -0
- package/dist/qualification/TargetDistribution.js +87 -0
- package/dist/qualification/TargetDistribution.js.map +1 -0
- package/dist/qualification/_chart.d.ts +19 -0
- package/dist/qualification/_chart.d.ts.map +1 -0
- package/dist/qualification/_chart.js +30 -0
- package/dist/qualification/_chart.js.map +1 -0
- package/dist/qualification/engineNumber.d.ts +26 -0
- package/dist/qualification/engineNumber.d.ts.map +1 -0
- package/dist/qualification/engineNumber.js +88 -0
- package/dist/qualification/engineNumber.js.map +1 -0
- package/dist/qualification/extract.d.ts +107 -0
- package/dist/qualification/extract.d.ts.map +1 -0
- package/dist/qualification/extract.js +139 -0
- package/dist/qualification/extract.js.map +1 -0
- package/dist/qualification/extractBlocks.d.ts +441 -0
- package/dist/qualification/extractBlocks.d.ts.map +1 -0
- package/dist/qualification/extractBlocks.js +576 -0
- package/dist/qualification/extractBlocks.js.map +1 -0
- package/dist/qualification/index.d.ts +16 -0
- package/dist/qualification/index.d.ts.map +1 -1
- package/dist/qualification/index.js +16 -0
- package/dist/qualification/index.js.map +1 -1
- package/dist/qualification/locale.d.ts +317 -1
- package/dist/qualification/locale.d.ts.map +1 -1
- package/dist/qualification/locale.js +369 -0
- package/dist/qualification/locale.js.map +1 -1
- package/dist/qualification/report.d.ts +13 -1
- package/dist/qualification/report.d.ts.map +1 -1
- package/dist/qualification/report.js +94 -3
- package/dist/qualification/report.js.map +1 -1
- package/dist/styles/index.d.ts +7 -1
- package/dist/styles/index.d.ts.map +1 -1
- package/dist/styles/index.js +5 -0
- package/dist/styles/index.js.map +1 -1
- package/package.json +7 -2
package/README.md
CHANGED
|
@@ -150,3 +150,23 @@ verifies that every public React component, lab, and dataset-builder export
|
|
|
150
150
|
appears in the page and that the mirrored brand/logo, crawler metadata,
|
|
151
151
|
manifest, default styles, package CSS assets, motion asset, reusable brand kit,
|
|
152
152
|
and canonical URLs stay in sync with the packaged asset set.
|
|
153
|
+
|
|
154
|
+
### Pipeline preset cards
|
|
155
|
+
|
|
156
|
+
`PipelinePresetCard` from `nirs4all-ui/components` presents Studio's preset metadata,
|
|
157
|
+
complexity, canonical recipe statistics and preview, with host-provided task actions
|
|
158
|
+
and icons. Import `nirs4all-ui/assets/pipeline-presets.css` for the shared appearance.
|
|
159
|
+
`nirs4all-ui/pipelines` exports the pure canonical preview, statistics and preset
|
|
160
|
+
model helpers. The component supports React server rendering for static catalogues;
|
|
161
|
+
it owns no routing, API access or application state.
|
|
162
|
+
|
|
163
|
+
The shared preset content is generated from Studio's `api/presets/*.yaml`:
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
python scripts/sync-studio-presets.py --studio ../nirs4all-studio
|
|
167
|
+
# Requires PyYAML; use a Studio or Repository Python environment.
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
`getStudioPipelinePresets()` returns independent copies of all ten defaults and
|
|
171
|
+
both task variants. Studio checks the snapshot against its authored YAML hashes;
|
|
172
|
+
Repository checks its recipes against the same shared data before rendering.
|
|
@@ -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}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
.n4-preset-card {
|
|
2
|
+
--preset-text: var(--n4-color-text, #0f172a);
|
|
3
|
+
--preset-muted: var(--n4-color-muted, #64748b);
|
|
4
|
+
--preset-border: var(--n4-color-border, #e2e8f0);
|
|
5
|
+
--preset-primary: var(--n4-color-primary, #0d9488);
|
|
6
|
+
display: flex; flex-direction: column; height: 100%; min-width: 0; box-sizing: border-box;
|
|
7
|
+
padding: 16px; border: 1px solid var(--preset-border); border-radius: 8px;
|
|
8
|
+
background: var(--n4-color-surface, #fff); color: var(--preset-text); line-height: 1.5;
|
|
9
|
+
font-family: var(--n4-font-sans, Inter, system-ui, sans-serif);
|
|
10
|
+
}
|
|
11
|
+
.n4-preset-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
|
|
12
|
+
.n4-preset-template { display: flex; align-items: center; gap: 8px; padding: 2px 8px; border-radius: 4px; background: #06b6d41a; color: #0891b2; font-size: 12px; font-weight: 500; }
|
|
13
|
+
.n4-preset-name { font: 600 16px/1.5 var(--n4-font-sans, Inter, system-ui, sans-serif); margin: 0; color: inherit; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
14
|
+
.n4-preset-description { font-size: 11px; color: var(--preset-muted); margin: 4px 0 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
|
|
15
|
+
.n4-preset-hint { display: flex; align-items: center; gap: 6px; margin-top: 8px; font-size: 11px; color: var(--preset-muted); }
|
|
16
|
+
.n4-preset-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding: 8px 12px; margin: 12px 0 0; border: 1px solid var(--preset-border); border-radius: 6px; background: color-mix(in srgb, var(--preset-muted) 4%, transparent); }
|
|
17
|
+
.n4-preset-stats dd { margin: 0; font-size: 14px; font-weight: 600; font-variant-numeric: tabular-nums; line-height: 1; overflow-wrap: anywhere; }
|
|
18
|
+
.n4-preset-stats dt { font-size: 10px; margin-top: 2px; text-transform: uppercase; letter-spacing: .025em; color: var(--preset-muted); }
|
|
19
|
+
.n4-preset-stats .n4-preset-emphasize { font-size: clamp(12px, 1vw, 14px); white-space: nowrap; color: var(--preset-primary); }
|
|
20
|
+
.n4-preset-preview { padding: 0; margin: 12px 0 0; list-style: none; font-size: 12px; }
|
|
21
|
+
.n4-preset-preview li { display: flex; align-items: center; gap: 8px; min-width: 0; margin-top: 4px; color: var(--preset-muted); }
|
|
22
|
+
.n4-preset-preview li > span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
23
|
+
.n4-preset-preview svg, .n4-preset-header svg, .n4-preset-hint svg { width: 12px; height: 12px; flex-shrink: 0; }
|
|
24
|
+
.n4-preset-preview .n4-preset-more { font-size: 11px; font-style: italic; }
|
|
25
|
+
.n4-preset-actions { display: flex; gap: 8px; margin-top: auto; padding-top: 12px; }
|
|
26
|
+
.n4-preset-actions > div { flex: 1; min-width: 0; }
|
|
27
|
+
.n4-preset-action { display: flex; justify-content: center; align-items: center; box-sizing: border-box; width: 100%; min-height: 32px; padding: 4px 12px; border: 1px solid #10b98140; border-radius: 999px; background: #10b9811a; color: #047857; font-size: 11px; font-weight: 600; text-decoration: none; }
|
|
28
|
+
.n4-preset-action:hover { background: #10b98129; text-decoration: none; }
|
|
29
|
+
.n4-preset-action-classification { border-color: #0ea5e940; background: #0ea5e91a; color: #0369a1; }
|
|
30
|
+
.n4-preset-action-classification:hover { background: #0ea5e929; }
|
|
31
|
+
.n4-preset-complexity { display: inline-flex; align-items: center; gap: 6px; border: 1px solid; padding: 4px 10px; border-radius: 999px; font-size: 11px; font-weight: 600; }
|
|
32
|
+
.n4-preset-complexity > span { text-transform: capitalize; }
|
|
33
|
+
.n4-preset-starter { color: #047857; border-color: #10b98140; background: #10b9811a; }
|
|
34
|
+
.n4-preset-quick { color: #0369a1; border-color: #0ea5e940; background: #0ea5e91a; }
|
|
35
|
+
.n4-preset-balanced { color: #b45309; border-color: #f59e0b40; background: #f59e0b1a; }
|
|
36
|
+
.n4-preset-heavy { color: #c2410c; border-color: #f9731640; background: #f973161a; }
|
|
37
|
+
.n4-preset-exhaustive { color: #be123c; border-color: #f43f5e40; background: #f43f5e1a; }
|
|
38
|
+
.n4-preset-action:focus-visible { outline: 2px solid var(--preset-primary, #0d9488); outline-offset: 3px; }
|
package/assets/qualification.css
CHANGED
|
@@ -35,3 +35,145 @@
|
|
|
35
35
|
.n4q-fill-not_identifiable{fill:#0891b2;background:#0891b2}.n4q-fill-undefined{fill:#64748b;background:#64748b}
|
|
36
36
|
.n4q-fill-cancelled{fill:#7c3aed;background:#7c3aed}.n4q-fill-error{fill:#dc2626;background:#dc2626}
|
|
37
37
|
.n4q-datatable summary{cursor:pointer;font-size:.85rem}
|
|
38
|
+
|
|
39
|
+
/* --- charts (PopulationFlow, RepeatabilityProfile, EigenvalueScree, ScoreMap, TargetDistribution) --- */
|
|
40
|
+
.n4q-chart{margin:0;display:grid;gap:.6rem;min-width:0}
|
|
41
|
+
.n4q-chart-plot{position:relative;min-width:0}
|
|
42
|
+
.n4q-svg{display:block;width:100%;height:auto;overflow:visible;font-family:var(--font,Inter,system-ui,sans-serif)}
|
|
43
|
+
.n4q-svg:focus-visible{outline:2px solid var(--teal,#0d9488);outline-offset:4px;border-radius:6px}
|
|
44
|
+
.n4q-grid{stroke:var(--n4q-grid,rgba(100,116,139,.16));stroke-width:1}
|
|
45
|
+
.n4q-zero,.n4q-baseline{stroke:var(--n4q-axis,rgba(100,116,139,.55));stroke-width:1}
|
|
46
|
+
.n4q-crosshair{stroke:var(--text-2,#475569);stroke-width:1;stroke-opacity:.6}
|
|
47
|
+
.n4q-tick{font-family:var(--mono,"JetBrains Mono",monospace);font-size:10px;fill:var(--text-3,#64748b)}
|
|
48
|
+
.n4q-axis-title{font-size:11px;font-weight:600;fill:var(--text-2,#475569)}
|
|
49
|
+
.n4q-line{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
|
|
50
|
+
.n4q-marker,.n4q-dot{stroke:var(--n4q-surface,var(--surface,#fff));stroke-width:2;transition:r .12s}
|
|
51
|
+
.n4q-whisker{stroke:var(--teal-d,#0f766e);stroke-width:1.5}
|
|
52
|
+
.n4q-hit{cursor:default;outline:none}
|
|
53
|
+
.n4q-hit:focus-visible rect:first-child{stroke:var(--teal,#0d9488);stroke-width:1.5;stroke-dasharray:3 3}
|
|
54
|
+
.n4q-flow-label{font-size:12px;fill:var(--text-2,#475569)}
|
|
55
|
+
.n4q-flow-total{font-size:15px;font-weight:700;fill:var(--text,#0f172a)}
|
|
56
|
+
.n4q-flow-stage{font-weight:600;fill:var(--text,#0f172a)}
|
|
57
|
+
.n4q-flow-link{fill-opacity:.1}
|
|
58
|
+
.n4q-flow-empty{fill:var(--n4q-null-fill,#e2e8f0)}
|
|
59
|
+
.n4q-flow-seg{outline:none;cursor:default}
|
|
60
|
+
.n4q-flow-seg rect{transition:opacity .15s}
|
|
61
|
+
.n4q-flow-seg[data-active] rect,.n4q-flow-seg:focus-visible rect{opacity:.82}
|
|
62
|
+
.n4q-flow-seg:focus-visible rect{stroke:var(--text,#0f172a);stroke-width:2}
|
|
63
|
+
.n4q-flow-inbar{font-size:11.5px;fill:#fff;pointer-events:none}
|
|
64
|
+
.n4q-cat-label{font-size:12px;fill:var(--text-2,#475569)}
|
|
65
|
+
.n4q-cat-value{font-size:12px;font-weight:700;fill:var(--text,#0f172a)}
|
|
66
|
+
|
|
67
|
+
.n4q-tip{position:absolute;z-index:5;pointer-events:none;min-width:150px;max-width:280px;padding:.55rem .7rem;border-radius:10px;
|
|
68
|
+
background:var(--n4q-tip-bg,rgba(255,255,255,.97));color:var(--text,#0f172a);border:1px solid var(--border,#e2e8f0);
|
|
69
|
+
box-shadow:0 14px 34px -14px rgba(15,23,42,.35);font-size:.78rem;line-height:1.35;backdrop-filter:blur(8px)}
|
|
70
|
+
.n4q-tip-head{font-weight:700;margin-bottom:.25rem;font-family:var(--mono,monospace);font-size:.74rem}
|
|
71
|
+
.n4q-tip-row{display:flex;align-items:center;gap:.45rem;white-space:nowrap}
|
|
72
|
+
.n4q-tip-row strong{font-variant-numeric:tabular-nums}
|
|
73
|
+
.n4q-tip-row span:last-child{color:var(--text-2,#475569);overflow:hidden;text-overflow:ellipsis}
|
|
74
|
+
.n4q-tip-sub{color:var(--text-3,#64748b);font-size:.72rem}
|
|
75
|
+
.n4q-tip-block+.n4q-tip-block{margin-top:.3rem;padding-top:.3rem;border-top:1px solid var(--border,#e2e8f0)}
|
|
76
|
+
|
|
77
|
+
.n4q-legend{display:flex;flex-wrap:wrap;gap:.35rem 1rem;list-style:none;margin:0;padding:0;font-size:.8rem;color:var(--text-2,#475569)}
|
|
78
|
+
.n4q-legend li{display:inline-flex;align-items:center;gap:.4rem}
|
|
79
|
+
.n4q-legend li[data-zero]{opacity:.55}
|
|
80
|
+
.n4q-legend strong{color:var(--text,#0f172a);font-variant-numeric:tabular-nums}
|
|
81
|
+
.n4q-legend-title{font-weight:600;color:var(--text,#0f172a)}
|
|
82
|
+
.n4q-legend-sub{color:var(--text-3,#64748b)}
|
|
83
|
+
.n4q-key-dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex:none}
|
|
84
|
+
.n4q-key-hollow{background:transparent;border:2px solid}
|
|
85
|
+
.n4q-key-null{background:transparent;border:1.5px solid #94a3b8}
|
|
86
|
+
.n4q-key-line{display:inline-block;width:16px;height:3px;border-radius:2px;flex:none}
|
|
87
|
+
.n4q-key-box{display:inline-block;width:16px;height:10px;border-radius:3px;background:rgba(13,148,136,.25);border-left:3px solid #0d9488;flex:none}
|
|
88
|
+
.n4q-key-diamond{display:inline-block;width:9px;height:9px;transform:rotate(45deg);flex:none}
|
|
89
|
+
.n4q-colorbar{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;font-size:.8rem;color:var(--text-2,#475569);font-variant-numeric:tabular-nums}
|
|
90
|
+
.n4q-colorbar-ramp{display:inline-block;width:140px;height:10px;border-radius:5px}
|
|
91
|
+
.n4q-visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
|
|
92
|
+
|
|
93
|
+
.n4q-stat{display:grid;gap:.15rem;align-content:start;padding:1rem 1.1rem;border-radius:var(--radius-sm,10px);background:var(--surface,#fff);
|
|
94
|
+
border:1px solid var(--border,#e2e8f0);color:inherit;text-decoration:none;position:relative;overflow:hidden;transition:border-color .2s,transform .2s,box-shadow .2s}
|
|
95
|
+
.n4q-stat::before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--n4q-stat-accent,var(--teal,#0d9488));opacity:.85}
|
|
96
|
+
.n4q-stat[data-tone=good]{--n4q-stat-accent:#059669}.n4q-stat[data-tone=warning]{--n4q-stat-accent:#d97706}.n4q-stat[data-tone=critical]{--n4q-stat-accent:#e11d48}
|
|
97
|
+
a.n4q-stat:hover{border-color:var(--teal,#0d9488);transform:translateY(-1px);box-shadow:var(--shadow,0 4px 16px -4px rgba(17,24,39,.08))}
|
|
98
|
+
.n4q-stat-label{font-size:.76rem;font-weight:600;color:var(--text-2,#475569)}
|
|
99
|
+
.n4q-stat-value{font-size:1.75rem;font-weight:600;letter-spacing:-.02em;color:var(--text,#0f172a);line-height:1.15}
|
|
100
|
+
.n4q-stat-suffix{font-size:.85rem;font-weight:500;color:var(--text-3,#64748b);margin-left:.3rem;letter-spacing:0}
|
|
101
|
+
.n4q-stat-hint{font-size:.76rem;color:var(--text-3,#64748b)}
|
|
102
|
+
|
|
103
|
+
.n4q-capgrid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr))}
|
|
104
|
+
.n4q-capgroup{border:1px solid var(--border,#e2e8f0);border-radius:var(--radius-sm,10px);padding:.8rem .9rem;background:var(--surface,#fff)}
|
|
105
|
+
.n4q-capgroup h4{display:flex;align-items:center;gap:.5rem;margin:0 0 .6rem;font-size:.85rem}
|
|
106
|
+
.n4q-capcount{margin-left:auto;font-family:var(--mono,monospace);font-size:.75rem;color:var(--text-3,#64748b)}
|
|
107
|
+
.n4q-capdot{width:9px;height:9px;border-radius:50%;background:#94a3b8}
|
|
108
|
+
.n4q-capgroup[data-group=qualified] .n4q-capdot{background:#059669}
|
|
109
|
+
.n4q-capgroup[data-group=available] .n4q-capdot{background:#d97706}
|
|
110
|
+
.n4q-capgroup ul{list-style:none;margin:0;padding:0;display:grid;gap:.45rem}
|
|
111
|
+
.n4q-capgroup li{display:grid;font-size:.84rem;line-height:1.3}
|
|
112
|
+
.n4q-capgroup li code{font-size:.7rem;color:var(--text-3,#64748b)}
|
|
113
|
+
.n4q-capgroup[data-group=unavailable] li strong{font-weight:500;color:var(--text-2,#475569)}
|
|
114
|
+
.n4q-metric-name{display:block;font-weight:600;font-size:.84rem}
|
|
115
|
+
.n4q-evidence-link{display:inline-block;margin-right:.5rem;font-weight:600}
|
|
116
|
+
:root[data-theme=dark] .n4q-tip,.theme-dark .n4q-tip{--n4q-tip-bg:rgba(16,35,58,.97)}
|
|
117
|
+
:root[data-theme=dark],.theme-dark{--n4q-null-fill:#334155;--n4q-grid:rgba(255,255,255,.08);--n4q-axis:rgba(255,255,255,.3)}
|
|
118
|
+
.n4q-capgroup ul{grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));gap:.7rem 1.2rem}
|
|
119
|
+
:root[data-theme=dark] .n4q-avail-not_applicable,:root[data-theme=dark] .n4q-avail-undefined,:root[data-theme=dark] .n4q-conf-unknown{color:#94a3b8}
|
|
120
|
+
:root[data-theme=dark] .n4q-profile-exploratory,:root[data-theme=dark] .n4q-avail-insufficient_data,:root[data-theme=dark] .n4q-avail-unsupported,:root[data-theme=dark] .n4q-avail-not_identifiable,:root[data-theme=dark] .n4q-conf-low,:root[data-theme=dark] .n4q-sev-warning{color:#fbbf24}
|
|
121
|
+
:root[data-theme=dark] .n4q-avail-computed,:root[data-theme=dark] .n4q-profile-complete,:root[data-theme=dark] .n4q-conf-high{color:#34d399}
|
|
122
|
+
:root[data-theme=dark] .n4q-profile-partial,:root[data-theme=dark] .n4q-conf-medium,:root[data-theme=dark] .n4q-sev-info{color:#2dd4bf}
|
|
123
|
+
:root[data-theme=dark] .n4q-avail-error,:root[data-theme=dark] .n4q-sev-high{color:#fb7185}
|
|
124
|
+
:root[data-theme=dark] .n4q-sev-blocking{color:#fda4af}:root[data-theme=dark] .n4q-avail-cancelled{color:#a78bfa}
|
|
125
|
+
.n4q-tip-ctx{display:flex;align-items:center;gap:.45rem;font-size:.72rem;color:var(--text-2,#475569);margin-bottom:.1rem;white-space:nowrap}
|
|
126
|
+
|
|
127
|
+
/* --- SpectraExplorer --- */
|
|
128
|
+
.n4q-explorer-line{fill:none;stroke-width:1.3;stroke-opacity:.72;stroke-linejoin:round;transition:stroke-opacity .15s}
|
|
129
|
+
.n4q-explorer-lines[data-dim] .n4q-explorer-line{stroke-opacity:.16}
|
|
130
|
+
.n4q-explorer-focus{fill:none;stroke-width:2.6;stroke-linejoin:round;stroke-linecap:round;pointer-events:none}
|
|
131
|
+
.n4q-explorer-missing{opacity:.8}.n4q-explorer-missing[data-active]{opacity:1;transform-box:fill-box}
|
|
132
|
+
.n4q-tip-alert{color:#e11d48;font-weight:600}
|
|
133
|
+
|
|
134
|
+
/* --- CheckList --- */
|
|
135
|
+
.n4q-checks{list-style:none;margin:0;padding:0;display:grid;gap:2px}
|
|
136
|
+
.n4q-check{display:grid;grid-template-columns:auto 1fr auto;align-items:start;gap:.8rem;padding:.75rem .5rem;border-radius:10px;transition:background .15s}
|
|
137
|
+
.n4q-check+.n4q-check{border-top:1px solid var(--border,#e2e8f0)}
|
|
138
|
+
.n4q-check:hover{background:rgba(100,116,139,.06)}
|
|
139
|
+
.n4q-check-icon{flex:none;margin-top:1px}
|
|
140
|
+
.n4q-check-icon circle{fill:var(--n4q-check-bg)}
|
|
141
|
+
.n4q-check-icon path{fill:none;stroke:var(--n4q-check-fg);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
|
|
142
|
+
.n4q-check[data-status=ok]{--n4q-check-bg:rgba(16,185,129,.16);--n4q-check-fg:#059669}
|
|
143
|
+
.n4q-check[data-status=attention]{--n4q-check-bg:rgba(217,119,6,.16);--n4q-check-fg:#b45309}
|
|
144
|
+
.n4q-check[data-status=critical]{--n4q-check-bg:rgba(225,29,72,.14);--n4q-check-fg:#e11d48}
|
|
145
|
+
.n4q-check[data-status=unavailable]{--n4q-check-bg:rgba(100,116,139,.14);--n4q-check-fg:#64748b}
|
|
146
|
+
:root[data-theme=dark] .n4q-check[data-status=ok]{--n4q-check-fg:#34d399}
|
|
147
|
+
:root[data-theme=dark] .n4q-check[data-status=attention]{--n4q-check-fg:#fbbf24}
|
|
148
|
+
:root[data-theme=dark] .n4q-check[data-status=critical]{--n4q-check-fg:#fb7185}
|
|
149
|
+
:root[data-theme=dark] .n4q-check[data-status=unavailable]{--n4q-check-fg:#94a3b8}
|
|
150
|
+
.n4q-check-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .6rem}
|
|
151
|
+
.n4q-check-head strong{font-size:.92rem}
|
|
152
|
+
.n4q-check-status{font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--n4q-check-fg)}
|
|
153
|
+
.n4q-check-body p{margin:.15rem 0 0;font-size:.84rem;color:var(--text-2,#475569);line-height:1.45}
|
|
154
|
+
.n4q-check-link{font-size:.8rem;font-weight:600;white-space:nowrap;align-self:center}
|
|
155
|
+
.n4q-finding code,.n4q-finding-head code{overflow-wrap:anywhere}
|
|
156
|
+
.n4q-finding{min-width:0}
|
|
157
|
+
|
|
158
|
+
/* --- 0.1.0 blocks: MeasureBars, HypothesisTestTable, ComparisonMatrix, ReplicateHistogram, interval bands --- */
|
|
159
|
+
.n4q-band{fill-opacity:.16;stroke:none}
|
|
160
|
+
.n4q-identity{stroke:var(--text-3,#64748b);stroke-width:1;stroke-dasharray:4 4}
|
|
161
|
+
.n4q-measure .n4q-cat-label{font-size:11.5px}
|
|
162
|
+
.n4q-decision{font-weight:600;white-space:nowrap}
|
|
163
|
+
.n4q-decision[data-rejects=true]{color:#b45309}
|
|
164
|
+
.n4q-decision[data-rejects=false]{color:var(--text-2,#475569);font-weight:500}
|
|
165
|
+
:root[data-theme=dark] .n4q-decision[data-rejects=true]{color:#fbbf24}
|
|
166
|
+
.n4q-tests tbody th,.n4q-matrix tbody th{font-weight:600;white-space:nowrap}
|
|
167
|
+
.n4q-tests tr[data-rejects=true] th{box-shadow:inset 3px 0 0 #d97706}
|
|
168
|
+
.n4q-matrix-cell{min-width:7.5rem}
|
|
169
|
+
.n4q-matrix-value{display:block;font-variant-numeric:tabular-nums}
|
|
170
|
+
.n4q-matrix-track{position:relative;display:block;height:6px;margin-top:3px;border-radius:3px;background:rgba(100,116,139,.14);overflow:hidden}
|
|
171
|
+
.n4q-matrix-bar{position:absolute;top:0;bottom:0;left:0;border-radius:3px;background:var(--teal,#0d9488);opacity:.8}
|
|
172
|
+
.n4q-matrix-track[data-centred=true]::after{content:"";position:absolute;left:50%;top:-1px;bottom:-1px;width:1px;background:var(--n4q-axis,rgba(100,116,139,.55))}
|
|
173
|
+
.n4q-matrix-bar[data-below=true]{background:#6366f1}
|
|
174
|
+
:root[data-theme=dark] .n4q-matrix-track{background:rgba(255,255,255,.08)}
|
|
175
|
+
:root[data-theme=dark] .n4q-band{fill-opacity:.22}
|
|
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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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { type PipelinePreset, type PipelinePresetVariantId } from "../pipelines/index.js";
|
|
3
|
+
export interface PipelinePresetCardProps {
|
|
4
|
+
preset: PipelinePreset;
|
|
5
|
+
templateIcon?: ReactNode;
|
|
6
|
+
complexityBadge?: ReactNode;
|
|
7
|
+
complexityHint?: ReactNode;
|
|
8
|
+
complexityIcon?: ReactNode;
|
|
9
|
+
previewIcons?: Partial<Record<"step" | "model" | "branch" | "generator", ReactNode>>;
|
|
10
|
+
labels?: Partial<Record<"template" | "ops" | "models" | "branches" | "variants", string>>;
|
|
11
|
+
moreSteps?: (count: number) => ReactNode;
|
|
12
|
+
renderVariant: (variant: PipelinePresetVariantId) => ReactNode;
|
|
13
|
+
}
|
|
14
|
+
/** Studio preset presentation, shared with the server-rendered repository catalogue. */
|
|
15
|
+
export declare function PipelinePresetCard({ preset, templateIcon, complexityBadge, complexityHint, complexityIcon, previewIcons, labels, moreSteps, renderVariant, }: PipelinePresetCardProps): import("react").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=PipelinePresetCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PipelinePresetCard.d.ts","sourceRoot":"","sources":["../../src/components/PipelinePresetCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAwB,KAAK,cAAc,EAAE,KAAK,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhH,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IACrF,MAAM,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;IAC1F,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,SAAS,CAAC;IACzC,aAAa,EAAE,CAAC,OAAO,EAAE,uBAAuB,KAAK,SAAS,CAAC;CAChE;AAED,wFAAwF;AACxF,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,YAAY,EACnF,MAAW,EAAE,SAA6C,EAAE,aAAa,GAC1E,EAAE,uBAAuB,+BAsCzB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { buildPresetCardModel } from "../pipelines/index.js";
|
|
3
|
+
/** Studio preset presentation, shared with the server-rendered repository catalogue. */
|
|
4
|
+
export function PipelinePresetCard({ preset, templateIcon, complexityBadge, complexityHint, complexityIcon, previewIcons, labels = {}, moreSteps = (count) => `+${count} more steps`, renderVariant, }) {
|
|
5
|
+
const card = buildPresetCardModel(preset);
|
|
6
|
+
const stats = [
|
|
7
|
+
[labels.ops ?? "Ops", card.operatorCount],
|
|
8
|
+
[labels.models ?? "Models", card.stats.models],
|
|
9
|
+
[labels.branches ?? "Branches", card.stats.branches],
|
|
10
|
+
[labels.variants ?? "Variants", card.variantCount],
|
|
11
|
+
];
|
|
12
|
+
return (_jsxs("article", { className: "n4-preset-card", children: [_jsxs("div", { className: "n4-preset-header", children: [_jsxs("span", { className: "n4-preset-template", children: [templateIcon, labels.template ?? "Template"] }), complexityBadge ?? _jsxs("span", { className: `n4-preset-complexity n4-preset-${card.complexityMeta.key}`, children: [card.complexity, "/10 ", _jsx("span", { children: card.complexityMeta.key })] })] }), _jsx("h3", { className: "n4-preset-name", title: preset.name, children: preset.name }), preset.description && _jsx("p", { className: "n4-preset-description", children: preset.description }), _jsx("div", { className: "n4-preset-hint", children: complexityHint ?? _jsxs(_Fragment, { children: [complexityIcon, PRESET_COMPLEXITY_HINTS[card.complexityMeta.key]] }) }), _jsx("dl", { className: "n4-preset-stats", children: stats.map(([label, value], index) => (_jsxs("div", { children: [_jsx("dd", { className: index === 3 && card.stats.hasGenerators ? "n4-preset-emphasize" : undefined, children: value }), _jsx("dt", { children: label })] }, label))) }), card.preview.nodes.length > 0 && _jsxs("ul", { className: "n4-preset-preview", children: [card.preview.nodes.map((node) => _jsxs("li", { style: { paddingLeft: `${node.depth * 12}px` }, children: [previewIcons?.[node.kind], _jsx("span", { title: node.label, children: node.label }), node.hasGenerator && previewIcons?.generator] }, node.id)), card.preview.truncated && _jsx("li", { className: "n4-preset-more", children: moreSteps(card.preview.totalSteps - card.preview.nodes.length) })] }), _jsx("div", { className: "n4-preset-actions", children: card.variants.map((variant) => _jsx("div", { children: renderVariant(variant) }, variant)) })] }));
|
|
13
|
+
}
|
|
14
|
+
const PRESET_COMPLEXITY_HINTS = {
|
|
15
|
+
starter: "Fast baseline",
|
|
16
|
+
quick: "Compact screening",
|
|
17
|
+
balanced: "Broader search",
|
|
18
|
+
heavy: "Wide benchmark",
|
|
19
|
+
exhaustive: "Long exploration",
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=PipelinePresetCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PipelinePresetCard.js","sourceRoot":"","sources":["../../src/components/PipelinePresetCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,4 +9,6 @@ export * from "./MetricValueBadge.js";
|
|
|
9
9
|
export * from "./RuntimeDiagnosticList.js";
|
|
10
10
|
export * from "./RuntimeEngineBadge.js";
|
|
11
11
|
export * from "./RuntimeResultStatusBadge.js";
|
|
12
|
+
export * from "./PipelinePresetCard.js";
|
|
13
|
+
export * from "./DatasetDropzone.js";
|
|
12
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"}
|
|
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"}
|
package/dist/components/index.js
CHANGED
|
@@ -9,4 +9,6 @@ export * from "./MetricValueBadge.js";
|
|
|
9
9
|
export * from "./RuntimeDiagnosticList.js";
|
|
10
10
|
export * from "./RuntimeEngineBadge.js";
|
|
11
11
|
export * from "./RuntimeResultStatusBadge.js";
|
|
12
|
+
export * from "./PipelinePresetCard.js";
|
|
13
|
+
export * from "./DatasetDropzone.js";
|
|
12
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"}
|
|
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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -25,4 +25,5 @@ export * as styles from "./styles/index.js";
|
|
|
25
25
|
export * as lab from "./lab/index.js";
|
|
26
26
|
export * as datasetBuilder from "./datasetBuilder/index.js";
|
|
27
27
|
export * as qualification from "./qualification/index.js";
|
|
28
|
+
export * as pipelines from "./pipelines/index.js";
|
|
28
29
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,eAAe,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,cAAc,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,eAAe,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,cAAc,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -25,4 +25,5 @@ export * as styles from "./styles/index.js";
|
|
|
25
25
|
export * as lab from "./lab/index.js";
|
|
26
26
|
export * as datasetBuilder from "./datasetBuilder/index.js";
|
|
27
27
|
export * as qualification from "./qualification/index.js";
|
|
28
|
+
export * as pipelines from "./pipelines/index.js";
|
|
28
29
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,eAAe,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,cAAc,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,eAAe,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,YAAY,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,UAAU,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,cAAc,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAC;AAC1D,OAAO,KAAK,SAAS,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
type CanonicalPreviewGenerator = {
|
|
2
|
+
_or_?: unknown[];
|
|
3
|
+
_range_?: number[];
|
|
4
|
+
_log_range_?: number[];
|
|
5
|
+
_grid_?: Record<string, unknown[]>;
|
|
6
|
+
_zip_?: Record<string, unknown[]>;
|
|
7
|
+
count?: number | undefined;
|
|
8
|
+
};
|
|
9
|
+
export interface CanonicalPreviewStep {
|
|
10
|
+
id: string;
|
|
11
|
+
type: string;
|
|
12
|
+
name: string;
|
|
13
|
+
displayName?: string;
|
|
14
|
+
params?: Record<string, unknown>;
|
|
15
|
+
generator?: CanonicalPreviewGenerator | undefined;
|
|
16
|
+
children?: CanonicalPreviewStep[];
|
|
17
|
+
branches?: CanonicalPreviewStep[][] | undefined;
|
|
18
|
+
}
|
|
19
|
+
export declare function buildCanonicalPreviewSteps(steps: unknown[] | null | undefined): CanonicalPreviewStep[];
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=canonicalPipelinePreview.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"canonicalPipelinePreview.d.ts","sourceRoot":"","sources":["../../src/pipelines/canonicalPipelinePreview.ts"],"names":[],"mappings":"AAAA,KAAK,yBAAyB,GAAG;IAC/B,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,CAAC,EAAE,yBAAyB,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,EAAE,oBAAoB,EAAE,CAAC;IAClC,QAAQ,CAAC,EAAE,oBAAoB,EAAE,EAAE,GAAG,SAAS,CAAC;CACjD;AAkcD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,oBAAoB,EAAE,CAGtG"}
|