@rslsp1/fa-app-tools 5.0.0 → 5.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-TW4IDHAN.mjs → chunk-3MUI4ZV7.mjs} +1299 -784
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1711 -1198
- package/dist/index.mjs +3 -3
- package/dist/szenen.d.mts +8 -0
- package/dist/szenen.d.ts +8 -0
- package/dist/szenen.js +1311 -796
- package/dist/szenen.mjs +1 -1
- package/package.json +1 -1
package/dist/szenen.js
CHANGED
|
@@ -310,15 +310,15 @@ function resolveRef(ref, baseId, schemas) {
|
|
|
310
310
|
const target = hash === -1 ? ref : ref.slice(0, hash);
|
|
311
311
|
const pointer = hash === -1 ? "" : ref.slice(hash + 1);
|
|
312
312
|
const documentId = target === "" ? baseId : new URL(target, baseId).href;
|
|
313
|
-
const
|
|
314
|
-
if (!
|
|
313
|
+
const document2 = schemas.byId.get(documentId);
|
|
314
|
+
if (!document2) {
|
|
315
315
|
throw new UnsupportedSchemaError(`Referenz "${ref}" zeigt auf unbekanntes Schema ${documentId}.`);
|
|
316
316
|
}
|
|
317
|
-
if (pointer === "" || pointer === "/") return { schema:
|
|
317
|
+
if (pointer === "" || pointer === "/") return { schema: document2, baseId: documentId };
|
|
318
318
|
if (!pointer.startsWith("/")) {
|
|
319
319
|
throw new UnsupportedSchemaError(`Referenz "${ref}": nur JSON-Pointer werden aufgeloest.`);
|
|
320
320
|
}
|
|
321
|
-
let node =
|
|
321
|
+
let node = document2;
|
|
322
322
|
for (const rawSegment of pointer.slice(1).split("/")) {
|
|
323
323
|
const segment = unescapePointer(rawSegment);
|
|
324
324
|
if (!isObject(node) || !(segment in node)) {
|
|
@@ -10459,6 +10459,7 @@ async function ladeVorschauen(port, mediaRefs, fertig, optionen = {}) {
|
|
|
10459
10459
|
const ergebnis = await laden.call(port, ref);
|
|
10460
10460
|
if (lauf?.abgebrochen) return;
|
|
10461
10461
|
if (ergebnis.kind === "ok") fertig(ref, ergebnis.value);
|
|
10462
|
+
else optionen.gescheitert?.(ref, ergebnis.message);
|
|
10462
10463
|
}
|
|
10463
10464
|
}
|
|
10464
10465
|
await Promise.all(
|
|
@@ -13440,7 +13441,7 @@ function checkSceneDerivationRecoveryRecord(candidate) {
|
|
|
13440
13441
|
}
|
|
13441
13442
|
|
|
13442
13443
|
// src/features/szenen/SzenenView.tsx
|
|
13443
|
-
var
|
|
13444
|
+
var import_react17 = require("react");
|
|
13444
13445
|
|
|
13445
13446
|
// src/features/szenen/szenenViewModel.ts
|
|
13446
13447
|
var KEINE_BAUSTEINE = [
|
|
@@ -13533,7 +13534,7 @@ function noticeFor(ergebnis, was) {
|
|
|
13533
13534
|
}
|
|
13534
13535
|
|
|
13535
13536
|
// src/features/szenen/areas/ElementsArea.tsx
|
|
13536
|
-
var
|
|
13537
|
+
var import_react12 = require("react");
|
|
13537
13538
|
|
|
13538
13539
|
// src/features/szenen/areas/usePortQuery.ts
|
|
13539
13540
|
var import_react = require("react");
|
|
@@ -13565,7 +13566,7 @@ function usePortQuery(frage, abhaengigkeiten) {
|
|
|
13565
13566
|
}
|
|
13566
13567
|
|
|
13567
13568
|
// src/features/szenen/areas/ElementDetail.tsx
|
|
13568
|
-
var
|
|
13569
|
+
var import_react10 = require("react");
|
|
13569
13570
|
|
|
13570
13571
|
// src/features/szenen/elementLabels.ts
|
|
13571
13572
|
var LABELS = {
|
|
@@ -13925,6 +13926,9 @@ var LABELS2 = {
|
|
|
13925
13926
|
user_instruction: "Nutzeranweisung",
|
|
13926
13927
|
prompt_render_settings: "Prompt-Erzeugung",
|
|
13927
13928
|
blender_render_settings: "Blender-Ausgabe",
|
|
13929
|
+
// Nur Darstellung, keine Schemaaenderung (A4): Der Schluessel bleibt
|
|
13930
|
+
// `overrides`, und er steht als `<code>` weiterhin daneben.
|
|
13931
|
+
overrides: "Render-Abweichungen",
|
|
13928
13932
|
camera_rig: "Kamera-Rig",
|
|
13929
13933
|
media_refs: "Medien",
|
|
13930
13934
|
external_refs: "Externe Referenzen",
|
|
@@ -14903,41 +14907,91 @@ var FeldControl = (props) => {
|
|
|
14903
14907
|
);
|
|
14904
14908
|
}
|
|
14905
14909
|
};
|
|
14910
|
+
var LANGE_ERKLAERUNG = 120;
|
|
14911
|
+
function ersterSatz(text) {
|
|
14912
|
+
const ende = /[.!?](\s|$)/.exec(text);
|
|
14913
|
+
return ende ? text.slice(0, ende.index + 1) : text;
|
|
14914
|
+
}
|
|
14915
|
+
var Erklaerung = ({ text, testId }) => {
|
|
14916
|
+
const ganz = text.trim();
|
|
14917
|
+
const kern = ersterSatz(ganz);
|
|
14918
|
+
const rest = ganz.slice(kern.length).trim();
|
|
14919
|
+
if (ganz.length <= LANGE_ERKLAERUNG || !rest) {
|
|
14920
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("small", { "data-testid": `erklaerung-${testId}`, children: ganz });
|
|
14921
|
+
}
|
|
14922
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
|
|
14923
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("small", { "data-testid": `erklaerung-${testId}`, children: kern }),
|
|
14924
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("details", { className: "szenen-detail__warum", "data-testid": `warum-${testId}`, children: [
|
|
14925
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("summary", { children: "Warum?" }),
|
|
14926
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("small", { children: rest })
|
|
14927
|
+
] })
|
|
14928
|
+
] });
|
|
14929
|
+
};
|
|
14930
|
+
function gruppeKonfiguriert(feld, formular) {
|
|
14931
|
+
return Object.keys(payloadFromForm([feld], formular)).length > 0;
|
|
14932
|
+
}
|
|
14906
14933
|
var SchemaFieldRow = (props) => {
|
|
14907
14934
|
const { feld, elementType, formular } = props;
|
|
14908
14935
|
const label = feldLabel(elementType, feld.path, feld.name);
|
|
14909
14936
|
if (feld.kind === "group") {
|
|
14910
|
-
|
|
14911
|
-
|
|
14912
|
-
|
|
14913
|
-
|
|
14914
|
-
|
|
14915
|
-
|
|
14916
|
-
|
|
14917
|
-
|
|
14937
|
+
const konfiguriert = gruppeKonfiguriert(feld, formular);
|
|
14938
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
14939
|
+
"details",
|
|
14940
|
+
{
|
|
14941
|
+
className: "szenen-detail__group",
|
|
14942
|
+
"data-testid": `gruppe-${feld.path}`,
|
|
14943
|
+
"data-konfiguriert": konfiguriert ? "ja" : "nein",
|
|
14944
|
+
open: feld.required,
|
|
14945
|
+
children: [
|
|
14946
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("summary", { children: [
|
|
14947
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "szenen-detail__group-titel", children: label }),
|
|
14948
|
+
feld.required ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("strong", { title: "Pflichtfeld", children: " *" }) : (
|
|
14949
|
+
// A2: Dass hier schon etwas steht, muss man im
|
|
14950
|
+
// geschlossenen Zustand sehen — sonst übersieht man
|
|
14951
|
+
// eine gesetzte Blender-Ausgabe genau so lange, bis
|
|
14952
|
+
// sie im Ergebnis auftaucht.
|
|
14953
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
14954
|
+
"span",
|
|
14955
|
+
{
|
|
14956
|
+
className: "szenen-detail__group-status",
|
|
14957
|
+
"data-testid": `gruppe-${feld.path}-status`,
|
|
14958
|
+
children: konfiguriert ? "konfiguriert" : "optional"
|
|
14959
|
+
}
|
|
14960
|
+
)
|
|
14961
|
+
)
|
|
14962
|
+
] }),
|
|
14963
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "szenen-detail__group-inhalt", children: [
|
|
14964
|
+
feld.description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Erklaerung, { text: feld.description, testId: `gruppe-${feld.path}` }),
|
|
14965
|
+
(feld.children ?? []).map((kind) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(SchemaFieldRow, { ...props, feld: kind }, kind.path))
|
|
14966
|
+
] })
|
|
14967
|
+
]
|
|
14968
|
+
}
|
|
14969
|
+
);
|
|
14918
14970
|
}
|
|
14919
14971
|
const wert = formular[feld.path] ?? "";
|
|
14920
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("
|
|
14921
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("
|
|
14922
|
-
|
|
14923
|
-
|
|
14924
|
-
|
|
14925
|
-
|
|
14926
|
-
|
|
14927
|
-
|
|
14928
|
-
|
|
14972
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", { className: "szenen-detail__fieldrow", "data-feld": feld.path, children: [
|
|
14973
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", { className: "szenen-detail__field", children: [
|
|
14974
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", { children: [
|
|
14975
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", { className: "szenen-detail__field-label", children: label }),
|
|
14976
|
+
feld.required && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("strong", { title: "Pflichtfeld", children: " *" }),
|
|
14977
|
+
label !== feld.name && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("code", { className: "szenen-detail__field-key", children: feld.name }),
|
|
14978
|
+
feld.complexHint && !hatFachlicheBedienung(elementType, feld) && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("em", { children: [
|
|
14979
|
+
" \u2014 ",
|
|
14980
|
+
feld.complexHint
|
|
14981
|
+
] })
|
|
14982
|
+
] }),
|
|
14983
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(FeldControl, { ...props, wert }),
|
|
14984
|
+
feld.nullable && feld.kind !== "complex" && !hatFachlicheBedienung(elementType, feld) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
14985
|
+
NullSchalter,
|
|
14986
|
+
{
|
|
14987
|
+
feld,
|
|
14988
|
+
wert,
|
|
14989
|
+
onChange: props.onChange,
|
|
14990
|
+
readOnly: props.readOnly
|
|
14991
|
+
}
|
|
14992
|
+
)
|
|
14929
14993
|
] }),
|
|
14930
|
-
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
14931
|
-
feld.nullable && feld.kind !== "complex" && !hatFachlicheBedienung(elementType, feld) && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
14932
|
-
NullSchalter,
|
|
14933
|
-
{
|
|
14934
|
-
feld,
|
|
14935
|
-
wert,
|
|
14936
|
-
onChange: props.onChange,
|
|
14937
|
-
readOnly: props.readOnly
|
|
14938
|
-
}
|
|
14939
|
-
),
|
|
14940
|
-
feld.description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("small", { children: feld.description })
|
|
14994
|
+
feld.description && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Erklaerung, { text: feld.description, testId: feld.path })
|
|
14941
14995
|
] });
|
|
14942
14996
|
};
|
|
14943
14997
|
|
|
@@ -15604,11 +15658,162 @@ var VersionNavigator = ({
|
|
|
15604
15658
|
};
|
|
15605
15659
|
|
|
15606
15660
|
// src/features/szenen/areas/RunsPanel.tsx
|
|
15607
|
-
var
|
|
15661
|
+
var import_react9 = require("react");
|
|
15608
15662
|
|
|
15609
15663
|
// src/features/szenen/areas/RunImagesPanel.tsx
|
|
15664
|
+
var import_react8 = require("react");
|
|
15665
|
+
|
|
15666
|
+
// src/features/szenen/areas/Bildbausteine.tsx
|
|
15610
15667
|
var import_react7 = require("react");
|
|
15611
15668
|
var import_jsx_runtime7 = require("react/jsx-runtime");
|
|
15669
|
+
var Kachel = ({
|
|
15670
|
+
quelle,
|
|
15671
|
+
alt,
|
|
15672
|
+
leerText
|
|
15673
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "szenen-bildkachel", children: quelle ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("img", { src: quelle, alt, loading: "lazy" }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "szenen-bildkachel__leer", title: leerText ?? alt, children: leerText ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "szenen-bildkachel__zeichen", children: "?" }) : null }) });
|
|
15674
|
+
var BildViewer = ({
|
|
15675
|
+
bilder,
|
|
15676
|
+
position,
|
|
15677
|
+
onWechseln,
|
|
15678
|
+
onSchliessen,
|
|
15679
|
+
satzTitel,
|
|
15680
|
+
testId
|
|
15681
|
+
}) => {
|
|
15682
|
+
const anzahl = bilder.length;
|
|
15683
|
+
const bild = bilder[position];
|
|
15684
|
+
const blaettern = (0, import_react7.useCallback)((schritt) => {
|
|
15685
|
+
if (anzahl === 0) return;
|
|
15686
|
+
onWechseln((position + schritt + anzahl) % anzahl);
|
|
15687
|
+
}, [anzahl, position, onWechseln]);
|
|
15688
|
+
(0, import_react7.useEffect)(() => {
|
|
15689
|
+
const taste = (e) => {
|
|
15690
|
+
if (e.key === "Escape") onSchliessen();
|
|
15691
|
+
else if (e.key === "ArrowLeft") blaettern(-1);
|
|
15692
|
+
else if (e.key === "ArrowRight") blaettern(1);
|
|
15693
|
+
};
|
|
15694
|
+
document.addEventListener("keydown", taste);
|
|
15695
|
+
return () => document.removeEventListener("keydown", taste);
|
|
15696
|
+
}, [blaettern, onSchliessen]);
|
|
15697
|
+
if (!bild) return null;
|
|
15698
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
15699
|
+
"div",
|
|
15700
|
+
{
|
|
15701
|
+
className: "szenen-bildviewer",
|
|
15702
|
+
"data-testid": testId,
|
|
15703
|
+
role: "dialog",
|
|
15704
|
+
"aria-modal": "true",
|
|
15705
|
+
"aria-label": satzTitel ? `${satzTitel} \u2014 ${bild.titel}` : bild.titel,
|
|
15706
|
+
children: [
|
|
15707
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("header", { className: "szenen-bildviewer__kopf", children: [
|
|
15708
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "szenen-bildviewer__titel", children: [
|
|
15709
|
+
satzTitel ? `${satzTitel} \xB7 ` : "",
|
|
15710
|
+
bild.titel
|
|
15711
|
+
] }),
|
|
15712
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "szenen-bildviewer__zaehler", "data-testid": `${testId}-zaehler`, children: [
|
|
15713
|
+
position + 1,
|
|
15714
|
+
" / ",
|
|
15715
|
+
anzahl
|
|
15716
|
+
] }),
|
|
15717
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
15718
|
+
"button",
|
|
15719
|
+
{
|
|
15720
|
+
type: "button",
|
|
15721
|
+
className: "szenen-bildviewer__schliessen",
|
|
15722
|
+
onClick: onSchliessen,
|
|
15723
|
+
"data-testid": `${testId}-schliessen`,
|
|
15724
|
+
children: "Schliessen"
|
|
15725
|
+
}
|
|
15726
|
+
)
|
|
15727
|
+
] }),
|
|
15728
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "szenen-bildviewer__buehne", children: [
|
|
15729
|
+
anzahl > 1 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
15730
|
+
"button",
|
|
15731
|
+
{
|
|
15732
|
+
type: "button",
|
|
15733
|
+
className: "szenen-bildviewer__blaettern",
|
|
15734
|
+
onClick: () => blaettern(-1),
|
|
15735
|
+
"aria-label": "Vorheriges Bild",
|
|
15736
|
+
"data-testid": `${testId}-zurueck`,
|
|
15737
|
+
children: "\u2039"
|
|
15738
|
+
}
|
|
15739
|
+
),
|
|
15740
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "szenen-bildviewer__rahmen", children: bild.quelle ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
15741
|
+
"img",
|
|
15742
|
+
{
|
|
15743
|
+
className: "szenen-bildviewer__bild",
|
|
15744
|
+
src: bild.quelle,
|
|
15745
|
+
alt: bild.titel,
|
|
15746
|
+
"data-testid": `${testId}-bild`
|
|
15747
|
+
}
|
|
15748
|
+
) : (
|
|
15749
|
+
// Auch gross bleibt eine fehlende Quelle eine Auskunft
|
|
15750
|
+
// und kein Textblock (R12.3).
|
|
15751
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "szenen-bildviewer__leer", "data-testid": `${testId}-leer`, children: bild.leerText ?? "F\xFCr dieses Bild gibt es keine anzeigbare Quelle." })
|
|
15752
|
+
) }),
|
|
15753
|
+
anzahl > 1 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
15754
|
+
"button",
|
|
15755
|
+
{
|
|
15756
|
+
type: "button",
|
|
15757
|
+
className: "szenen-bildviewer__blaettern",
|
|
15758
|
+
onClick: () => blaettern(1),
|
|
15759
|
+
"aria-label": "N\xE4chstes Bild",
|
|
15760
|
+
"data-testid": `${testId}-weiter`,
|
|
15761
|
+
children: "\u203A"
|
|
15762
|
+
}
|
|
15763
|
+
)
|
|
15764
|
+
] }),
|
|
15765
|
+
bild.details && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "szenen-bildviewer__details", "data-testid": `${testId}-details`, children: bild.details })
|
|
15766
|
+
]
|
|
15767
|
+
}
|
|
15768
|
+
);
|
|
15769
|
+
};
|
|
15770
|
+
var BildGalerie = ({ bilder, testId, satzTitel }) => {
|
|
15771
|
+
const [offen, setOffen] = (0, import_react7.useState)(null);
|
|
15772
|
+
(0, import_react7.useEffect)(() => {
|
|
15773
|
+
setOffen((vorher) => vorher !== null && vorher >= bilder.length ? null : vorher);
|
|
15774
|
+
}, [bilder.length]);
|
|
15775
|
+
if (bilder.length === 0) return null;
|
|
15776
|
+
return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
15777
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("ul", { className: "szenen-bildgalerie", "data-testid": testId, children: bilder.map((bild, position) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
15778
|
+
"button",
|
|
15779
|
+
{
|
|
15780
|
+
type: "button",
|
|
15781
|
+
className: "szenen-bildgalerie__kachel",
|
|
15782
|
+
onClick: () => setOffen(position),
|
|
15783
|
+
"data-testid": `${testId}-oeffnen-${bild.id}`,
|
|
15784
|
+
title: bild.titel,
|
|
15785
|
+
children: [
|
|
15786
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
15787
|
+
Kachel,
|
|
15788
|
+
{
|
|
15789
|
+
quelle: bild.quelle,
|
|
15790
|
+
alt: bild.titel,
|
|
15791
|
+
...bild.leerText ? { leerText: bild.leerText } : {}
|
|
15792
|
+
}
|
|
15793
|
+
),
|
|
15794
|
+
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "szenen-bildgalerie__nummer", children: [
|
|
15795
|
+
"#",
|
|
15796
|
+
position + 1
|
|
15797
|
+
] })
|
|
15798
|
+
]
|
|
15799
|
+
}
|
|
15800
|
+
) }, bild.id)) }),
|
|
15801
|
+
offen !== null && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
|
|
15802
|
+
BildViewer,
|
|
15803
|
+
{
|
|
15804
|
+
bilder,
|
|
15805
|
+
position: offen,
|
|
15806
|
+
onWechseln: setOffen,
|
|
15807
|
+
onSchliessen: () => setOffen(null),
|
|
15808
|
+
testId: `${testId}-viewer`,
|
|
15809
|
+
...satzTitel ? { satzTitel } : {}
|
|
15810
|
+
}
|
|
15811
|
+
)
|
|
15812
|
+
] });
|
|
15813
|
+
};
|
|
15814
|
+
|
|
15815
|
+
// src/features/szenen/areas/RunImagesPanel.tsx
|
|
15816
|
+
var import_jsx_runtime8 = require("react/jsx-runtime");
|
|
15612
15817
|
var AUFTRAG_TEXT = {
|
|
15613
15818
|
// „gestartet/unterbrochen" in einem: Aus dem Log allein ist beides nicht
|
|
15614
15819
|
// unterscheidbar, und genau das ist beabsichtigt — es gibt keinen
|
|
@@ -15620,8 +15825,10 @@ var AUFTRAG_TEXT = {
|
|
|
15620
15825
|
};
|
|
15621
15826
|
var RunImagesPanel = ({ port, lauf }) => {
|
|
15622
15827
|
const faehig = capabilitiesOf(port);
|
|
15623
|
-
const [nachladen, setNachladen] = (0,
|
|
15828
|
+
const [nachladen, setNachladen] = (0, import_react8.useState)(0);
|
|
15624
15829
|
const neuLesen = () => setNachladen((n) => n + 1);
|
|
15830
|
+
const [erzeugenOffen, setErzeugenOffen] = (0, import_react8.useState)(null);
|
|
15831
|
+
const [zuordnenOffen, setZuordnenOffen] = (0, import_react8.useState)(null);
|
|
15625
15832
|
const quelle = sourceOf(lauf);
|
|
15626
15833
|
const [wahlPhase] = usePortQuery(
|
|
15627
15834
|
() => port.imageGeneration ? port.imageGeneration.imageModelChoiceForRun(lauf.run_id) : Promise.resolve({ kind: "ok", value: null }),
|
|
@@ -15638,38 +15845,40 @@ var RunImagesPanel = ({ port, lauf }) => {
|
|
|
15638
15845
|
);
|
|
15639
15846
|
const auftraege = auftraegePhase.status === "ready" ? auftraegePhase.value : [];
|
|
15640
15847
|
const batches = batchesPhase.status === "ready" ? batchesPhase.value : [];
|
|
15641
|
-
|
|
15642
|
-
|
|
15643
|
-
|
|
15644
|
-
|
|
15645
|
-
|
|
15848
|
+
const auffaellige = auftraege.filter((a) => a.status !== "succeeded");
|
|
15849
|
+
const erzeugenAuf = erzeugenOffen ?? batches.length === 0;
|
|
15850
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "szenen-bilder", "data-testid": `bilder-${lauf.run_id}`, children: [
|
|
15851
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("section", { className: "szenen-bilder__eingang", "data-testid": `eingang-${lauf.run_id}`, children: [
|
|
15852
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h5", { children: "Eingang \u2014 woraus dieser Prompt entstand" }),
|
|
15853
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { className: "szenen-bilder__ids", children: [
|
|
15854
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { children: [
|
|
15646
15855
|
"Lauf ",
|
|
15647
|
-
/* @__PURE__ */ (0,
|
|
15856
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { "data-testid": `eingang-lauf-${lauf.run_id}`, children: lauf.run_id })
|
|
15648
15857
|
] }),
|
|
15649
|
-
quelle.kind === "published" && /* @__PURE__ */ (0,
|
|
15858
|
+
quelle.kind === "published" && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { "data-testid": `eingang-herkunft-${lauf.run_id}`, children: [
|
|
15650
15859
|
"ver\xF6ffentlichte Shot-Version ",
|
|
15651
|
-
/* @__PURE__ */ (0,
|
|
15860
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: quelle.shot_version_id })
|
|
15652
15861
|
] }),
|
|
15653
|
-
quelle.kind === "draft_chain" && /* @__PURE__ */ (0,
|
|
15862
|
+
quelle.kind === "draft_chain" && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { "data-testid": `eingang-herkunft-${lauf.run_id}`, children: [
|
|
15654
15863
|
"Draft-Kette ",
|
|
15655
|
-
/* @__PURE__ */ (0,
|
|
15864
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: quelle.chain_id })
|
|
15656
15865
|
] }),
|
|
15657
|
-
quelle.kind === "scene_direct" && /* @__PURE__ */ (0,
|
|
15866
|
+
quelle.kind === "scene_direct" && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { "data-testid": `eingang-herkunft-${lauf.run_id}`, children: [
|
|
15658
15867
|
"Szene ",
|
|
15659
|
-
/* @__PURE__ */ (0,
|
|
15660
|
-
quelle.scene.draft_id ? /* @__PURE__ */ (0,
|
|
15868
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: quelle.scene.element_id }),
|
|
15869
|
+
quelle.scene.draft_id ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
|
|
15661
15870
|
" \xB7 Entwurf ",
|
|
15662
|
-
/* @__PURE__ */ (0,
|
|
15871
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: quelle.scene.draft_id }),
|
|
15663
15872
|
" (Revision ",
|
|
15664
15873
|
quelle.scene.revision,
|
|
15665
15874
|
")"
|
|
15666
|
-
] }) : /* @__PURE__ */ (0,
|
|
15875
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
|
|
15667
15876
|
" \xB7 Version ",
|
|
15668
|
-
/* @__PURE__ */ (0,
|
|
15877
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: quelle.scene.version_id })
|
|
15669
15878
|
] })
|
|
15670
15879
|
] })
|
|
15671
15880
|
] }),
|
|
15672
|
-
quelle.kind === "draft_chain" && quelle.derivation_run_id ? /* @__PURE__ */ (0,
|
|
15881
|
+
quelle.kind === "draft_chain" && quelle.derivation_run_id ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
15673
15882
|
InputBilder,
|
|
15674
15883
|
{
|
|
15675
15884
|
port,
|
|
@@ -15680,67 +15889,148 @@ var RunImagesPanel = ({ port, lauf }) => {
|
|
|
15680
15889
|
// Nichts raten: Ein Lauf vor 6.7 trägt die
|
|
15681
15890
|
// Rekonstruktionsherkunft nicht, und ein veröffentlichter
|
|
15682
15891
|
// Lauf hat keine (D-123).
|
|
15683
|
-
/* @__PURE__ */ (0,
|
|
15892
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { "data-testid": `eingang-ohne-bilder-${lauf.run_id}`, children: "Zu diesem Lauf ist kein Rekonstruktionslauf hinterlegt \u2014 die Eingangsbilder sind darum nicht sicher aufl\xF6sbar und werden nicht geraten." })
|
|
15684
15893
|
)
|
|
15685
15894
|
] }),
|
|
15686
|
-
/* @__PURE__ */ (0,
|
|
15687
|
-
/* @__PURE__ */ (0,
|
|
15688
|
-
!faehig.
|
|
15689
|
-
|
|
15895
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("section", { className: "szenen-bilder__ausgang", "data-testid": `ausgang-${lauf.run_id}`, children: [
|
|
15896
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("h5", { children: "Ausgang \u2014 die Bilder aus diesem Prompt" }),
|
|
15897
|
+
!faehig.imageBatchHistory && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { "data-testid": `batches-unsupported-${lauf.run_id}`, children: "Dieser Host liest keine Bild-Batches. Das ist kein Fehler und kein vor\xFCbergehender Zustand." }),
|
|
15898
|
+
batchesPhase.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { "data-testid": `batches-fehler-${lauf.run_id}`, role: "alert", children: [
|
|
15899
|
+
"Batches konnten nicht geladen werden: ",
|
|
15900
|
+
batchesPhase.message
|
|
15901
|
+
] }),
|
|
15902
|
+
faehig.imageBatchHistory && batchesPhase.status === "ready" && batches.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { "data-testid": `keine-batches-${lauf.run_id}`, children: "Zu diesem Lauf ist noch kein Bild gespeichert." }),
|
|
15903
|
+
batches.map((batch) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(BatchKachel, { port, batch }, batch.item_id)),
|
|
15904
|
+
!faehig.imageOrderHistory && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { "data-testid": `auftraege-unsupported-${lauf.run_id}`, children: "Dieser Host liest keine Bildgenerierungsauftr\xE4ge. Bereits gespeicherte Batches sind oben trotzdem sichtbar." }),
|
|
15905
|
+
auftraegePhase.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { "data-testid": `auftraege-fehler-${lauf.run_id}`, role: "alert", children: [
|
|
15690
15906
|
"Auftr\xE4ge konnten nicht geladen werden: ",
|
|
15691
15907
|
auftraegePhase.message
|
|
15692
15908
|
] }),
|
|
15693
|
-
faehig.imageOrderHistory && auftraegePhase.status === "ready" && auftraege.length === 0 && /* @__PURE__ */ (0,
|
|
15694
|
-
|
|
15695
|
-
"
|
|
15909
|
+
faehig.imageOrderHistory && auftraegePhase.status === "ready" && auftraege.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { "data-testid": `keine-auftraege-${lauf.run_id}`, children: "F\xFCr diesen Lauf wurde noch kein Bildauftrag gestartet." }),
|
|
15910
|
+
auffaellige.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
15911
|
+
"p",
|
|
15696
15912
|
{
|
|
15697
|
-
"
|
|
15698
|
-
"data-
|
|
15913
|
+
className: "szenen-bilder__auffaellig",
|
|
15914
|
+
"data-testid": `auftraege-auffaellig-${lauf.run_id}`,
|
|
15915
|
+
role: "alert",
|
|
15699
15916
|
children: [
|
|
15700
|
-
|
|
15701
|
-
|
|
15702
|
-
|
|
15703
|
-
|
|
15704
|
-
|
|
15705
|
-
|
|
15706
|
-
|
|
15707
|
-
|
|
15708
|
-
|
|
15709
|
-
|
|
15710
|
-
|
|
15711
|
-
|
|
15712
|
-
|
|
15713
|
-
|
|
15714
|
-
|
|
15715
|
-
|
|
15716
|
-
"
|
|
15717
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("code", { children: auftrag.item_id })
|
|
15917
|
+
auffaellige.length === 1 ? `Ein Bildauftrag ist ${AUFTRAG_TEXT[auffaellige[0].status]}.` : `${auffaellige.length} Bildauftr\xE4ge sind nicht sauber durchgelaufen.`,
|
|
15918
|
+
" ",
|
|
15919
|
+
"Einzelheiten im Verlauf."
|
|
15920
|
+
]
|
|
15921
|
+
}
|
|
15922
|
+
),
|
|
15923
|
+
auftraege.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
15924
|
+
"details",
|
|
15925
|
+
{
|
|
15926
|
+
className: "szenen-bilder__verlauf",
|
|
15927
|
+
"data-testid": `auftraege-verlauf-${lauf.run_id}`,
|
|
15928
|
+
open: auffaellige.length > 0,
|
|
15929
|
+
children: [
|
|
15930
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("summary", { children: [
|
|
15931
|
+
"Bildauftr\xE4ge / Verlauf (",
|
|
15932
|
+
auftraege.length,
|
|
15933
|
+
")"
|
|
15718
15934
|
] }),
|
|
15719
|
-
|
|
15720
|
-
|
|
15935
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("ul", { className: "szenen-bilder__auftraege", "data-testid": `auftraege-${lauf.run_id}`, children: auftraege.map((auftrag) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
15936
|
+
"li",
|
|
15937
|
+
{
|
|
15938
|
+
"data-testid": `auftrag-${auftrag.generation_batch_id}`,
|
|
15939
|
+
"data-status": auftrag.status,
|
|
15940
|
+
children: [
|
|
15941
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("strong", { children: AUFTRAG_TEXT[auftrag.status] }),
|
|
15942
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { "data-testid": `auftrag-modell-${auftrag.generation_batch_id}`, children: [
|
|
15943
|
+
auftrag.request?.image_count ?? "?",
|
|
15944
|
+
" Bild(er) \xB7",
|
|
15945
|
+
" ",
|
|
15946
|
+
auftrag.request?.callable_model_id ?? "Modell unbekannt",
|
|
15947
|
+
auftrag.request?.provider ? ` bei ${auftrag.request.provider}` : ""
|
|
15948
|
+
] }),
|
|
15949
|
+
auftrag.request?.prompt_target_model_key && auftrag.request.target_model_matched === false && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { "data-testid": `auftrag-abweichung-${auftrag.generation_batch_id}`, children: [
|
|
15950
|
+
"abweichend \u2014 Prompt optimiert f\xFCr",
|
|
15951
|
+
" ",
|
|
15952
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: auftrag.request.prompt_target_model_key })
|
|
15953
|
+
] }),
|
|
15954
|
+
auftrag.request?.negative_prompt_transmitted === false && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { "data-testid": `auftrag-negativ-${auftrag.generation_batch_id}`, children: "Ein negativer Prompt lief \xFCber dieses Profil nicht mit." }),
|
|
15955
|
+
auftrag.item_id && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { "data-testid": `auftrag-item-${auftrag.generation_batch_id}`, children: [
|
|
15956
|
+
"Item ",
|
|
15957
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: auftrag.item_id })
|
|
15958
|
+
] }),
|
|
15959
|
+
auftrag.status === "started" && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { "data-testid": `auftrag-hinweis-${auftrag.generation_batch_id}`, children: "Kein automatischer neuer Versuch \u2014 ob noch einmal erzeugt wird, entscheiden Sie." }),
|
|
15960
|
+
auftrag.diagnostic && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { "data-testid": `auftrag-diagnose-${auftrag.generation_batch_id}`, children: auftrag.diagnostic }),
|
|
15961
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { className: "szenen-bilder__auftragskennung", children: auftrag.generation_batch_id })
|
|
15962
|
+
]
|
|
15963
|
+
},
|
|
15964
|
+
auftrag.generation_batch_id
|
|
15965
|
+
)) })
|
|
15721
15966
|
]
|
|
15722
|
-
}
|
|
15723
|
-
|
|
15724
|
-
)) }),
|
|
15725
|
-
!faehig.imageBatchHistory && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { "data-testid": `batches-unsupported-${lauf.run_id}`, children: "Dieser Host liest keine Bild-Batches. Das ist kein Fehler und kein vor\xFCbergehender Zustand." }),
|
|
15726
|
-
batchesPhase.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("p", { "data-testid": `batches-fehler-${lauf.run_id}`, role: "alert", children: [
|
|
15727
|
-
"Batches konnten nicht geladen werden: ",
|
|
15728
|
-
batchesPhase.message
|
|
15729
|
-
] }),
|
|
15730
|
-
faehig.imageBatchHistory && batchesPhase.status === "ready" && batches.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { "data-testid": `keine-batches-${lauf.run_id}`, children: "Zu diesem Lauf ist noch kein Bild gespeichert." }),
|
|
15731
|
-
batches.map((batch) => /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(BatchKachel, { port, batch }, batch.item_id))
|
|
15967
|
+
}
|
|
15968
|
+
)
|
|
15732
15969
|
] }),
|
|
15733
|
-
/* @__PURE__ */ (0,
|
|
15734
|
-
|
|
15970
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
15971
|
+
"details",
|
|
15735
15972
|
{
|
|
15736
|
-
|
|
15737
|
-
lauf
|
|
15738
|
-
|
|
15739
|
-
|
|
15740
|
-
|
|
15973
|
+
className: "szenen-bilder__aktion",
|
|
15974
|
+
"data-testid": `erzeugen-bereich-${lauf.run_id}`,
|
|
15975
|
+
open: erzeugenAuf,
|
|
15976
|
+
children: [
|
|
15977
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
15978
|
+
"summary",
|
|
15979
|
+
{
|
|
15980
|
+
onClick: (e) => {
|
|
15981
|
+
e.preventDefault();
|
|
15982
|
+
setErzeugenOffen(!erzeugenAuf);
|
|
15983
|
+
},
|
|
15984
|
+
children: "Bilder aus diesem Prompt erzeugen"
|
|
15985
|
+
}
|
|
15986
|
+
),
|
|
15987
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
15988
|
+
ErzeugenAktion,
|
|
15989
|
+
{
|
|
15990
|
+
port,
|
|
15991
|
+
lauf,
|
|
15992
|
+
wahl,
|
|
15993
|
+
wahlFehler: wahlPhase.status === "error" ? wahlPhase.message : null,
|
|
15994
|
+
onFertig: () => {
|
|
15995
|
+
setErzeugenOffen(true);
|
|
15996
|
+
neuLesen();
|
|
15997
|
+
}
|
|
15998
|
+
}
|
|
15999
|
+
)
|
|
16000
|
+
]
|
|
15741
16001
|
}
|
|
15742
16002
|
),
|
|
15743
|
-
/* @__PURE__ */ (0,
|
|
16003
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
16004
|
+
"details",
|
|
16005
|
+
{
|
|
16006
|
+
className: "szenen-bilder__aktion",
|
|
16007
|
+
"data-testid": `zuordnen-bereich-${lauf.run_id}`,
|
|
16008
|
+
open: zuordnenOffen ?? false,
|
|
16009
|
+
children: [
|
|
16010
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16011
|
+
"summary",
|
|
16012
|
+
{
|
|
16013
|
+
onClick: (e) => {
|
|
16014
|
+
e.preventDefault();
|
|
16015
|
+
setZuordnenOffen(!(zuordnenOffen ?? false));
|
|
16016
|
+
},
|
|
16017
|
+
children: "Externe Bilder diesem Lauf zuordnen"
|
|
16018
|
+
}
|
|
16019
|
+
),
|
|
16020
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16021
|
+
ZuordnenAktion,
|
|
16022
|
+
{
|
|
16023
|
+
port,
|
|
16024
|
+
lauf,
|
|
16025
|
+
onFertig: () => {
|
|
16026
|
+
setZuordnenOffen(true);
|
|
16027
|
+
neuLesen();
|
|
16028
|
+
}
|
|
16029
|
+
}
|
|
16030
|
+
)
|
|
16031
|
+
]
|
|
16032
|
+
}
|
|
16033
|
+
)
|
|
15744
16034
|
] });
|
|
15745
16035
|
};
|
|
15746
16036
|
var InputBilder = ({ port, runId, derivationRunId }) => {
|
|
@@ -15748,9 +16038,9 @@ var InputBilder = ({ port, runId, derivationRunId }) => {
|
|
|
15748
16038
|
() => port.derivation ? port.derivation.getDerivation(derivationRunId) : Promise.resolve({ kind: "ok", value: null }),
|
|
15749
16039
|
[port, derivationRunId]
|
|
15750
16040
|
);
|
|
15751
|
-
if (phase.status === "loading") return /* @__PURE__ */ (0,
|
|
16041
|
+
if (phase.status === "loading") return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { children: "Rekonstruktionslauf wird geladen \u2026" });
|
|
15752
16042
|
if (phase.status === "error") {
|
|
15753
|
-
return /* @__PURE__ */ (0,
|
|
16043
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { "data-testid": `eingang-fehler-${runId}`, role: "alert", children: [
|
|
15754
16044
|
"Der Rekonstruktionslauf ",
|
|
15755
16045
|
derivationRunId,
|
|
15756
16046
|
" konnte nicht geladen werden: ",
|
|
@@ -15758,22 +16048,22 @@ var InputBilder = ({ port, runId, derivationRunId }) => {
|
|
|
15758
16048
|
] });
|
|
15759
16049
|
}
|
|
15760
16050
|
if (!phase.value) {
|
|
15761
|
-
return /* @__PURE__ */ (0,
|
|
16051
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { "data-testid": `eingang-unbekannt-${runId}`, children: [
|
|
15762
16052
|
"Der Rekonstruktionslauf ",
|
|
15763
|
-
/* @__PURE__ */ (0,
|
|
16053
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: derivationRunId }),
|
|
15764
16054
|
" ist in diesem Host nicht auffindbar."
|
|
15765
16055
|
] });
|
|
15766
16056
|
}
|
|
15767
16057
|
const bilder = phase.value.input.images;
|
|
15768
|
-
return /* @__PURE__ */ (0,
|
|
15769
|
-
/* @__PURE__ */ (0,
|
|
16058
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { "data-testid": `eingang-bilder-${runId}`, children: [
|
|
16059
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { children: [
|
|
15770
16060
|
"aus Rekonstruktionslauf ",
|
|
15771
|
-
/* @__PURE__ */ (0,
|
|
16061
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: derivationRunId }),
|
|
15772
16062
|
phase.value.input.prompt_text ? " \xB7 mit Referenzprompt" : ""
|
|
15773
16063
|
] }),
|
|
15774
|
-
bilder.length === 0 ? /* @__PURE__ */ (0,
|
|
16064
|
+
bilder.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { children: "Der Rekonstruktionslauf lief ohne Eingangsbild." }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("ul", { className: "szenen-bilder__eingangsliste", children: bilder.map((bild, index) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("li", { "data-kind": bild.kind, children: bild.kind === "library" ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(BestandsBild, { port, mediaRef: bild.media_ref }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { children: [
|
|
15775
16065
|
"Upload, nur \xFCber seinen Digest belegt (",
|
|
15776
|
-
/* @__PURE__ */ (0,
|
|
16066
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("code", { children: [
|
|
15777
16067
|
bild.sha256.slice(0, 12),
|
|
15778
16068
|
"\u2026"
|
|
15779
16069
|
] }),
|
|
@@ -15791,113 +16081,177 @@ var BestandsBild = ({ port, mediaRef }) => {
|
|
|
15791
16081
|
() => port.imageLibrary ? port.imageLibrary.resolveImage(mediaRef) : Promise.resolve({ kind: "ok", value: null }),
|
|
15792
16082
|
[port, mediaRef]
|
|
15793
16083
|
);
|
|
15794
|
-
|
|
15795
|
-
|
|
15796
|
-
|
|
16084
|
+
const quelle = phase.status === "ready" && phase.value ? `data:${phase.value.mime_type};base64,${phase.value.data}` : null;
|
|
16085
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { "data-testid": `eingangsbild-${mediaRef}`, children: [
|
|
16086
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16087
|
+
Kachel,
|
|
15797
16088
|
{
|
|
15798
|
-
|
|
15799
|
-
alt: `Eingangsbild ${mediaRef}
|
|
16089
|
+
quelle,
|
|
16090
|
+
alt: `Eingangsbild ${mediaRef}`,
|
|
16091
|
+
...phase.status === "error" ? { leerText: "Nicht ladbar" } : {}
|
|
15800
16092
|
}
|
|
15801
16093
|
),
|
|
15802
16094
|
phase.status === "error" && // Verzeichnet, aber nicht lesbar ist etwas anderes als
|
|
15803
16095
|
// unbekannt — der Unterschied gehoert sichtbar.
|
|
15804
|
-
/* @__PURE__ */ (0,
|
|
15805
|
-
/* @__PURE__ */ (0,
|
|
16096
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("em", { "data-testid": `eingangsbild-fehler-${mediaRef}`, children: phase.message }),
|
|
16097
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: mediaRef })
|
|
15806
16098
|
] });
|
|
15807
16099
|
};
|
|
15808
|
-
|
|
15809
|
-
const [
|
|
15810
|
-
|
|
15811
|
-
|
|
15812
|
-
);
|
|
15813
|
-
|
|
15814
|
-
|
|
15815
|
-
|
|
16100
|
+
function useBildQuellen(port, bilder) {
|
|
16101
|
+
const [stand, setStand] = (0, import_react8.useState)(() => ({ quellen: /* @__PURE__ */ new Map(), fehler: /* @__PURE__ */ new Map() }));
|
|
16102
|
+
const gehalten = (0, import_react8.useRef)(/* @__PURE__ */ new Map());
|
|
16103
|
+
const gescheitert = (0, import_react8.useRef)(/* @__PURE__ */ new Map());
|
|
16104
|
+
const schluessel = bilder.map((b) => `${b.media_ref}|${b.mime_type ?? ""}`).join(" ");
|
|
16105
|
+
(0, import_react8.useEffect)(() => {
|
|
16106
|
+
const bestand = port.imageLibrary;
|
|
16107
|
+
if (!bestand) return void 0;
|
|
16108
|
+
let abgebrochen = false;
|
|
16109
|
+
void (async () => {
|
|
16110
|
+
for (const bild of bilder) {
|
|
16111
|
+
if (abgebrochen) return;
|
|
16112
|
+
if (gehalten.current.has(bild.media_ref) || gescheitert.current.has(bild.media_ref)) continue;
|
|
16113
|
+
const ergebnis = await bestand.resolveImage(bild.media_ref, bild.mime_type ?? null);
|
|
16114
|
+
if (abgebrochen) return;
|
|
16115
|
+
if (ergebnis.kind === "ok" && ergebnis.value) {
|
|
16116
|
+
gehalten.current.set(
|
|
16117
|
+
bild.media_ref,
|
|
16118
|
+
`data:${ergebnis.value.mime_type};base64,${ergebnis.value.data}`
|
|
16119
|
+
);
|
|
16120
|
+
} else if (ergebnis.kind === "error") {
|
|
16121
|
+
gescheitert.current.set(bild.media_ref, ergebnis.message);
|
|
16122
|
+
}
|
|
16123
|
+
setStand({
|
|
16124
|
+
quellen: new Map(gehalten.current),
|
|
16125
|
+
fehler: new Map(gescheitert.current)
|
|
16126
|
+
});
|
|
16127
|
+
}
|
|
16128
|
+
})();
|
|
16129
|
+
return () => {
|
|
16130
|
+
abgebrochen = true;
|
|
16131
|
+
};
|
|
16132
|
+
}, [port, schluessel]);
|
|
16133
|
+
return stand;
|
|
16134
|
+
}
|
|
16135
|
+
var BildDetails = ({ bild, fehler: fehler4, aufloesbar }) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { className: "szenen-bilder__meta", "data-testid": `batchbild-${bild.media_ref}`, children: [
|
|
16136
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: bild.media_ref }),
|
|
16137
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { children: [
|
|
16138
|
+
"Position ",
|
|
16139
|
+
bild.position
|
|
16140
|
+
] }),
|
|
16141
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: bild.model || "Modell unbekannt" }),
|
|
16142
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { children: bild.seed === null || bild.seed === void 0 || bild.seed === -1 ? "ohne Seed" : `Seed ${bild.seed}` }),
|
|
16143
|
+
bild.width && bild.height ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { children: [
|
|
16144
|
+
bild.width,
|
|
16145
|
+
"\xD7",
|
|
16146
|
+
bild.height
|
|
16147
|
+
] }) : null,
|
|
16148
|
+
fehler4 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("em", { "data-testid": `batchbild-fehler-${bild.media_ref}`, children: fehler4 }),
|
|
16149
|
+
!aufloesbar && // Capability-Grenze, kein Fehler: Dieser Host kann Batches lesen,
|
|
16150
|
+
// aber keine Bilder auflösen (E). Kein erfundener Fallback auf eine
|
|
16151
|
+
// Serverroute (A6).
|
|
16152
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("em", { "data-testid": `batchbild-unsupported-${bild.media_ref}`, children: "Dieser Host l\xF6st keine Bilder auf \u2014 nur die Metadaten sind bekannt." })
|
|
16153
|
+
] });
|
|
16154
|
+
var BatchKachel = ({ port, batch }) => {
|
|
16155
|
+
const { quellen, fehler: fehler4 } = useBildQuellen(port, batch.images);
|
|
16156
|
+
const aufloesbar = Boolean(port.imageLibrary);
|
|
16157
|
+
const bilder = batch.images.map((bild) => ({
|
|
16158
|
+
id: bild.media_ref,
|
|
16159
|
+
quelle: quellen.get(bild.media_ref) ?? null,
|
|
16160
|
+
titel: `Bild ${bild.position + 1}`,
|
|
16161
|
+
...fehler4.get(bild.media_ref) ? { leerText: "Nicht ladbar" } : {},
|
|
16162
|
+
details: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16163
|
+
BildDetails,
|
|
15816
16164
|
{
|
|
15817
|
-
|
|
15818
|
-
|
|
16165
|
+
bild,
|
|
16166
|
+
fehler: fehler4.get(bild.media_ref) ?? null,
|
|
16167
|
+
aufloesbar
|
|
15819
16168
|
}
|
|
15820
|
-
)
|
|
15821
|
-
|
|
15822
|
-
|
|
15823
|
-
|
|
15824
|
-
|
|
15825
|
-
|
|
15826
|
-
|
|
15827
|
-
|
|
15828
|
-
|
|
15829
|
-
|
|
15830
|
-
|
|
15831
|
-
|
|
15832
|
-
|
|
15833
|
-
|
|
15834
|
-
|
|
15835
|
-
|
|
15836
|
-
|
|
15837
|
-
bild.width,
|
|
15838
|
-
"\xD7",
|
|
15839
|
-
bild.height
|
|
15840
|
-
] }) : null
|
|
15841
|
-
] });
|
|
15842
|
-
};
|
|
15843
|
-
var BatchKachel = ({ port, batch }) => /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
|
|
15844
|
-
"div",
|
|
15845
|
-
{
|
|
15846
|
-
className: "szenen-bilder__batch",
|
|
15847
|
-
"data-testid": `batch-${batch.item_id}`,
|
|
15848
|
-
"data-source-kind": batch.source_kind,
|
|
15849
|
-
children: [
|
|
15850
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("p", { className: "szenen-bilder__ids", children: [
|
|
15851
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("strong", { children: batch.title }),
|
|
15852
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { children: batch.source_kind === "generated_in_app" ? "in der App erzeugt" : "extern importiert" }),
|
|
15853
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { children: [
|
|
15854
|
-
"Item ",
|
|
15855
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("code", { "data-testid": `batch-item-${batch.item_id}`, children: batch.item_id })
|
|
16169
|
+
)
|
|
16170
|
+
}));
|
|
16171
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
16172
|
+
"section",
|
|
16173
|
+
{
|
|
16174
|
+
className: "szenen-bilder__batch",
|
|
16175
|
+
"data-testid": `batch-${batch.item_id}`,
|
|
16176
|
+
"data-source-kind": batch.source_kind,
|
|
16177
|
+
children: [
|
|
16178
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("header", { className: "szenen-bilder__batchkopf", children: [
|
|
16179
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("strong", { children: batch.title }),
|
|
16180
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { className: "szenen-bilder__herkunft", children: [
|
|
16181
|
+
batch.source_kind === "generated_in_app" ? "in der App erzeugt" : "extern importiert",
|
|
16182
|
+
" \xB7 ",
|
|
16183
|
+
batch.images.length,
|
|
16184
|
+
" Bild(er)"
|
|
16185
|
+
] })
|
|
15856
16186
|
] }),
|
|
15857
|
-
/* @__PURE__ */ (0,
|
|
15858
|
-
|
|
15859
|
-
|
|
16187
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16188
|
+
BildGalerie,
|
|
16189
|
+
{
|
|
16190
|
+
bilder,
|
|
16191
|
+
testId: `batchgalerie-${batch.item_id}`,
|
|
16192
|
+
satzTitel: batch.title
|
|
16193
|
+
}
|
|
16194
|
+
),
|
|
16195
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("details", { className: "szenen-bilder__technik", "data-testid": `batch-technik-${batch.item_id}`, children: [
|
|
16196
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("summary", { children: "Technische Details" }),
|
|
16197
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { className: "szenen-bilder__ids", children: [
|
|
16198
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { children: [
|
|
16199
|
+
"Item ",
|
|
16200
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { "data-testid": `batch-item-${batch.item_id}`, children: batch.item_id })
|
|
16201
|
+
] }),
|
|
16202
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { children: [
|
|
16203
|
+
"Batches ",
|
|
16204
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: batch.generation_batch_ids.join(", ") })
|
|
16205
|
+
] })
|
|
16206
|
+
] }),
|
|
16207
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("ul", { className: "szenen-bilder__batchliste", children: batch.images.map((bild) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16208
|
+
BildDetails,
|
|
16209
|
+
{
|
|
16210
|
+
bild,
|
|
16211
|
+
fehler: fehler4.get(bild.media_ref) ?? null,
|
|
16212
|
+
aufloesbar
|
|
16213
|
+
}
|
|
16214
|
+
) }, bild.media_ref)) })
|
|
15860
16215
|
] })
|
|
15861
|
-
]
|
|
15862
|
-
|
|
15863
|
-
|
|
15864
|
-
|
|
15865
|
-
);
|
|
16216
|
+
]
|
|
16217
|
+
}
|
|
16218
|
+
);
|
|
16219
|
+
};
|
|
15866
16220
|
var ProfilBefunde = ({ wahl, runId }) => {
|
|
15867
16221
|
if (wahl.invalid_profiles.length === 0) return null;
|
|
15868
|
-
return /* @__PURE__ */ (0,
|
|
16222
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { "data-testid": `erzeugen-profilbefunde-${runId}`, role: "alert", children: [
|
|
15869
16223
|
"Nicht angeboten, weil das Profil unvollst\xE4ndig ist:",
|
|
15870
16224
|
" ",
|
|
15871
16225
|
wahl.invalid_profiles.join(" \xB7 ")
|
|
15872
16226
|
] });
|
|
15873
16227
|
};
|
|
15874
16228
|
var ErzeugenAktion = ({ port, lauf, wahl, wahlFehler, onFertig }) => {
|
|
15875
|
-
const [modellWahl, setModellWahl] = (0,
|
|
15876
|
-
const [anzahlText, setAnzahlText] = (0,
|
|
15877
|
-
const [seitenverhaeltnis, setSeitenverhaeltnis] = (0,
|
|
15878
|
-
const [laeuft, setLaeuft] = (0,
|
|
15879
|
-
const [notiz, setNotiz] = (0,
|
|
16229
|
+
const [modellWahl, setModellWahl] = (0, import_react8.useState)(null);
|
|
16230
|
+
const [anzahlText, setAnzahlText] = (0, import_react8.useState)("1");
|
|
16231
|
+
const [seitenverhaeltnis, setSeitenverhaeltnis] = (0, import_react8.useState)("");
|
|
16232
|
+
const [laeuft, setLaeuft] = (0, import_react8.useState)(false);
|
|
16233
|
+
const [notiz, setNotiz] = (0, import_react8.useState)(null);
|
|
15880
16234
|
if (!port.imageGeneration) {
|
|
15881
|
-
return /* @__PURE__ */ (0,
|
|
16235
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { "data-testid": `erzeugen-unsupported-${lauf.run_id}`, children: "Dieser Host erzeugt keine Bilder \u2014 entweder fehlt der Providerzugang oder der gesicherte Speicherweg. Externe Bilder lassen sich trotzdem zuordnen." });
|
|
15882
16236
|
}
|
|
15883
16237
|
if (wahlFehler) {
|
|
15884
|
-
return /* @__PURE__ */ (0,
|
|
16238
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { "data-testid": `erzeugen-fehler-${lauf.run_id}`, role: "alert", children: [
|
|
15885
16239
|
"Die F\xE4higkeitsauskunft schlug fehl: ",
|
|
15886
16240
|
wahlFehler
|
|
15887
16241
|
] });
|
|
15888
16242
|
}
|
|
15889
|
-
if (!wahl) return /* @__PURE__ */ (0,
|
|
16243
|
+
if (!wahl) return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { children: "Bildf\xE4higkeit wird gepr\xFCft \u2026" });
|
|
15890
16244
|
if (wahl.models.length === 0) {
|
|
15891
16245
|
return (
|
|
15892
16246
|
// Kein Fehler und kein Grund, den Lauf zu sperren: Der externe
|
|
15893
16247
|
// Importweg bleibt daneben stehen (D-104.5).
|
|
15894
|
-
/* @__PURE__ */ (0,
|
|
15895
|
-
/* @__PURE__ */ (0,
|
|
16248
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
|
|
16249
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { "data-testid": `erzeugen-unsupported-modell-${lauf.run_id}`, children: [
|
|
15896
16250
|
"Hier kann derzeit kein Bild erzeugt werden:",
|
|
15897
16251
|
" ",
|
|
15898
16252
|
wahl.reason ?? "Kein sichtbares Zielmodell tr\xE4gt ein ausf\xFChrbares Profil."
|
|
15899
16253
|
] }),
|
|
15900
|
-
/* @__PURE__ */ (0,
|
|
16254
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ProfilBefunde, { wahl, runId: lauf.run_id })
|
|
15901
16255
|
] })
|
|
15902
16256
|
);
|
|
15903
16257
|
}
|
|
@@ -15946,22 +16300,21 @@ var ErzeugenAktion = ({ port, lauf, wahl, wahlFehler, onFertig }) => {
|
|
|
15946
16300
|
onFertig();
|
|
15947
16301
|
};
|
|
15948
16302
|
const negativVorhanden = Boolean(lauf.output?.negative && lauf.output.negative.trim());
|
|
15949
|
-
return /* @__PURE__ */ (0,
|
|
15950
|
-
/* @__PURE__ */ (0,
|
|
15951
|
-
/* @__PURE__ */ (0,
|
|
15952
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { "data-testid": `erzeugen-zielmodell-${lauf.run_id}`, children: wahl.prompt_target_model_key ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
|
|
16303
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "szenen-bilder__aktion-inhalt", "data-testid": `erzeugen-${lauf.run_id}`, children: [
|
|
16304
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ProfilBefunde, { wahl, runId: lauf.run_id }),
|
|
16305
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { "data-testid": `erzeugen-zielmodell-${lauf.run_id}`, children: wahl.prompt_target_model_key ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
|
|
15953
16306
|
"Prompt optimiert f\xFCr ",
|
|
15954
|
-
/* @__PURE__ */ (0,
|
|
16307
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: wahl.prompt_target_model_key })
|
|
15955
16308
|
] }) : "Dieser Lauf tr\xE4gt keine Optimierungsabsicht (kein target_model)." }),
|
|
15956
|
-
/* @__PURE__ */ (0,
|
|
16309
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { children: [
|
|
15957
16310
|
"Bildmodell",
|
|
15958
|
-
/* @__PURE__ */ (0,
|
|
16311
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
15959
16312
|
"select",
|
|
15960
16313
|
{
|
|
15961
16314
|
value: aktiv.selection_id,
|
|
15962
16315
|
"data-testid": `erzeugen-modellwahl-${lauf.run_id}`,
|
|
15963
16316
|
onChange: (e) => modellWechseln(e.target.value),
|
|
15964
|
-
children: wahl.models.map((m) => /* @__PURE__ */ (0,
|
|
16317
|
+
children: wahl.models.map((m) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("option", { value: m.selection_id, children: [
|
|
15965
16318
|
m.display_name,
|
|
15966
16319
|
" (",
|
|
15967
16320
|
m.provider,
|
|
@@ -15971,7 +16324,7 @@ var ErzeugenAktion = ({ port, lauf, wahl, wahlFehler, onFertig }) => {
|
|
|
15971
16324
|
}
|
|
15972
16325
|
)
|
|
15973
16326
|
] }),
|
|
15974
|
-
/* @__PURE__ */ (0,
|
|
16327
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { "data-testid": `erzeugen-modell-${lauf.run_id}`, children: [
|
|
15975
16328
|
aktiv.display_name,
|
|
15976
16329
|
" bei ",
|
|
15977
16330
|
aktiv.provider,
|
|
@@ -15980,26 +16333,26 @@ var ErzeugenAktion = ({ port, lauf, wahl, wahlFehler, onFertig }) => {
|
|
|
15980
16333
|
aktiv.max_images,
|
|
15981
16334
|
" Bilder je Auftrag"
|
|
15982
16335
|
] }),
|
|
15983
|
-
wahl.prompt_target_model_key && !aktiv.is_prompt_target && /* @__PURE__ */ (0,
|
|
16336
|
+
wahl.prompt_target_model_key && !aktiv.is_prompt_target && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { "data-testid": `erzeugen-abweichung-${lauf.run_id}`, children: [
|
|
15984
16337
|
"Hinweis: Prompt optimiert f\xFCr ",
|
|
15985
|
-
/* @__PURE__ */ (0,
|
|
16338
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: wahl.prompt_target_model_key }),
|
|
15986
16339
|
", Bilder werden mit ",
|
|
15987
|
-
/* @__PURE__ */ (0,
|
|
16340
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: aktiv.display_name }),
|
|
15988
16341
|
" erzeugt. Das ist zul\xE4ssig \u2014 ein abweichendes Ergebnis liegt dann nicht zwingend am Prompt."
|
|
15989
16342
|
] }),
|
|
15990
16343
|
negativVorhanden && !aktiv.accepts_negative_prompt && // Nicht still verlieren: Der eingefrorene Lauf trägt einen
|
|
15991
16344
|
// negativen Prompt, den dieser Modellweg nicht führt. Wer das
|
|
15992
16345
|
// weiß, kann ihn in den positiven Prompt einarbeiten — wer es
|
|
15993
16346
|
// nicht weiß, wundert sich über das Bild.
|
|
15994
|
-
/* @__PURE__ */ (0,
|
|
16347
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { "data-testid": `erzeugen-negativ-hinweis-${lauf.run_id}`, children: [
|
|
15995
16348
|
"Achtung: Dieser Lauf tr\xE4gt einen negativen Prompt.",
|
|
15996
16349
|
" ",
|
|
15997
16350
|
aktiv.display_name,
|
|
15998
16351
|
" f\xFChrt diesen Promptkanal nicht \u2014 der negative Prompt l\xE4uft nicht mit."
|
|
15999
16352
|
] }),
|
|
16000
|
-
/* @__PURE__ */ (0,
|
|
16353
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { children: [
|
|
16001
16354
|
"Anzahl",
|
|
16002
|
-
/* @__PURE__ */ (0,
|
|
16355
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16003
16356
|
"input",
|
|
16004
16357
|
{
|
|
16005
16358
|
type: "number",
|
|
@@ -16011,27 +16364,27 @@ var ErzeugenAktion = ({ port, lauf, wahl, wahlFehler, onFertig }) => {
|
|
|
16011
16364
|
}
|
|
16012
16365
|
)
|
|
16013
16366
|
] }),
|
|
16014
|
-
/* @__PURE__ */ (0,
|
|
16367
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { children: [
|
|
16015
16368
|
"Seitenverh\xE4ltnis",
|
|
16016
|
-
/* @__PURE__ */ (0,
|
|
16369
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
16017
16370
|
"select",
|
|
16018
16371
|
{
|
|
16019
16372
|
value: seitenverhaeltnis,
|
|
16020
16373
|
"data-testid": `erzeugen-format-${lauf.run_id}`,
|
|
16021
16374
|
onChange: (e) => setSeitenverhaeltnis(e.target.value),
|
|
16022
16375
|
children: [
|
|
16023
|
-
/* @__PURE__ */ (0,
|
|
16024
|
-
aktiv.aspect_ratios.map((v) => /* @__PURE__ */ (0,
|
|
16376
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: "", children: "(Vorgabe des Modells)" }),
|
|
16377
|
+
aktiv.aspect_ratios.map((v) => /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("option", { value: v, children: v }, v))
|
|
16025
16378
|
]
|
|
16026
16379
|
}
|
|
16027
16380
|
)
|
|
16028
16381
|
] }),
|
|
16029
|
-
!aktiv.accepts_seed && /* @__PURE__ */ (0,
|
|
16382
|
+
!aktiv.accepts_seed && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { "data-testid": `erzeugen-ohne-seed-${lauf.run_id}`, children: [
|
|
16030
16383
|
aktiv.display_name,
|
|
16031
16384
|
" kennt keinen Seed \u2014 er wird deshalb weder angeboten noch protokolliert."
|
|
16032
16385
|
] }),
|
|
16033
|
-
parameterBefunde.length > 0 && /* @__PURE__ */ (0,
|
|
16034
|
-
/* @__PURE__ */ (0,
|
|
16386
|
+
parameterBefunde.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { "data-testid": `erzeugen-parameterbefund-${lauf.run_id}`, role: "alert", children: parameterBefunde.join(" ") }),
|
|
16387
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16035
16388
|
"button",
|
|
16036
16389
|
{
|
|
16037
16390
|
type: "button",
|
|
@@ -16041,7 +16394,7 @@ var ErzeugenAktion = ({ port, lauf, wahl, wahlFehler, onFertig }) => {
|
|
|
16041
16394
|
children: laeuft ? "Bilder werden erzeugt \u2026" : "Bilder erzeugen"
|
|
16042
16395
|
}
|
|
16043
16396
|
),
|
|
16044
|
-
notiz && /* @__PURE__ */ (0,
|
|
16397
|
+
notiz && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16045
16398
|
"p",
|
|
16046
16399
|
{
|
|
16047
16400
|
"data-testid": `erzeugen-notiz-${lauf.run_id}`,
|
|
@@ -16053,14 +16406,14 @@ var ErzeugenAktion = ({ port, lauf, wahl, wahlFehler, onFertig }) => {
|
|
|
16053
16406
|
] });
|
|
16054
16407
|
};
|
|
16055
16408
|
var ZuordnenAktion = ({ port, lauf, onFertig }) => {
|
|
16056
|
-
const [dateien, setDateien] = (0,
|
|
16057
|
-
const [seeds, setSeeds] = (0,
|
|
16058
|
-
const [modell, setModell] = (0,
|
|
16059
|
-
const [itemId, setItemId] = (0,
|
|
16060
|
-
const [laeuft, setLaeuft] = (0,
|
|
16061
|
-
const [notiz, setNotiz] = (0,
|
|
16409
|
+
const [dateien, setDateien] = (0, import_react8.useState)([]);
|
|
16410
|
+
const [seeds, setSeeds] = (0, import_react8.useState)({});
|
|
16411
|
+
const [modell, setModell] = (0, import_react8.useState)("");
|
|
16412
|
+
const [itemId, setItemId] = (0, import_react8.useState)("");
|
|
16413
|
+
const [laeuft, setLaeuft] = (0, import_react8.useState)(false);
|
|
16414
|
+
const [notiz, setNotiz] = (0, import_react8.useState)(null);
|
|
16062
16415
|
if (!port.imageBatchWrite) {
|
|
16063
|
-
return /* @__PURE__ */ (0,
|
|
16416
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { "data-testid": `zuordnen-unsupported-${lauf.run_id}`, children: "Dieser Host ordnet keine externen Bilder zu \u2014 er hat keinen gesicherten Batch-Schreibweg. Die Historie oben bleibt trotzdem sichtbar." });
|
|
16064
16417
|
}
|
|
16065
16418
|
const importieren = async () => {
|
|
16066
16419
|
setLaeuft(true);
|
|
@@ -16115,11 +16468,10 @@ var ZuordnenAktion = ({ port, lauf, onFertig }) => {
|
|
|
16115
16468
|
setLaeuft(false);
|
|
16116
16469
|
onFertig();
|
|
16117
16470
|
};
|
|
16118
|
-
return /* @__PURE__ */ (0,
|
|
16119
|
-
/* @__PURE__ */ (0,
|
|
16120
|
-
/* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("label", { children: [
|
|
16471
|
+
return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "szenen-bilder__aktion-inhalt", "data-testid": `zuordnen-${lauf.run_id}`, children: [
|
|
16472
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { children: [
|
|
16121
16473
|
"Bilddateien",
|
|
16122
|
-
/* @__PURE__ */ (0,
|
|
16474
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16123
16475
|
"input",
|
|
16124
16476
|
{
|
|
16125
16477
|
type: "file",
|
|
@@ -16133,10 +16485,10 @@ var ZuordnenAktion = ({ port, lauf, onFertig }) => {
|
|
|
16133
16485
|
}
|
|
16134
16486
|
)
|
|
16135
16487
|
] }),
|
|
16136
|
-
dateien.length > 0 && /* @__PURE__ */ (0,
|
|
16137
|
-
/* @__PURE__ */ (0,
|
|
16488
|
+
dateien.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
|
|
16489
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { children: [
|
|
16138
16490
|
"Modell (f\xFCr alle Bilder, leer = unbekannt)",
|
|
16139
|
-
/* @__PURE__ */ (0,
|
|
16491
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16140
16492
|
"input",
|
|
16141
16493
|
{
|
|
16142
16494
|
value: modell,
|
|
@@ -16145,16 +16497,16 @@ var ZuordnenAktion = ({ port, lauf, onFertig }) => {
|
|
|
16145
16497
|
}
|
|
16146
16498
|
)
|
|
16147
16499
|
] }),
|
|
16148
|
-
/* @__PURE__ */ (0,
|
|
16149
|
-
/* @__PURE__ */ (0,
|
|
16500
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("ol", { "data-testid": `zuordnen-vorschau-${lauf.run_id}`, children: dateien.map((datei, index) => /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("li", { children: [
|
|
16501
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { children: [
|
|
16150
16502
|
"Position ",
|
|
16151
16503
|
index,
|
|
16152
16504
|
": ",
|
|
16153
16505
|
datei.name
|
|
16154
16506
|
] }),
|
|
16155
|
-
/* @__PURE__ */ (0,
|
|
16507
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { children: [
|
|
16156
16508
|
"Seed (leer = unbekannt)",
|
|
16157
|
-
/* @__PURE__ */ (0,
|
|
16509
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16158
16510
|
"input",
|
|
16159
16511
|
{
|
|
16160
16512
|
"data-testid": `zuordnen-seed-${lauf.run_id}-${index}`,
|
|
@@ -16164,7 +16516,7 @@ var ZuordnenAktion = ({ port, lauf, onFertig }) => {
|
|
|
16164
16516
|
)
|
|
16165
16517
|
] })
|
|
16166
16518
|
] }, `${datei.name}-${index}`)) }),
|
|
16167
|
-
/* @__PURE__ */ (0,
|
|
16519
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
|
|
16168
16520
|
"button",
|
|
16169
16521
|
{
|
|
16170
16522
|
type: "button",
|
|
@@ -16178,9 +16530,9 @@ var ZuordnenAktion = ({ port, lauf, onFertig }) => {
|
|
|
16178
16530
|
}
|
|
16179
16531
|
)
|
|
16180
16532
|
] }),
|
|
16181
|
-
/* @__PURE__ */ (0,
|
|
16533
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("label", { children: [
|
|
16182
16534
|
"Oder ein bestehendes Library-Item",
|
|
16183
|
-
/* @__PURE__ */ (0,
|
|
16535
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16184
16536
|
"input",
|
|
16185
16537
|
{
|
|
16186
16538
|
value: itemId,
|
|
@@ -16190,7 +16542,7 @@ var ZuordnenAktion = ({ port, lauf, onFertig }) => {
|
|
|
16190
16542
|
}
|
|
16191
16543
|
)
|
|
16192
16544
|
] }),
|
|
16193
|
-
/* @__PURE__ */ (0,
|
|
16545
|
+
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16194
16546
|
"button",
|
|
16195
16547
|
{
|
|
16196
16548
|
type: "button",
|
|
@@ -16200,7 +16552,7 @@ var ZuordnenAktion = ({ port, lauf, onFertig }) => {
|
|
|
16200
16552
|
children: "Bestehendes Item zuordnen"
|
|
16201
16553
|
}
|
|
16202
16554
|
),
|
|
16203
|
-
notiz && /* @__PURE__ */ (0,
|
|
16555
|
+
notiz && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
|
|
16204
16556
|
"p",
|
|
16205
16557
|
{
|
|
16206
16558
|
"data-testid": `zuordnen-notiz-${lauf.run_id}`,
|
|
@@ -16225,12 +16577,12 @@ function readAsBase64(datei) {
|
|
|
16225
16577
|
}
|
|
16226
16578
|
|
|
16227
16579
|
// src/features/szenen/areas/RunsPanel.tsx
|
|
16228
|
-
var
|
|
16580
|
+
var import_jsx_runtime9 = require("react/jsx-runtime");
|
|
16229
16581
|
var RunsPanel = ({ port, source, contextId }) => {
|
|
16230
|
-
const [anweisung, setAnweisung] = (0,
|
|
16231
|
-
const [laeuft, setLaeuft] = (0,
|
|
16232
|
-
const [notiz, setNotiz] = (0,
|
|
16233
|
-
const [nachladen, setNachladen] = (0,
|
|
16582
|
+
const [anweisung, setAnweisung] = (0, import_react9.useState)("");
|
|
16583
|
+
const [laeuft, setLaeuft] = (0, import_react9.useState)(false);
|
|
16584
|
+
const [notiz, setNotiz] = (0, import_react9.useState)(null);
|
|
16585
|
+
const [nachladen, setNachladen] = (0, import_react9.useState)(0);
|
|
16234
16586
|
const faehig = capabilitiesOf(port);
|
|
16235
16587
|
const quellSchluessel = source.kind === "published" ? source.shotVersionId : source.kind === "draft_chain" ? source.chainId : source.sceneElementId;
|
|
16236
16588
|
const [phase, neuLaden] = usePortQuery(
|
|
@@ -16255,12 +16607,15 @@ var RunsPanel = ({ port, source, contextId }) => {
|
|
|
16255
16607
|
neuLaden();
|
|
16256
16608
|
};
|
|
16257
16609
|
const laeufe = phase.status === "ready" ? phase.value : [];
|
|
16258
|
-
|
|
16259
|
-
|
|
16260
|
-
|
|
16261
|
-
|
|
16610
|
+
const [gewaehlteRunde, setGewaehlteRunde] = (0, import_react9.useState)(void 0);
|
|
16611
|
+
const neueste = laeufe.length > 0 ? laeufe[laeufe.length - 1].run_id : null;
|
|
16612
|
+
const offeneRunde = gewaehlteRunde === void 0 ? neueste : gewaehlteRunde;
|
|
16613
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "szenen-runs", "data-testid": "laeufe-bereich", "data-shot-version": quellSchluessel, children: [
|
|
16614
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h4", { children: "Prompt-L\xE4ufe" }),
|
|
16615
|
+
source.kind === "published" && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "szenen-runs__start", children: [
|
|
16616
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("label", { children: [
|
|
16262
16617
|
"Anweisung (optional)",
|
|
16263
|
-
/* @__PURE__ */ (0,
|
|
16618
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
16264
16619
|
"input",
|
|
16265
16620
|
{
|
|
16266
16621
|
"data-testid": "lauf-anweisung",
|
|
@@ -16269,21 +16624,25 @@ var RunsPanel = ({ port, source, contextId }) => {
|
|
|
16269
16624
|
}
|
|
16270
16625
|
)
|
|
16271
16626
|
] }),
|
|
16272
|
-
/* @__PURE__ */ (0,
|
|
16627
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("button", { type: "button", "data-testid": "lauf-starten", disabled: laeuft, onClick: starten, children: "Prompt-Lauf starten" })
|
|
16273
16628
|
] }),
|
|
16274
|
-
notiz && /* @__PURE__ */ (0,
|
|
16275
|
-
phase.status === "loading" && /* @__PURE__ */ (0,
|
|
16276
|
-
phase.status === "error" && /* @__PURE__ */ (0,
|
|
16629
|
+
notiz && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { "data-testid": "lauf-notiz", "data-tone": notiz.tone, role: notiz.tone === "error" ? "alert" : "status", children: notiz.text }),
|
|
16630
|
+
phase.status === "loading" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { "data-testid": "laeufe-laden", children: "L\xE4ufe werden geladen \u2026" }),
|
|
16631
|
+
phase.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("p", { "data-testid": "laeufe-fehler", role: "alert", children: [
|
|
16277
16632
|
"L\xE4ufe konnten nicht geladen werden: ",
|
|
16278
16633
|
phase.message
|
|
16279
16634
|
] }),
|
|
16280
|
-
phase.status === "ready" && laeufe.length === 0 && /* @__PURE__ */ (0,
|
|
16281
|
-
/* @__PURE__ */ (0,
|
|
16635
|
+
phase.status === "ready" && laeufe.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { "data-testid": "keine-laeufe", children: source.kind === "published" ? "F\xFCr diese Shot-Version gibt es noch keinen Lauf." : source.kind === "draft_chain" ? "F\xFCr diese Draft-Kette gibt es noch keinen Lauf." : "F\xFCr diese Szene gibt es noch keinen direkten Lauf." }),
|
|
16636
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("ol", { "data-testid": "runden-liste", children: laeufe.map((lauf) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
16282
16637
|
RundenEintrag,
|
|
16283
16638
|
{
|
|
16284
16639
|
port,
|
|
16285
16640
|
lauf,
|
|
16286
16641
|
runde: roundOfRun(lauf, laeufe),
|
|
16642
|
+
offen: lauf.run_id === offeneRunde,
|
|
16643
|
+
onUmschalten: () => setGewaehlteRunde(
|
|
16644
|
+
lauf.run_id === offeneRunde ? null : lauf.run_id
|
|
16645
|
+
),
|
|
16287
16646
|
itemMoeglich: faehig.saveRunAsItem,
|
|
16288
16647
|
onItemGespeichert: () => setNachladen((n) => n + 1)
|
|
16289
16648
|
},
|
|
@@ -16291,13 +16650,43 @@ var RunsPanel = ({ port, source, contextId }) => {
|
|
|
16291
16650
|
)) })
|
|
16292
16651
|
] });
|
|
16293
16652
|
};
|
|
16294
|
-
var
|
|
16295
|
-
|
|
16296
|
-
const
|
|
16297
|
-
|
|
16653
|
+
var AUSZUG = 90;
|
|
16654
|
+
function auszug(text, laenge = AUSZUG) {
|
|
16655
|
+
const sauber = text.replace(/\s+/g, " ").trim();
|
|
16656
|
+
if (sauber.length <= laenge) return sauber;
|
|
16657
|
+
const schnitt = sauber.lastIndexOf(" ", laenge);
|
|
16658
|
+
return `${sauber.slice(0, schnitt > laenge / 2 ? schnitt : laenge)} \u2026`;
|
|
16659
|
+
}
|
|
16660
|
+
var STATUS_TEXT = {
|
|
16661
|
+
succeeded: "erfolgreich",
|
|
16662
|
+
failed: "fehlgeschlagen"
|
|
16663
|
+
};
|
|
16664
|
+
var LANGER_TEXT = 240;
|
|
16665
|
+
var Sekundaertext = ({ titel, text, testId }) => {
|
|
16666
|
+
const [ganz, setGanz] = (0, import_react9.useState)(false);
|
|
16667
|
+
const lang = text.length > LANGER_TEXT;
|
|
16668
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("section", { className: "szenen-runs__sekundaer", children: [
|
|
16669
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h5", { children: titel }),
|
|
16670
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { "data-testid": testId, children: lang && !ganz ? auszug(text, LANGER_TEXT) : text }),
|
|
16671
|
+
lang && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
16672
|
+
"button",
|
|
16673
|
+
{
|
|
16674
|
+
type: "button",
|
|
16675
|
+
className: "szenen-runs__mehr",
|
|
16676
|
+
onClick: () => setGanz(!ganz),
|
|
16677
|
+
"data-testid": `${testId}-mehr`,
|
|
16678
|
+
children: ganz ? "weniger anzeigen" : "vollst\xE4ndig anzeigen"
|
|
16679
|
+
}
|
|
16680
|
+
)
|
|
16681
|
+
] });
|
|
16682
|
+
};
|
|
16683
|
+
var RundenEintrag = ({ port, lauf, runde, offen, onUmschalten, itemMoeglich, onItemGespeichert }) => {
|
|
16684
|
+
const [notiz, setNotiz] = (0, import_react9.useState)(null);
|
|
16685
|
+
const [laeuft, setLaeuft] = (0, import_react9.useState)(false);
|
|
16686
|
+
const [nachladen, setNachladen] = (0, import_react9.useState)(0);
|
|
16298
16687
|
const [itemPhase] = usePortQuery(
|
|
16299
|
-
() => port.items ? port.items.getItemForRun(lauf.run_id) : Promise.resolve({ kind: "ok", value: null }),
|
|
16300
|
-
[port, lauf.run_id, nachladen]
|
|
16688
|
+
() => offen && port.items ? port.items.getItemForRun(lauf.run_id) : Promise.resolve({ kind: "ok", value: null }),
|
|
16689
|
+
[port, lauf.run_id, nachladen, offen]
|
|
16301
16690
|
);
|
|
16302
16691
|
const item = itemPhase.status === "ready" ? itemPhase.value : null;
|
|
16303
16692
|
const speichern = async () => {
|
|
@@ -16311,75 +16700,121 @@ var RundenEintrag = ({ port, lauf, runde, itemMoeglich, onItemGespeichert }) =>
|
|
|
16311
16700
|
setNachladen((n) => n + 1);
|
|
16312
16701
|
onItemGespeichert();
|
|
16313
16702
|
};
|
|
16314
|
-
|
|
16315
|
-
|
|
16316
|
-
|
|
16317
|
-
|
|
16318
|
-
|
|
16703
|
+
const zusammenfassung = lauf.status === "succeeded" && lauf.output ? auszug(lauf.output.positive) : null;
|
|
16704
|
+
return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("li", { "data-testid": `runde-${lauf.run_id}`, "data-runde": runde, "data-status": lauf.status, children: [
|
|
16705
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
|
|
16706
|
+
"button",
|
|
16707
|
+
{
|
|
16708
|
+
type: "button",
|
|
16709
|
+
className: "szenen-runs__kopf",
|
|
16710
|
+
onClick: onUmschalten,
|
|
16711
|
+
"aria-expanded": offen,
|
|
16712
|
+
"data-testid": `runde-umschalten-${lauf.run_id}`,
|
|
16713
|
+
children: [
|
|
16714
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { className: "szenen-runs__marke", children: [
|
|
16715
|
+
"Runde ",
|
|
16716
|
+
runde
|
|
16717
|
+
] }),
|
|
16718
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
16719
|
+
"span",
|
|
16720
|
+
{
|
|
16721
|
+
className: "szenen-runs__status",
|
|
16722
|
+
"data-status": lauf.status,
|
|
16723
|
+
"data-testid": `status-${lauf.run_id}`,
|
|
16724
|
+
children: STATUS_TEXT[lauf.status]
|
|
16725
|
+
}
|
|
16726
|
+
),
|
|
16727
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { className: "szenen-runs__modell", "data-testid": `provider-${lauf.run_id}`, children: [
|
|
16728
|
+
lauf.provider,
|
|
16729
|
+
" \xB7 ",
|
|
16730
|
+
lauf.model_id
|
|
16731
|
+
] }),
|
|
16732
|
+
zusammenfassung && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
16733
|
+
"span",
|
|
16734
|
+
{
|
|
16735
|
+
className: "szenen-runs__auszug",
|
|
16736
|
+
"data-testid": `auszug-${lauf.run_id}`,
|
|
16737
|
+
children: zusammenfassung
|
|
16738
|
+
}
|
|
16739
|
+
)
|
|
16740
|
+
]
|
|
16741
|
+
}
|
|
16742
|
+
),
|
|
16743
|
+
lauf.status === "failed" && lauf.failure && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "szenen-runs__fehler", "data-testid": `fehler-${lauf.run_id}`, role: "alert", children: [
|
|
16744
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("strong", { children: [
|
|
16745
|
+
"Fehlgeschlagen \u2014 ",
|
|
16746
|
+
lauf.failure.class
|
|
16319
16747
|
] }),
|
|
16320
|
-
/* @__PURE__ */ (0,
|
|
16321
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { "data-testid": `status-${lauf.run_id}`, children: lauf.status }),
|
|
16322
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("span", { "data-testid": `provider-${lauf.run_id}`, children: [
|
|
16323
|
-
lauf.provider,
|
|
16324
|
-
" \xB7 ",
|
|
16325
|
-
lauf.model_id
|
|
16326
|
-
] })
|
|
16748
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { children: lauf.failure.message })
|
|
16327
16749
|
] }),
|
|
16328
|
-
|
|
16329
|
-
/* @__PURE__ */ (0,
|
|
16330
|
-
/* @__PURE__ */ (0,
|
|
16331
|
-
|
|
16332
|
-
|
|
16333
|
-
|
|
16334
|
-
/* @__PURE__ */ (0,
|
|
16335
|
-
|
|
16750
|
+
offen && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "szenen-runs__inhalt", "data-testid": `runde-inhalt-${lauf.run_id}`, children: [
|
|
16751
|
+
lauf.status === "succeeded" && lauf.output && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { "data-testid": `ausgabe-${lauf.run_id}`, children: [
|
|
16752
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("section", { className: "szenen-runs__prompt", children: [
|
|
16753
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h5", { children: "Positiver Prompt" }),
|
|
16754
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { "data-testid": `positiv-${lauf.run_id}`, children: lauf.output.positive })
|
|
16755
|
+
] }),
|
|
16756
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("section", { className: "szenen-runs__prompt szenen-runs__prompt--negativ", children: [
|
|
16757
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h5", { children: "Negativer Prompt" }),
|
|
16758
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { "data-testid": `negativ-${lauf.run_id}`, children: lauf.output.negative ?? "(keiner)" })
|
|
16759
|
+
] }),
|
|
16760
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
|
|
16761
|
+
Sekundaertext,
|
|
16762
|
+
{
|
|
16763
|
+
titel: "Erl\xE4uterung",
|
|
16764
|
+
text: lauf.output.feedback,
|
|
16765
|
+
testId: `feedback-${lauf.run_id}`
|
|
16766
|
+
}
|
|
16767
|
+
),
|
|
16768
|
+
lauf.output.visibility.assumptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("section", { className: "szenen-runs__sekundaer", children: [
|
|
16769
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("h5", { children: "Annahmen" }),
|
|
16770
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("ul", { "data-testid": `annahmen-${lauf.run_id}`, children: lauf.output.visibility.assumptions.map((a, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("li", { children: a }, i)) })
|
|
16771
|
+
] }),
|
|
16772
|
+
lauf.output.notes.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("ul", { className: "szenen-runs__notizen", "data-testid": `notizen-${lauf.run_id}`, children: lauf.output.notes.map((n, i) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("li", { children: n }, i)) })
|
|
16336
16773
|
] }),
|
|
16337
|
-
/* @__PURE__ */ (0,
|
|
16338
|
-
/* @__PURE__ */ (0,
|
|
16339
|
-
/* @__PURE__ */ (0,
|
|
16774
|
+
lauf.raw_output && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("details", { "data-testid": `diagnose-${lauf.run_id}`, children: [
|
|
16775
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("summary", { children: "Rohantwort (Diagnose)" }),
|
|
16776
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("pre", { children: lauf.raw_output })
|
|
16340
16777
|
] }),
|
|
16341
|
-
|
|
16342
|
-
/* @__PURE__ */ (0,
|
|
16343
|
-
/* @__PURE__ */ (0,
|
|
16778
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("details", { className: "szenen-runs__technisch", "data-testid": `technisch-${lauf.run_id}`, children: [
|
|
16779
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("summary", { children: "Technische Informationen" }),
|
|
16780
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("p", { children: [
|
|
16781
|
+
"Lauf-ID: ",
|
|
16782
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("code", { "data-testid": `run-id-${lauf.run_id}`, children: lauf.run_id })
|
|
16783
|
+
] }),
|
|
16784
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("p", { children: [
|
|
16785
|
+
"Modell: ",
|
|
16786
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("code", { children: lauf.model_id }),
|
|
16787
|
+
" bei ",
|
|
16788
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("code", { children: lauf.provider })
|
|
16789
|
+
] }),
|
|
16790
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("p", { children: [
|
|
16791
|
+
"erzeugt: ",
|
|
16792
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("code", { children: lauf.created_at })
|
|
16793
|
+
] })
|
|
16344
16794
|
] }),
|
|
16345
|
-
lauf.
|
|
16346
|
-
|
|
16347
|
-
|
|
16348
|
-
|
|
16349
|
-
"Fehlgeschlagen \u2014 ",
|
|
16350
|
-
lauf.failure.class
|
|
16795
|
+
lauf.status === "succeeded" && itemMoeglich && !item && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("button", { type: "button", "data-testid": `als-item-${lauf.run_id}`, disabled: laeuft, onClick: speichern, children: "als Item speichern" }),
|
|
16796
|
+
item && /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("p", { "data-testid": `item-${lauf.run_id}`, children: [
|
|
16797
|
+
"Bereits als Item gespeichert: ",
|
|
16798
|
+
/* @__PURE__ */ (0, import_jsx_runtime9.jsx)("code", { children: item.itemId })
|
|
16351
16799
|
] }),
|
|
16352
|
-
/* @__PURE__ */ (0,
|
|
16353
|
-
|
|
16354
|
-
|
|
16355
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("summary", { children: "Rohantwort (Diagnose)" }),
|
|
16356
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("pre", { children: lauf.raw_output })
|
|
16357
|
-
] }),
|
|
16358
|
-
lauf.status === "succeeded" && itemMoeglich && !item && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("button", { type: "button", "data-testid": `als-item-${lauf.run_id}`, disabled: laeuft, onClick: speichern, children: "als Item speichern" }),
|
|
16359
|
-
item && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { "data-testid": `item-${lauf.run_id}`, children: [
|
|
16360
|
-
"Bereits als Item gespeichert: ",
|
|
16361
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("code", { children: item.itemId })
|
|
16362
|
-
] }),
|
|
16363
|
-
lauf.status === "succeeded" && !itemMoeglich && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { "data-testid": `item-unsupported-${lauf.run_id}`, children: "Dieser Host speichert keine Runden als Item. Das ist kein Fehler und kein vor\xFCbergehender Zustand." }),
|
|
16364
|
-
notiz && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { "data-testid": `item-notiz-${lauf.run_id}`, "data-tone": notiz.tone, children: notiz.text }),
|
|
16365
|
-
lauf.status === "succeeded" && /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("details", { "data-testid": `bilder-bereich-${lauf.run_id}`, children: [
|
|
16366
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)("summary", { children: "Bilder zu diesem Lauf" }),
|
|
16367
|
-
/* @__PURE__ */ (0, import_jsx_runtime8.jsx)(RunImagesPanel, { port, lauf })
|
|
16800
|
+
lauf.status === "succeeded" && !itemMoeglich && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { "data-testid": `item-unsupported-${lauf.run_id}`, children: "Dieser Host speichert keine Runden als Item. Das ist kein Fehler und kein vor\xFCbergehender Zustand." }),
|
|
16801
|
+
notiz && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { "data-testid": `item-notiz-${lauf.run_id}`, "data-tone": notiz.tone, children: notiz.text }),
|
|
16802
|
+
lauf.status === "succeeded" && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(RunImagesPanel, { port, lauf })
|
|
16368
16803
|
] })
|
|
16369
16804
|
] });
|
|
16370
16805
|
};
|
|
16371
16806
|
|
|
16372
16807
|
// src/features/szenen/areas/ElementDetail.tsx
|
|
16373
|
-
var
|
|
16808
|
+
var import_jsx_runtime10 = require("react/jsx-runtime");
|
|
16374
16809
|
var STRUKTURELL_BEDIENT = {
|
|
16375
16810
|
scene: ["nodes", "relations"]
|
|
16376
16811
|
};
|
|
16377
16812
|
var AbgeleitetesBildmodell = ({ schluessel }) => {
|
|
16378
16813
|
if (!schluessel) return null;
|
|
16379
|
-
return /* @__PURE__ */ (0,
|
|
16380
|
-
/* @__PURE__ */ (0,
|
|
16381
|
-
/* @__PURE__ */ (0,
|
|
16382
|
-
/* @__PURE__ */ (0,
|
|
16814
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("section", { className: "szenen-detail__derived", "data-testid": "abgeleitetes-bildmodell", children: [
|
|
16815
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h4", { children: "Bildgenerierung \u2014 wo das Modell entschieden wird" }),
|
|
16816
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { "data-testid": "bildmodell-hinweis", children: [
|
|
16817
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("code", { children: schluessel }),
|
|
16383
16818
|
" beschreibt, wof\xFCr dieser Prompt optimiert wird \u2014 nicht, mit welchem Bildmodell er ausgef\xFChrt wird. Welche Bildmodelle wirklich ausf\xFChrbar sind, ist Konfiguration der jeweiligen Umgebung und wird an der Bildaktion eines Laufs gew\xE4hlt (D-129)."
|
|
16384
16819
|
] })
|
|
16385
16820
|
] });
|
|
@@ -16391,43 +16826,43 @@ var ElementDetail = ({
|
|
|
16391
16826
|
author,
|
|
16392
16827
|
onChanged
|
|
16393
16828
|
}) => {
|
|
16394
|
-
const [nachladen, setNachladen] = (0,
|
|
16829
|
+
const [nachladen, setNachladen] = (0, import_react10.useState)(0);
|
|
16395
16830
|
const [phase] = usePortQuery(
|
|
16396
16831
|
() => port.elements.getElement(elementId),
|
|
16397
16832
|
[port, elementId, nachladen]
|
|
16398
16833
|
);
|
|
16399
|
-
const [entwurf, setEntwurf] = (0,
|
|
16400
|
-
const [notiz, setNotiz] = (0,
|
|
16401
|
-
const [laeuft, setLaeuft] = (0,
|
|
16402
|
-
const [wahl, setWahl] = (0,
|
|
16403
|
-
const [basiswechsel, setBasiswechsel] = (0,
|
|
16834
|
+
const [entwurf, setEntwurf] = (0, import_react10.useState)({});
|
|
16835
|
+
const [notiz, setNotiz] = (0, import_react10.useState)(null);
|
|
16836
|
+
const [laeuft, setLaeuft] = (0, import_react10.useState)(false);
|
|
16837
|
+
const [wahl, setWahl] = (0, import_react10.useState)(null);
|
|
16838
|
+
const [basiswechsel, setBasiswechsel] = (0, import_react10.useState)(null);
|
|
16404
16839
|
const [kettenPhase] = usePortQuery(
|
|
16405
16840
|
() => port.context.chainFor(contextId),
|
|
16406
16841
|
[port, contextId]
|
|
16407
16842
|
);
|
|
16408
|
-
const kontextkette = (0,
|
|
16843
|
+
const kontextkette = (0, import_react10.useMemo)(() => {
|
|
16409
16844
|
if (kettenPhase.status === "ready") return { status: "ready", chain: kettenPhase.value };
|
|
16410
16845
|
if (kettenPhase.status === "error") return { status: "error", message: kettenPhase.message };
|
|
16411
16846
|
return { status: "loading" };
|
|
16412
16847
|
}, [kettenPhase]);
|
|
16413
16848
|
const kette = kontextkette.status === "ready" ? kontextkette.chain : null;
|
|
16414
16849
|
const schnappschuss = phase.status === "ready" ? phase.value : null;
|
|
16415
|
-
const kopfErgebnis = (0,
|
|
16850
|
+
const kopfErgebnis = (0, import_react10.useMemo)(
|
|
16416
16851
|
() => schnappschuss && kette ? effectivePreferredHeadSafe(schnappschuss, kette) : null,
|
|
16417
16852
|
[schnappschuss, kette]
|
|
16418
16853
|
);
|
|
16419
16854
|
const kopfAufloesung = resolutionOf(kopfErgebnis);
|
|
16420
16855
|
const bevorzugteVersion = selectedHeadVersionId(kopfAufloesung);
|
|
16421
|
-
const felder = (0,
|
|
16856
|
+
const felder = (0, import_react10.useMemo)(
|
|
16422
16857
|
() => schnappschuss ? fieldsForType(schnappschuss.element.type) : [],
|
|
16423
16858
|
[schnappschuss?.element.type]
|
|
16424
16859
|
);
|
|
16425
|
-
(0,
|
|
16860
|
+
(0, import_react10.useEffect)(() => {
|
|
16426
16861
|
setWahl(null);
|
|
16427
16862
|
setBasiswechsel(null);
|
|
16428
16863
|
setNotiz(null);
|
|
16429
16864
|
}, [elementId]);
|
|
16430
|
-
const automatisch = (0,
|
|
16865
|
+
const automatisch = (0, import_react10.useMemo)(() => {
|
|
16431
16866
|
if (!schnappschuss) return { kind: "keiner" };
|
|
16432
16867
|
if (schnappschuss.draft) return { kind: "draft" };
|
|
16433
16868
|
if (bevorzugteVersion) return { kind: "version", versionId: bevorzugteVersion };
|
|
@@ -16437,14 +16872,14 @@ var ElementDetail = ({
|
|
|
16437
16872
|
if (schnappschuss.versions.length === 0) return { kind: "draft" };
|
|
16438
16873
|
return { kind: "keiner" };
|
|
16439
16874
|
}, [schnappschuss, bevorzugteVersion]);
|
|
16440
|
-
const angezeigt = (0,
|
|
16875
|
+
const angezeigt = (0, import_react10.useMemo)(() => {
|
|
16441
16876
|
if (!wahl) return automatisch;
|
|
16442
16877
|
if (wahl.kind === "version" && !schnappschuss?.versions.some((v) => v.version_id === wahl.versionId)) {
|
|
16443
16878
|
return automatisch;
|
|
16444
16879
|
}
|
|
16445
16880
|
return wahl;
|
|
16446
16881
|
}, [wahl, automatisch, schnappschuss]);
|
|
16447
|
-
const angezeigtePayload = (0,
|
|
16882
|
+
const angezeigtePayload = (0, import_react10.useMemo)(() => {
|
|
16448
16883
|
if (!schnappschuss) return {};
|
|
16449
16884
|
if (angezeigt.kind === "draft") return schnappschuss.draft?.payload ?? {};
|
|
16450
16885
|
if (angezeigt.kind === "version") {
|
|
@@ -16453,7 +16888,7 @@ var ElementDetail = ({
|
|
|
16453
16888
|
return {};
|
|
16454
16889
|
}, [schnappschuss, angezeigt]);
|
|
16455
16890
|
const anzeigeSchluessel = angezeigt.kind === "version" ? `v:${angezeigt.versionId}` : angezeigt.kind;
|
|
16456
|
-
(0,
|
|
16891
|
+
(0, import_react10.useEffect)(() => {
|
|
16457
16892
|
if (!schnappschuss) return;
|
|
16458
16893
|
setEntwurf(formFromPayload(felder, angezeigtePayload));
|
|
16459
16894
|
}, [
|
|
@@ -16466,7 +16901,7 @@ var ElementDetail = ({
|
|
|
16466
16901
|
const bearbeitbar = angezeigt.kind === "draft";
|
|
16467
16902
|
const setzeFeld = (pfad, wert) => setEntwurf((vorher) => ({ ...vorher, [pfad]: wert }));
|
|
16468
16903
|
const payloadAusFormular = () => payloadFromForm(felder, entwurf);
|
|
16469
|
-
const strukturPayload = (0,
|
|
16904
|
+
const strukturPayload = (0, import_react10.useMemo)(() => {
|
|
16470
16905
|
const lies = (name) => {
|
|
16471
16906
|
try {
|
|
16472
16907
|
const roh = JSON.parse(entwurf[name] || "[]");
|
|
@@ -16477,19 +16912,19 @@ var ElementDetail = ({
|
|
|
16477
16912
|
};
|
|
16478
16913
|
return { nodes: lies("nodes"), relations: lies("relations") };
|
|
16479
16914
|
}, [entwurf.nodes, entwurf.relations]);
|
|
16480
|
-
const kettenfeld = (0,
|
|
16915
|
+
const kettenfeld = (0, import_react10.useMemo)(() => {
|
|
16481
16916
|
const kette2 = schnappschuss?.draft?.chain;
|
|
16482
16917
|
if (!kette2) return null;
|
|
16483
16918
|
return kette2.links[0]?.field ?? null;
|
|
16484
16919
|
}, [schnappschuss?.draft?.chain]);
|
|
16485
|
-
const laufStand = (0,
|
|
16920
|
+
const laufStand = (0, import_react10.useMemo)(() => {
|
|
16486
16921
|
if (!schnappschuss || schnappschuss.element.type !== "scene") return null;
|
|
16487
16922
|
if (schnappschuss.draft) return schnappschuss.draft.payload;
|
|
16488
16923
|
const kopf = usableHeadVersionId(kopfAufloesung);
|
|
16489
16924
|
if (!kopf) return null;
|
|
16490
16925
|
return schnappschuss.versions.find((v) => v.version_id === kopf)?.payload ?? null;
|
|
16491
16926
|
}, [schnappschuss, kopfAufloesung]);
|
|
16492
|
-
const szenenBlocker = (0,
|
|
16927
|
+
const szenenBlocker = (0, import_react10.useMemo)(() => {
|
|
16493
16928
|
if (!schnappschuss || schnappschuss.element.type !== "scene") return null;
|
|
16494
16929
|
if (laufStand === null) {
|
|
16495
16930
|
return schnappschuss.versions.length > 0 ? "Diese Szene hat keinen Entwurf und in diesem Kontext keinen bevorzugten Kopf. Welcher Stand gilt, entscheidet keine Reihenfolge (D-36) \u2014 bitte oben eine Version als bevorzugt setzen." : "Diese Szene hat noch keinen gespeicherten Stand. Ein Lauf friert ein, was gespeichert ist \u2014 bitte zuerst den Entwurf speichern.";
|
|
@@ -16499,7 +16934,7 @@ var ElementDetail = ({
|
|
|
16499
16934
|
const grund = flag.reasons[0];
|
|
16500
16935
|
return grund && "message" in grund ? grund.message : "Kein Lauf moeglich.";
|
|
16501
16936
|
}, [schnappschuss, laufStand]);
|
|
16502
|
-
const vorschau = (0,
|
|
16937
|
+
const vorschau = (0, import_react10.useMemo)(() => {
|
|
16503
16938
|
if (!schnappschuss) return null;
|
|
16504
16939
|
try {
|
|
16505
16940
|
const roh = validatePayload(schnappschuss.element.type, payloadAusFormular());
|
|
@@ -16512,9 +16947,9 @@ var ElementDetail = ({
|
|
|
16512
16947
|
return { valid: false, errors: [{ instancePath: "", message: String(e) }] };
|
|
16513
16948
|
}
|
|
16514
16949
|
}, [entwurf, felder, schnappschuss?.element.type, kettenfeld]);
|
|
16515
|
-
if (phase.status === "loading") return /* @__PURE__ */ (0,
|
|
16950
|
+
if (phase.status === "loading") return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { "data-testid": "element-laden", children: "Element wird geladen \u2026" });
|
|
16516
16951
|
if (phase.status === "error") {
|
|
16517
|
-
return /* @__PURE__ */ (0,
|
|
16952
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { "data-testid": "element-fehler", role: "alert", children: [
|
|
16518
16953
|
"Element ",
|
|
16519
16954
|
elementId,
|
|
16520
16955
|
" konnte nicht geladen werden: ",
|
|
@@ -16522,7 +16957,7 @@ var ElementDetail = ({
|
|
|
16522
16957
|
] });
|
|
16523
16958
|
}
|
|
16524
16959
|
if (!schnappschuss) {
|
|
16525
|
-
return /* @__PURE__ */ (0,
|
|
16960
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { "data-testid": "element-unbekannt", children: [
|
|
16526
16961
|
"Element ",
|
|
16527
16962
|
elementId,
|
|
16528
16963
|
" ist unbekannt."
|
|
@@ -16628,28 +17063,28 @@ var ElementDetail = ({
|
|
|
16628
17063
|
formular: entwurf
|
|
16629
17064
|
};
|
|
16630
17065
|
const laufVersionId = angezeigt.kind === "version" ? angezeigt.versionId : usableHeadVersionId(kopfAufloesung);
|
|
16631
|
-
return /* @__PURE__ */ (0,
|
|
16632
|
-
/* @__PURE__ */ (0,
|
|
16633
|
-
/* @__PURE__ */ (0,
|
|
16634
|
-
/* @__PURE__ */ (0,
|
|
16635
|
-
/* @__PURE__ */ (0,
|
|
16636
|
-
schnappschuss.element.retired && /* @__PURE__ */ (0,
|
|
17066
|
+
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "szenen-detail", "data-testid": "element-detail", "data-element-id": elementId, children: [
|
|
17067
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("header", { children: [
|
|
17068
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h3", { children: schnappschuss.metadata?.title ?? "(ohne Titel)" }),
|
|
17069
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { className: "szenen-detail__ids", children: [
|
|
17070
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { "data-testid": "element-typ", children: elementTypLabel(typ) }),
|
|
17071
|
+
schnappschuss.element.retired && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { "data-testid": "ist-stillgelegt", children: "stillgelegt" })
|
|
16637
17072
|
] })
|
|
16638
17073
|
] }),
|
|
16639
|
-
kontextkette.status === "error" && /* @__PURE__ */ (0,
|
|
17074
|
+
kontextkette.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { role: "alert", "data-testid": "kontextkette-fehler", className: "szenen-detail__hint", children: [
|
|
16640
17075
|
"Die Kontextkette konnte nicht gelesen werden: ",
|
|
16641
17076
|
kontextkette.message,
|
|
16642
17077
|
". Solange das so ist, lassen sich weder der bevorzugte Kopf noch die ausw\xE4hlbaren Referenzen bestimmen \u2014 sie sind ",
|
|
16643
|
-
/* @__PURE__ */ (0,
|
|
17078
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("strong", { children: "unbekannt" }),
|
|
16644
17079
|
", nicht leer."
|
|
16645
17080
|
] }),
|
|
16646
|
-
kopfErgebnis?.kind === "dag_fehler" && /* @__PURE__ */ (0,
|
|
17081
|
+
kopfErgebnis?.kind === "dag_fehler" && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { role: "alert", "data-testid": "versionsgraph-fehler", className: "szenen-detail__hint", children: [
|
|
16647
17082
|
"Der Versionsgraph dieses Elements ist nicht aufbaubar:",
|
|
16648
17083
|
" ",
|
|
16649
17084
|
kopfErgebnis.message,
|
|
16650
17085
|
". Die Versionen bleiben einzeln anzeigbar; ein bevorzugter Kopf l\xE4sst sich daraus nicht ableiten."
|
|
16651
17086
|
] }),
|
|
16652
|
-
/* @__PURE__ */ (0,
|
|
17087
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
16653
17088
|
VersionNavigator,
|
|
16654
17089
|
{
|
|
16655
17090
|
versions: schnappschuss.versions,
|
|
@@ -16672,22 +17107,22 @@ var ElementDetail = ({
|
|
|
16672
17107
|
}
|
|
16673
17108
|
}
|
|
16674
17109
|
),
|
|
16675
|
-
basiswechsel && draft && /* @__PURE__ */ (0,
|
|
16676
|
-
/* @__PURE__ */ (0,
|
|
17110
|
+
basiswechsel && draft && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "szenen-detail__confirm", "data-testid": "basiswechsel-bestaetigung", role: "alertdialog", children: [
|
|
17111
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { children: [
|
|
16677
17112
|
"Es gibt bereits einen Entwurf (Revision ",
|
|
16678
17113
|
draft.revision,
|
|
16679
|
-
draft.base_version_id ? /* @__PURE__ */ (0,
|
|
17114
|
+
draft.base_version_id ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
|
|
16680
17115
|
" auf Basis ",
|
|
16681
|
-
/* @__PURE__ */ (0,
|
|
16682
|
-
] }) : /* @__PURE__ */ (0,
|
|
17116
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("code", { children: draft.base_version_id })
|
|
17117
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: " ohne Basis" }),
|
|
16683
17118
|
"). Ihn auf Version ",
|
|
16684
|
-
/* @__PURE__ */ (0,
|
|
17119
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("code", { children: basiswechsel }),
|
|
16685
17120
|
" neu aufzusetzen",
|
|
16686
17121
|
" ",
|
|
16687
|
-
/* @__PURE__ */ (0,
|
|
17122
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("strong", { children: "ersetzt seinen Inhalt" }),
|
|
16688
17123
|
" durch die Payload dieser Version."
|
|
16689
17124
|
] }),
|
|
16690
|
-
/* @__PURE__ */ (0,
|
|
17125
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
16691
17126
|
"button",
|
|
16692
17127
|
{
|
|
16693
17128
|
type: "button",
|
|
@@ -16699,7 +17134,7 @@ var ElementDetail = ({
|
|
|
16699
17134
|
children: "Entwurf auf diese Version neu aufsetzen"
|
|
16700
17135
|
}
|
|
16701
17136
|
),
|
|
16702
|
-
/* @__PURE__ */ (0,
|
|
17137
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
16703
17138
|
"button",
|
|
16704
17139
|
{
|
|
16705
17140
|
type: "button",
|
|
@@ -16710,26 +17145,26 @@ var ElementDetail = ({
|
|
|
16710
17145
|
}
|
|
16711
17146
|
)
|
|
16712
17147
|
] }),
|
|
16713
|
-
/* @__PURE__ */ (0,
|
|
16714
|
-
/* @__PURE__ */ (0,
|
|
17148
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("section", { className: "szenen-detail__draft", "data-testid": "draft-bereich", children: [
|
|
17149
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("h4", { children: bearbeitbar ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
|
|
16715
17150
|
"Entwurf",
|
|
16716
|
-
draft && /* @__PURE__ */ (0,
|
|
17151
|
+
draft && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { children: [
|
|
16717
17152
|
" \xB7 Revision ",
|
|
16718
17153
|
draft.revision
|
|
16719
17154
|
] })
|
|
16720
|
-
] }) : /* @__PURE__ */ (0,
|
|
16721
|
-
angezeigt.kind === "keiner" && /* @__PURE__ */ (0,
|
|
17155
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_jsx_runtime10.Fragment, { children: "Ver\xF6ffentlichte Version \u2014 nur Ansicht" }) }),
|
|
17156
|
+
angezeigt.kind === "keiner" && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { "data-testid": "nichts-angezeigt", children: [
|
|
16722
17157
|
"Es ist kein Stand ausgew\xE4hlt. Oben eine Version anzeigen oder \xFCber ",
|
|
16723
|
-
/* @__PURE__ */ (0,
|
|
17158
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("strong", { children: "als Grundlage bearbeiten" }),
|
|
16724
17159
|
" einen Entwurf beginnen."
|
|
16725
17160
|
] }),
|
|
16726
|
-
!bearbeitbar && angezeigt.kind === "version" && /* @__PURE__ */ (0,
|
|
17161
|
+
!bearbeitbar && angezeigt.kind === "version" && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { "data-testid": "nur-ansicht", className: "szenen-detail__hint", children: [
|
|
16727
17162
|
"Ver\xF6ffentlichte Versionen sind unver\xE4nderlich (D-02). Zum Bearbeiten oben ",
|
|
16728
|
-
/* @__PURE__ */ (0,
|
|
17163
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("strong", { children: "als Grundlage bearbeiten" }),
|
|
16729
17164
|
" w\xE4hlen \u2014 das erzeugt einen Entwurf mit genau dieser Version als Basis."
|
|
16730
17165
|
] }),
|
|
16731
|
-
angezeigt.kind !== "keiner" && /* @__PURE__ */ (0,
|
|
16732
|
-
typ === "scene" && /* @__PURE__ */ (0,
|
|
17166
|
+
angezeigt.kind !== "keiner" && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
|
|
17167
|
+
typ === "scene" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
16733
17168
|
SceneEditor,
|
|
16734
17169
|
{
|
|
16735
17170
|
port,
|
|
@@ -16743,57 +17178,57 @@ var ElementDetail = ({
|
|
|
16743
17178
|
}))
|
|
16744
17179
|
}
|
|
16745
17180
|
),
|
|
16746
|
-
felder.length === 0 && /* @__PURE__ */ (0,
|
|
17181
|
+
felder.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { "data-testid": "kein-schema", children: [
|
|
16747
17182
|
"F\xFCr den Typ ",
|
|
16748
17183
|
typ,
|
|
16749
17184
|
" liegt kein Payload-Schema vor."
|
|
16750
17185
|
] }),
|
|
16751
|
-
primaer.map((feld) => /* @__PURE__ */ (0,
|
|
16752
|
-
advanced.length > 0 && /* @__PURE__ */ (0,
|
|
16753
|
-
/* @__PURE__ */ (0,
|
|
17186
|
+
primaer.map((feld) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SchemaFieldRow, { ...feldProps, feld }, feld.path)),
|
|
17187
|
+
advanced.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("details", { className: "szenen-detail__technical", "data-testid": "technische-felder", children: [
|
|
17188
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("summary", { children: [
|
|
16754
17189
|
"Technische Felder / JSON (",
|
|
16755
17190
|
advanced.length,
|
|
16756
17191
|
")"
|
|
16757
17192
|
] }),
|
|
16758
|
-
advanced.map((feld) => /* @__PURE__ */ (0,
|
|
17193
|
+
advanced.map((feld) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SchemaFieldRow, { ...feldProps, feld }, feld.path))
|
|
16759
17194
|
] }),
|
|
16760
|
-
/* @__PURE__ */ (0,
|
|
16761
|
-
/* @__PURE__ */ (0,
|
|
16762
|
-
/* @__PURE__ */ (0,
|
|
17195
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("details", { className: "szenen-detail__technical", "data-testid": "technische-informationen", children: [
|
|
17196
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("summary", { children: "Technische Informationen" }),
|
|
17197
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { children: [
|
|
16763
17198
|
"Element-ID: ",
|
|
16764
|
-
/* @__PURE__ */ (0,
|
|
17199
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("code", { children: schnappschuss.element.element_id })
|
|
16765
17200
|
] }),
|
|
16766
|
-
/* @__PURE__ */ (0,
|
|
17201
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { children: [
|
|
16767
17202
|
"angezeigter Stand:",
|
|
16768
17203
|
" ",
|
|
16769
|
-
/* @__PURE__ */ (0,
|
|
17204
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("code", { "data-testid": "angezeigter-stand", children: angezeigt.kind === "version" ? angezeigt.versionId : "Entwurf" })
|
|
16770
17205
|
] }),
|
|
16771
|
-
draft && /* @__PURE__ */ (0,
|
|
17206
|
+
draft && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { children: [
|
|
16772
17207
|
"Basis des Entwurfs:",
|
|
16773
17208
|
" ",
|
|
16774
|
-
/* @__PURE__ */ (0,
|
|
17209
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("code", { children: draft.base_version_id ?? "(keine)" })
|
|
16775
17210
|
] })
|
|
16776
17211
|
] })
|
|
16777
17212
|
] }),
|
|
16778
|
-
bearbeitbar && vorschau && !vorschau.valid && /* @__PURE__ */ (0,
|
|
17213
|
+
bearbeitbar && vorschau && !vorschau.valid && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("ul", { "data-testid": "vorschau-befunde", className: "szenen-detail__preview-errors", children: vorschau.errors.map((f, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("li", { children: [
|
|
16779
17214
|
f.instancePath || "/",
|
|
16780
17215
|
": ",
|
|
16781
17216
|
f.message
|
|
16782
17217
|
] }, i)) }),
|
|
16783
|
-
kettenfeld && /* @__PURE__ */ (0,
|
|
17218
|
+
kettenfeld && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("p", { "data-testid": "kettenfeld-hinweis", className: "szenen-detail__hint", children: [
|
|
16784
17219
|
"Der Verweis ",
|
|
16785
|
-
/* @__PURE__ */ (0,
|
|
17220
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("code", { children: kettenfeld }),
|
|
16786
17221
|
" steht in den Kettenmetadaten, nicht in der Payload (D-96) \u2014 f\xFCr den Prompt-Lauf aus der Kette gen\xFCgt das. Zum",
|
|
16787
17222
|
" ",
|
|
16788
|
-
/* @__PURE__ */ (0,
|
|
17223
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("strong", { children: "Ver\xF6ffentlichen" }),
|
|
16789
17224
|
" muss er als regul\xE4re Referenz auf eine ver\xF6ffentlichte Version gesetzt werden."
|
|
16790
17225
|
] }),
|
|
16791
|
-
bearbeitbar && /* @__PURE__ */ (0,
|
|
16792
|
-
/* @__PURE__ */ (0,
|
|
16793
|
-
/* @__PURE__ */ (0,
|
|
17226
|
+
bearbeitbar && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "szenen-detail__actions", children: [
|
|
17227
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("button", { type: "button", "data-testid": "draft-speichern", disabled: laeuft, onClick: speichern, children: "Entwurf speichern" }),
|
|
17228
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("button", { type: "button", "data-testid": "veroeffentlichen", disabled: laeuft, onClick: veroeffentlichen, children: "ver\xF6ffentlichen" })
|
|
16794
17229
|
] })
|
|
16795
17230
|
] }),
|
|
16796
|
-
typ === "target_model" && /* @__PURE__ */ (0,
|
|
17231
|
+
typ === "target_model" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
16797
17232
|
AbgeleitetesBildmodell,
|
|
16798
17233
|
{
|
|
16799
17234
|
schluessel: (() => {
|
|
@@ -16808,8 +17243,8 @@ var ElementDetail = ({
|
|
|
16808
17243
|
// einer Draft-Kette, fuehrt der Weg ueber das Einfrieren —
|
|
16809
17244
|
// der alte Satz „setzen eine veroeffentlichte Version
|
|
16810
17245
|
// voraus" gilt nur noch fuer den Einzel-Shot.
|
|
16811
|
-
draft?.chain ? /* @__PURE__ */ (0,
|
|
16812
|
-
/* @__PURE__ */ (0,
|
|
17246
|
+
draft?.chain ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
|
|
17247
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
16813
17248
|
PromptStartAction,
|
|
16814
17249
|
{
|
|
16815
17250
|
port,
|
|
@@ -16819,7 +17254,7 @@ var ElementDetail = ({
|
|
|
16819
17254
|
}
|
|
16820
17255
|
}
|
|
16821
17256
|
),
|
|
16822
|
-
/* @__PURE__ */ (0,
|
|
17257
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
16823
17258
|
RunsPanel,
|
|
16824
17259
|
{
|
|
16825
17260
|
port,
|
|
@@ -16827,17 +17262,17 @@ var ElementDetail = ({
|
|
|
16827
17262
|
source: { kind: "draft_chain", chainId: draft.chain.chain_id }
|
|
16828
17263
|
}
|
|
16829
17264
|
)
|
|
16830
|
-
] }) : /* @__PURE__ */ (0,
|
|
16831
|
-
) : laufVersionId ? /* @__PURE__ */ (0,
|
|
17265
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { "data-testid": "shot-ohne-version", children: "Dieser Shot ist noch nicht ver\xF6ffentlicht und geh\xF6rt zu keiner Draft-Kette. Ein Prompt-Lauf braucht hier eine ver\xF6ffentlichte Version \u2014 oder einen Shot, der aus einer Rekonstruktion als Kette entstanden ist." })
|
|
17266
|
+
) : laufVersionId ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
16832
17267
|
RunsPanel,
|
|
16833
17268
|
{
|
|
16834
17269
|
port,
|
|
16835
17270
|
contextId,
|
|
16836
17271
|
source: { kind: "published", shotVersionId: laufVersionId }
|
|
16837
17272
|
}
|
|
16838
|
-
) : /* @__PURE__ */ (0,
|
|
16839
|
-
typ === "scene" && /* @__PURE__ */ (0,
|
|
16840
|
-
/* @__PURE__ */ (0,
|
|
17273
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { "data-testid": "laufquelle-unklar", children: "Dieser Shot hat mehrere ver\xF6ffentlichte Versionen und keinen bevorzugten Kopf in diesem Kontext. Welche davon einen Lauf tr\xE4gt, entscheidet keine Reihenfolge \u2014 bitte oben eine Version anzeigen oder als bevorzugt setzen." })),
|
|
17274
|
+
typ === "scene" && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
|
|
17275
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
16841
17276
|
PromptStartAction,
|
|
16842
17277
|
{
|
|
16843
17278
|
port,
|
|
@@ -16851,7 +17286,7 @@ var ElementDetail = ({
|
|
|
16851
17286
|
onLauf: () => setNachladen((n) => n + 1)
|
|
16852
17287
|
}
|
|
16853
17288
|
),
|
|
16854
|
-
/* @__PURE__ */ (0,
|
|
17289
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
16855
17290
|
RunsPanel,
|
|
16856
17291
|
{
|
|
16857
17292
|
port,
|
|
@@ -16860,7 +17295,7 @@ var ElementDetail = ({
|
|
|
16860
17295
|
}
|
|
16861
17296
|
)
|
|
16862
17297
|
] }),
|
|
16863
|
-
typ === "scene_setup" && /* @__PURE__ */ (0,
|
|
17298
|
+
typ === "scene_setup" && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
|
|
16864
17299
|
CapabilityPanel,
|
|
16865
17300
|
{
|
|
16866
17301
|
port,
|
|
@@ -16868,7 +17303,7 @@ var ElementDetail = ({
|
|
|
16868
17303
|
setupPayload: payloadAusFormular()
|
|
16869
17304
|
}
|
|
16870
17305
|
),
|
|
16871
|
-
notiz && /* @__PURE__ */ (0,
|
|
17306
|
+
notiz && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
|
|
16872
17307
|
"div",
|
|
16873
17308
|
{
|
|
16874
17309
|
className: `szenen-detail__notice szenen-detail__notice--${notiz.tone}`,
|
|
@@ -16876,8 +17311,8 @@ var ElementDetail = ({
|
|
|
16876
17311
|
"data-tone": notiz.tone,
|
|
16877
17312
|
role: notiz.tone === "error" ? "alert" : "status",
|
|
16878
17313
|
children: [
|
|
16879
|
-
/* @__PURE__ */ (0,
|
|
16880
|
-
notiz.details && notiz.details.length > 0 && /* @__PURE__ */ (0,
|
|
17314
|
+
/* @__PURE__ */ (0, import_jsx_runtime10.jsx)("p", { children: notiz.text }),
|
|
17315
|
+
notiz.details && notiz.details.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("ul", { "data-testid": "notiz-befunde", children: notiz.details.map((d, i) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("li", { children: d }, i)) })
|
|
16881
17316
|
]
|
|
16882
17317
|
}
|
|
16883
17318
|
)
|
|
@@ -16885,15 +17320,15 @@ var ElementDetail = ({
|
|
|
16885
17320
|
};
|
|
16886
17321
|
|
|
16887
17322
|
// src/features/szenen/areas/useSchmalesDisplay.ts
|
|
16888
|
-
var
|
|
17323
|
+
var import_react11 = require("react");
|
|
16889
17324
|
var SCHMALE_ANSICHT = "(max-width: 760px)";
|
|
16890
17325
|
function messen(abfrage) {
|
|
16891
17326
|
if (typeof window === "undefined" || typeof window.matchMedia !== "function") return false;
|
|
16892
17327
|
return window.matchMedia(abfrage).matches;
|
|
16893
17328
|
}
|
|
16894
17329
|
function useSchmalesDisplay(abfrage = SCHMALE_ANSICHT) {
|
|
16895
|
-
const [schmal, setSchmal] = (0,
|
|
16896
|
-
(0,
|
|
17330
|
+
const [schmal, setSchmal] = (0, import_react11.useState)(() => messen(abfrage));
|
|
17331
|
+
(0, import_react11.useEffect)(() => {
|
|
16897
17332
|
if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
|
|
16898
17333
|
const liste = window.matchMedia(abfrage);
|
|
16899
17334
|
const aktualisieren = () => setSchmal(liste.matches);
|
|
@@ -16905,7 +17340,7 @@ function useSchmalesDisplay(abfrage = SCHMALE_ANSICHT) {
|
|
|
16905
17340
|
}
|
|
16906
17341
|
|
|
16907
17342
|
// src/features/szenen/areas/ElementsArea.tsx
|
|
16908
|
-
var
|
|
17343
|
+
var import_jsx_runtime11 = require("react/jsx-runtime");
|
|
16909
17344
|
var ElementsArea = ({
|
|
16910
17345
|
port,
|
|
16911
17346
|
contextId,
|
|
@@ -16920,16 +17355,16 @@ var ElementsArea = ({
|
|
|
16920
17355
|
const gemischt = auswahlTypen.length > 1;
|
|
16921
17356
|
const ueberschrift = listTitle ?? (einzelTyp ? elementTypPlural(einzelTyp) : "Bausteine");
|
|
16922
17357
|
const einzahl = einzelTyp ? elementTypLabel(einzelTyp) : "Objekt";
|
|
16923
|
-
const [typ, setTyp] = (0,
|
|
16924
|
-
const [zeigeStillgelegte, setZeigeStillgelegte] = (0,
|
|
16925
|
-
const [gewaehlt, setGewaehlt] = (0,
|
|
16926
|
-
const [neuerTitel, setNeuerTitel] = (0,
|
|
16927
|
-
const [neuerTyp, setNeuerTyp] = (0,
|
|
16928
|
-
const [notiz, setNotiz] = (0,
|
|
16929
|
-
const [anlegend, setAnlegend] = (0,
|
|
16930
|
-
const [anlageOffen, setAnlageOffen] = (0,
|
|
17358
|
+
const [typ, setTyp] = (0, import_react12.useState)(einzelTyp ?? "");
|
|
17359
|
+
const [zeigeStillgelegte, setZeigeStillgelegte] = (0, import_react12.useState)(false);
|
|
17360
|
+
const [gewaehlt, setGewaehlt] = (0, import_react12.useState)(null);
|
|
17361
|
+
const [neuerTitel, setNeuerTitel] = (0, import_react12.useState)("");
|
|
17362
|
+
const [neuerTyp, setNeuerTyp] = (0, import_react12.useState)(auswahlTypen[0]);
|
|
17363
|
+
const [notiz, setNotiz] = (0, import_react12.useState)(null);
|
|
17364
|
+
const [anlegend, setAnlegend] = (0, import_react12.useState)(false);
|
|
17365
|
+
const [anlageOffen, setAnlageOffen] = (0, import_react12.useState)(false);
|
|
16931
17366
|
const schmal = useSchmalesDisplay();
|
|
16932
|
-
const [ansicht, setAnsicht] = (0,
|
|
17367
|
+
const [ansicht, setAnsicht] = (0, import_react12.useState)("liste");
|
|
16933
17368
|
const zeigeListe = !schmal || ansicht === "liste";
|
|
16934
17369
|
const zeigeDetail = !schmal || ansicht === "detail";
|
|
16935
17370
|
const waehle = (elementId) => {
|
|
@@ -16949,17 +17384,17 @@ var ElementsArea = ({
|
|
|
16949
17384
|
setAnlageOffen(false);
|
|
16950
17385
|
setNeuerTitel("");
|
|
16951
17386
|
};
|
|
16952
|
-
return /* @__PURE__ */ (0,
|
|
17387
|
+
return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
16953
17388
|
"div",
|
|
16954
17389
|
{
|
|
16955
17390
|
className: "szenen-elements",
|
|
16956
17391
|
"data-testid": "bereich-elemente",
|
|
16957
17392
|
"data-ansicht": schmal ? ansicht : "beide",
|
|
16958
17393
|
children: [
|
|
16959
|
-
zeigeListe && /* @__PURE__ */ (0,
|
|
16960
|
-
/* @__PURE__ */ (0,
|
|
16961
|
-
/* @__PURE__ */ (0,
|
|
16962
|
-
/* @__PURE__ */ (0,
|
|
17394
|
+
zeigeListe && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "szenen-elements__master", "data-testid": "elemente-master", children: [
|
|
17395
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "szenen-elements__toolbar", children: [
|
|
17396
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h3", { className: "szenen-elements__heading", children: ueberschrift }),
|
|
17397
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
16963
17398
|
"button",
|
|
16964
17399
|
{
|
|
16965
17400
|
type: "button",
|
|
@@ -16975,22 +17410,22 @@ var ElementsArea = ({
|
|
|
16975
17410
|
}
|
|
16976
17411
|
)
|
|
16977
17412
|
] }),
|
|
16978
|
-
gemischt && /* @__PURE__ */ (0,
|
|
17413
|
+
gemischt && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("label", { className: "szenen-elements__scope", children: [
|
|
16979
17414
|
"Art",
|
|
16980
|
-
/* @__PURE__ */ (0,
|
|
17415
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
16981
17416
|
"select",
|
|
16982
17417
|
{
|
|
16983
17418
|
"data-testid": "filter-typ",
|
|
16984
17419
|
value: typ,
|
|
16985
17420
|
onChange: (e) => setTyp(e.target.value),
|
|
16986
17421
|
children: [
|
|
16987
|
-
/* @__PURE__ */ (0,
|
|
16988
|
-
auswahlTypen.map((t) => /* @__PURE__ */ (0,
|
|
17422
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("option", { value: "", children: allTypesLabel ?? "alle Typen" }),
|
|
17423
|
+
auswahlTypen.map((t) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("option", { value: t, children: elementTypPlural(t) }, t))
|
|
16989
17424
|
]
|
|
16990
17425
|
}
|
|
16991
17426
|
)
|
|
16992
17427
|
] }),
|
|
16993
|
-
anlageOffen && /* @__PURE__ */ (0,
|
|
17428
|
+
anlageOffen && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
16994
17429
|
"form",
|
|
16995
17430
|
{
|
|
16996
17431
|
className: "szenen-elements__create",
|
|
@@ -17018,9 +17453,9 @@ var ElementsArea = ({
|
|
|
17018
17453
|
}
|
|
17019
17454
|
},
|
|
17020
17455
|
children: [
|
|
17021
|
-
/* @__PURE__ */ (0,
|
|
17456
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("label", { className: "szenen-elements__create-title", children: [
|
|
17022
17457
|
einzelTyp ? `Neue ${einzahl}` : "Titel",
|
|
17023
|
-
/* @__PURE__ */ (0,
|
|
17458
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
17024
17459
|
"input",
|
|
17025
17460
|
{
|
|
17026
17461
|
"data-testid": "neuer-titel",
|
|
@@ -17031,20 +17466,20 @@ var ElementsArea = ({
|
|
|
17031
17466
|
}
|
|
17032
17467
|
)
|
|
17033
17468
|
] }),
|
|
17034
|
-
gemischt && /* @__PURE__ */ (0,
|
|
17469
|
+
gemischt && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("label", { className: "szenen-elements__create-type", children: [
|
|
17035
17470
|
"Art",
|
|
17036
|
-
/* @__PURE__ */ (0,
|
|
17471
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
17037
17472
|
"select",
|
|
17038
17473
|
{
|
|
17039
17474
|
"data-testid": "neuer-typ",
|
|
17040
17475
|
value: neuerTyp,
|
|
17041
17476
|
onChange: (e) => setNeuerTyp(e.target.value),
|
|
17042
|
-
children: auswahlTypen.map((t) => /* @__PURE__ */ (0,
|
|
17477
|
+
children: auswahlTypen.map((t) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("option", { value: t, children: elementTypLabel(t) }, t))
|
|
17043
17478
|
}
|
|
17044
17479
|
)
|
|
17045
17480
|
] }),
|
|
17046
|
-
/* @__PURE__ */ (0,
|
|
17047
|
-
/* @__PURE__ */ (0,
|
|
17481
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "szenen-elements__create-actions", children: [
|
|
17482
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
17048
17483
|
"button",
|
|
17049
17484
|
{
|
|
17050
17485
|
type: "submit",
|
|
@@ -17053,7 +17488,7 @@ var ElementsArea = ({
|
|
|
17053
17488
|
children: "anlegen"
|
|
17054
17489
|
}
|
|
17055
17490
|
),
|
|
17056
|
-
/* @__PURE__ */ (0,
|
|
17491
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
17057
17492
|
"button",
|
|
17058
17493
|
{
|
|
17059
17494
|
type: "button",
|
|
@@ -17066,19 +17501,19 @@ var ElementsArea = ({
|
|
|
17066
17501
|
]
|
|
17067
17502
|
}
|
|
17068
17503
|
),
|
|
17069
|
-
notiz && /* @__PURE__ */ (0,
|
|
17070
|
-
phase.status === "loading" && /* @__PURE__ */ (0,
|
|
17071
|
-
phase.status === "error" && /* @__PURE__ */ (0,
|
|
17504
|
+
notiz && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { "data-testid": "anlegen-notiz", "data-tone": notiz.tone, children: notiz.text }),
|
|
17505
|
+
phase.status === "loading" && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { "data-testid": "elemente-laden", children: "Elemente werden geladen \u2026" }),
|
|
17506
|
+
phase.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("p", { "data-testid": "elemente-fehler", role: "alert", children: [
|
|
17072
17507
|
"Elemente konnten nicht geladen werden: ",
|
|
17073
17508
|
phase.message,
|
|
17074
17509
|
phase.retryable && " \u2014 ein erneuter Versuch kann helfen."
|
|
17075
17510
|
] }),
|
|
17076
|
-
phase.status === "ready" && phase.value.length === 0 && /* @__PURE__ */ (0,
|
|
17511
|
+
phase.status === "ready" && phase.value.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("p", { "data-testid": "elemente-leer", children: [
|
|
17077
17512
|
typ ? `Keine ${elementTypPlural(typ)} in diesem Kontext.` : "Nichts in diesem Kontext.",
|
|
17078
17513
|
" ",
|
|
17079
17514
|
'Mit \u201E+ Neu" anlegen.'
|
|
17080
17515
|
] }),
|
|
17081
|
-
phase.status === "ready" && phase.value.length > 0 && /* @__PURE__ */ (0,
|
|
17516
|
+
phase.status === "ready" && phase.value.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("ul", { className: "szenen-elements__list", "data-testid": "elemente-liste", children: phase.value.map((element) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("li", { "data-element-id": element.element_id, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
|
|
17082
17517
|
"button",
|
|
17083
17518
|
{
|
|
17084
17519
|
type: "button",
|
|
@@ -17087,18 +17522,18 @@ var ElementsArea = ({
|
|
|
17087
17522
|
className: element.element_id === gewaehlt ? "is-selected" : void 0,
|
|
17088
17523
|
onClick: () => waehle(element.element_id),
|
|
17089
17524
|
children: [
|
|
17090
|
-
/* @__PURE__ */ (0,
|
|
17091
|
-
gemischt && /* @__PURE__ */ (0,
|
|
17092
|
-
element.subtype && /* @__PURE__ */ (0,
|
|
17093
|
-
element.retired && /* @__PURE__ */ (0,
|
|
17525
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("strong", { className: "szenen-elements__title", children: element.title || "Unbenanntes Element" }),
|
|
17526
|
+
gemischt && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "szenen-elements__type", children: elementTypLabel(element.type) }),
|
|
17527
|
+
element.subtype && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "szenen-elements__subtype", children: element.subtype }),
|
|
17528
|
+
element.retired && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "szenen-elements__retired", children: "stillgelegt" })
|
|
17094
17529
|
]
|
|
17095
17530
|
}
|
|
17096
17531
|
) }, element.element_id)) }),
|
|
17097
|
-
/* @__PURE__ */ (0,
|
|
17098
|
-
/* @__PURE__ */ (0,
|
|
17099
|
-
/* @__PURE__ */ (0,
|
|
17100
|
-
/* @__PURE__ */ (0,
|
|
17101
|
-
/* @__PURE__ */ (0,
|
|
17532
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("details", { className: "szenen-elements__options", "data-testid": "listen-optionen", children: [
|
|
17533
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("summary", { children: "Listenoptionen" }),
|
|
17534
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "szenen-elements__filter", children: [
|
|
17535
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("label", { children: [
|
|
17536
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
17102
17537
|
"input",
|
|
17103
17538
|
{
|
|
17104
17539
|
type: "checkbox",
|
|
@@ -17109,12 +17544,12 @@ var ElementsArea = ({
|
|
|
17109
17544
|
),
|
|
17110
17545
|
"stillgelegte Elemente einblenden"
|
|
17111
17546
|
] }),
|
|
17112
|
-
/* @__PURE__ */ (0,
|
|
17547
|
+
/* @__PURE__ */ (0, import_jsx_runtime11.jsx)("button", { type: "button", "data-testid": "neu-laden", onClick: neuLaden, children: "neu laden" })
|
|
17113
17548
|
] })
|
|
17114
17549
|
] })
|
|
17115
17550
|
] }),
|
|
17116
|
-
zeigeDetail && /* @__PURE__ */ (0,
|
|
17117
|
-
schmal && /* @__PURE__ */ (0,
|
|
17551
|
+
zeigeDetail && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "szenen-elements__detail", "data-testid": "elemente-detail-spalte", children: [
|
|
17552
|
+
schmal && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
17118
17553
|
"button",
|
|
17119
17554
|
{
|
|
17120
17555
|
type: "button",
|
|
@@ -17124,7 +17559,7 @@ var ElementsArea = ({
|
|
|
17124
17559
|
children: "\u2190 Zur\xFCck zur Liste"
|
|
17125
17560
|
}
|
|
17126
17561
|
),
|
|
17127
|
-
gewaehlt ? /* @__PURE__ */ (0,
|
|
17562
|
+
gewaehlt ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
|
|
17128
17563
|
ElementDetail,
|
|
17129
17564
|
{
|
|
17130
17565
|
port,
|
|
@@ -17133,7 +17568,7 @@ var ElementsArea = ({
|
|
|
17133
17568
|
author,
|
|
17134
17569
|
onChanged: neuLaden
|
|
17135
17570
|
}
|
|
17136
|
-
) : /* @__PURE__ */ (0,
|
|
17571
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("p", { className: "szenen-elements__empty-detail", "data-testid": "keine-auswahl", children: "Nichts ausgew\xE4hlt. Ein Eintrag aus der Liste \xF6ffnet die Bearbeitung." })
|
|
17137
17572
|
] })
|
|
17138
17573
|
]
|
|
17139
17574
|
}
|
|
@@ -17141,17 +17576,17 @@ var ElementsArea = ({
|
|
|
17141
17576
|
};
|
|
17142
17577
|
|
|
17143
17578
|
// src/features/szenen/areas/SceneArea.tsx
|
|
17144
|
-
var
|
|
17145
|
-
var SceneArea = ({ port, contextId }) => /* @__PURE__ */ (0,
|
|
17146
|
-
/* @__PURE__ */ (0,
|
|
17147
|
-
/* @__PURE__ */ (0,
|
|
17579
|
+
var import_jsx_runtime12 = require("react/jsx-runtime");
|
|
17580
|
+
var SceneArea = ({ port, contextId }) => /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "szenen-scene", "data-testid": "bereich-szene", children: [
|
|
17581
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: "szenen-area__lead", children: "Szenen dieses Kontexts. Auswahl \xF6ffnet die Bearbeitung der Nodes und Beziehungen." }),
|
|
17582
|
+
/* @__PURE__ */ (0, import_jsx_runtime12.jsx)(ElementsArea, { port, contextId, restrictToTypes: ["scene"] })
|
|
17148
17583
|
] });
|
|
17149
17584
|
|
|
17150
17585
|
// src/features/szenen/areas/SetupArea.tsx
|
|
17151
|
-
var
|
|
17152
|
-
var SetupArea = ({ port, contextId }) => /* @__PURE__ */ (0,
|
|
17153
|
-
/* @__PURE__ */ (0,
|
|
17154
|
-
/* @__PURE__ */ (0,
|
|
17586
|
+
var import_jsx_runtime13 = require("react/jsx-runtime");
|
|
17587
|
+
var SetupArea = ({ port, contextId }) => /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "szenen-setup", "data-testid": "bereich-setup", children: [
|
|
17588
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "szenen-area__lead", children: "Bildaufbauten, Kameras und Stile dieses Kontexts." }),
|
|
17589
|
+
/* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
|
|
17155
17590
|
ElementsArea,
|
|
17156
17591
|
{
|
|
17157
17592
|
port,
|
|
@@ -17164,10 +17599,10 @@ var SetupArea = ({ port, contextId }) => /* @__PURE__ */ (0, import_jsx_runtime1
|
|
|
17164
17599
|
] });
|
|
17165
17600
|
|
|
17166
17601
|
// src/features/szenen/areas/ShotArea.tsx
|
|
17167
|
-
var
|
|
17168
|
-
var ShotArea = ({ port, contextId }) => /* @__PURE__ */ (0,
|
|
17169
|
-
/* @__PURE__ */ (0,
|
|
17170
|
-
/* @__PURE__ */ (0,
|
|
17602
|
+
var import_jsx_runtime14 = require("react/jsx-runtime");
|
|
17603
|
+
var ShotArea = ({ port, contextId }) => /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "szenen-shot", "data-testid": "bereich-shot", children: [
|
|
17604
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)("p", { className: "szenen-area__lead", children: "Prompts dieses Kontexts. Auswahl zeigt Runden und startet Prompt-L\xE4ufe." }),
|
|
17605
|
+
/* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
|
|
17171
17606
|
ElementsArea,
|
|
17172
17607
|
{
|
|
17173
17608
|
port,
|
|
@@ -17180,21 +17615,21 @@ var ShotArea = ({ port, contextId }) => /* @__PURE__ */ (0, import_jsx_runtime13
|
|
|
17180
17615
|
] });
|
|
17181
17616
|
|
|
17182
17617
|
// src/features/szenen/areas/MediaArea.tsx
|
|
17183
|
-
var
|
|
17184
|
-
var
|
|
17618
|
+
var import_react13 = require("react");
|
|
17619
|
+
var import_jsx_runtime15 = require("react/jsx-runtime");
|
|
17185
17620
|
var leer = async () => ({ kind: "ok", value: [] });
|
|
17186
17621
|
var MediaArea = ({ port }) => {
|
|
17187
17622
|
const media = port.media;
|
|
17188
|
-
const [versionInput, setVersionInput] = (0,
|
|
17189
|
-
const [versionId, setVersionId] = (0,
|
|
17190
|
-
const [itemInput, setItemInput] = (0,
|
|
17191
|
-
const [itemId, setItemId] = (0,
|
|
17192
|
-
const [assetId, setAssetId] = (0,
|
|
17193
|
-
const [role, setRole] = (0,
|
|
17194
|
-
const [position, setPosition] = (0,
|
|
17195
|
-
const [notiz, setNotiz] = (0,
|
|
17196
|
-
const [busy, setBusy] = (0,
|
|
17197
|
-
const [refresh, setRefresh] = (0,
|
|
17623
|
+
const [versionInput, setVersionInput] = (0, import_react13.useState)("");
|
|
17624
|
+
const [versionId, setVersionId] = (0, import_react13.useState)("");
|
|
17625
|
+
const [itemInput, setItemInput] = (0, import_react13.useState)("");
|
|
17626
|
+
const [itemId, setItemId] = (0, import_react13.useState)("");
|
|
17627
|
+
const [assetId, setAssetId] = (0, import_react13.useState)("");
|
|
17628
|
+
const [role, setRole] = (0, import_react13.useState)("reference");
|
|
17629
|
+
const [position, setPosition] = (0, import_react13.useState)("0");
|
|
17630
|
+
const [notiz, setNotiz] = (0, import_react13.useState)(null);
|
|
17631
|
+
const [busy, setBusy] = (0, import_react13.useState)(false);
|
|
17632
|
+
const [refresh, setRefresh] = (0, import_react13.useState)(0);
|
|
17198
17633
|
const [versionPhase] = usePortQuery(
|
|
17199
17634
|
() => versionId ? media.listVersionMedia(versionId) : leer(),
|
|
17200
17635
|
[media, versionId, refresh]
|
|
@@ -17240,145 +17675,145 @@ var MediaArea = ({ port }) => {
|
|
|
17240
17675
|
};
|
|
17241
17676
|
const versionMedien = versionPhase.status === "ready" ? versionPhase.value : [];
|
|
17242
17677
|
const itemMedien = itemPhase.status === "ready" ? itemPhase.value : [];
|
|
17243
|
-
return /* @__PURE__ */ (0,
|
|
17244
|
-
/* @__PURE__ */ (0,
|
|
17245
|
-
/* @__PURE__ */ (0,
|
|
17246
|
-
/* @__PURE__ */ (0,
|
|
17247
|
-
/* @__PURE__ */ (0,
|
|
17248
|
-
/* @__PURE__ */ (0,
|
|
17678
|
+
return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "szenen-media", "data-testid": "bereich-medien", children: [
|
|
17679
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { className: "szenen-area__lead", children: "Bereits vorhandene Medien-Assets einer Elementversion zuordnen. Hochgeladen wird hier nichts \u2014 Medien entstehen \xFCber den bestehenden Speicherweg aus Stufe 5." }),
|
|
17680
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("section", { children: [
|
|
17681
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("h3", { children: "Version" }),
|
|
17682
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "szenen-media__lookup", children: [
|
|
17683
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("label", { children: [
|
|
17249
17684
|
"Version-ID",
|
|
17250
|
-
/* @__PURE__ */ (0,
|
|
17685
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("input", { value: versionInput, onChange: (event) => setVersionInput(event.target.value) })
|
|
17251
17686
|
] }),
|
|
17252
|
-
/* @__PURE__ */ (0,
|
|
17687
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("button", { type: "button", onClick: () => setVersionId(versionInput.trim()), children: "Medien laden" })
|
|
17253
17688
|
] }),
|
|
17254
|
-
/* @__PURE__ */ (0,
|
|
17255
|
-
/* @__PURE__ */ (0,
|
|
17689
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "szenen-media__attach", children: [
|
|
17690
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("label", { children: [
|
|
17256
17691
|
"Asset-ID",
|
|
17257
|
-
/* @__PURE__ */ (0,
|
|
17692
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("input", { value: assetId, onChange: (event) => setAssetId(event.target.value) })
|
|
17258
17693
|
] }),
|
|
17259
|
-
/* @__PURE__ */ (0,
|
|
17694
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("label", { children: [
|
|
17260
17695
|
"Rolle",
|
|
17261
|
-
/* @__PURE__ */ (0,
|
|
17262
|
-
/* @__PURE__ */ (0,
|
|
17263
|
-
/* @__PURE__ */ (0,
|
|
17264
|
-
/* @__PURE__ */ (0,
|
|
17265
|
-
/* @__PURE__ */ (0,
|
|
17696
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("select", { value: role, onChange: (event) => setRole(event.target.value), children: [
|
|
17697
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("option", { value: "reference", children: "reference" }),
|
|
17698
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("option", { value: "mask", children: "mask" }),
|
|
17699
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("option", { value: "palette", children: "palette" }),
|
|
17700
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("option", { value: "example", children: "example" })
|
|
17266
17701
|
] })
|
|
17267
17702
|
] }),
|
|
17268
|
-
/* @__PURE__ */ (0,
|
|
17703
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("label", { children: [
|
|
17269
17704
|
"Position",
|
|
17270
|
-
/* @__PURE__ */ (0,
|
|
17705
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("input", { type: "number", min: "0", value: position, onChange: (event) => setPosition(event.target.value) })
|
|
17271
17706
|
] }),
|
|
17272
|
-
/* @__PURE__ */ (0,
|
|
17707
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("button", { type: "button", disabled: busy, onClick: zuordnen, children: "zuordnen" })
|
|
17273
17708
|
] }),
|
|
17274
|
-
versionPhase.status === "loading" && versionId && /* @__PURE__ */ (0,
|
|
17275
|
-
versionPhase.status === "error" && /* @__PURE__ */ (0,
|
|
17709
|
+
versionPhase.status === "loading" && versionId && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { children: "Versionsmedien werden geladen \u2026" }),
|
|
17710
|
+
versionPhase.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("p", { role: "alert", children: [
|
|
17276
17711
|
"Versionsmedien konnten nicht geladen werden: ",
|
|
17277
17712
|
versionPhase.message
|
|
17278
17713
|
] }),
|
|
17279
|
-
versionPhase.status === "ready" && versionId && versionMedien.length === 0 && /* @__PURE__ */ (0,
|
|
17714
|
+
versionPhase.status === "ready" && versionId && versionMedien.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("p", { children: [
|
|
17280
17715
|
"Version ",
|
|
17281
17716
|
versionId,
|
|
17282
17717
|
" hat keine Medien."
|
|
17283
17718
|
] }),
|
|
17284
|
-
/* @__PURE__ */ (0,
|
|
17285
|
-
/* @__PURE__ */ (0,
|
|
17286
|
-
/* @__PURE__ */ (0,
|
|
17719
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("ul", { className: "szenen-media__list", children: versionMedien.map((medium) => /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("li", { children: [
|
|
17720
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("code", { children: medium.assetId }),
|
|
17721
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { children: [
|
|
17287
17722
|
medium.role,
|
|
17288
17723
|
" \xB7 Position ",
|
|
17289
17724
|
medium.position
|
|
17290
17725
|
] }),
|
|
17291
|
-
medium.url && /* @__PURE__ */ (0,
|
|
17292
|
-
/* @__PURE__ */ (0,
|
|
17726
|
+
medium.url && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("a", { href: medium.url, target: "_blank", rel: "noreferrer", children: "\xF6ffnen" }),
|
|
17727
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("button", { type: "button", disabled: busy, onClick: () => entfernen(medium), children: "entfernen" })
|
|
17293
17728
|
] }, `${medium.assetId}:${medium.role}`)) })
|
|
17294
17729
|
] }),
|
|
17295
|
-
/* @__PURE__ */ (0,
|
|
17296
|
-
/* @__PURE__ */ (0,
|
|
17297
|
-
/* @__PURE__ */ (0,
|
|
17298
|
-
/* @__PURE__ */ (0,
|
|
17730
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("section", { children: [
|
|
17731
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("h3", { children: "Item-Medien" }),
|
|
17732
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "szenen-media__lookup", children: [
|
|
17733
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("label", { children: [
|
|
17299
17734
|
"Item-ID",
|
|
17300
|
-
/* @__PURE__ */ (0,
|
|
17735
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("input", { value: itemInput, onChange: (event) => setItemInput(event.target.value) })
|
|
17301
17736
|
] }),
|
|
17302
|
-
/* @__PURE__ */ (0,
|
|
17737
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("button", { type: "button", onClick: () => setItemId(itemInput.trim()), children: "Item-Medien laden" })
|
|
17303
17738
|
] }),
|
|
17304
|
-
itemPhase.status === "error" && /* @__PURE__ */ (0,
|
|
17739
|
+
itemPhase.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("p", { role: "alert", children: [
|
|
17305
17740
|
"Item-Medien konnten nicht geladen werden: ",
|
|
17306
17741
|
itemPhase.message
|
|
17307
17742
|
] }),
|
|
17308
|
-
/* @__PURE__ */ (0,
|
|
17309
|
-
/* @__PURE__ */ (0,
|
|
17310
|
-
/* @__PURE__ */ (0,
|
|
17743
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("ul", { className: "szenen-media__list", children: itemMedien.map((medium) => /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("li", { children: [
|
|
17744
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsx)("code", { children: medium.assetId }),
|
|
17745
|
+
/* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { children: [
|
|
17311
17746
|
medium.role,
|
|
17312
17747
|
" \xB7 Position ",
|
|
17313
17748
|
medium.position
|
|
17314
17749
|
] }),
|
|
17315
|
-
medium.url && /* @__PURE__ */ (0,
|
|
17750
|
+
medium.url && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("a", { href: medium.url, target: "_blank", rel: "noreferrer", children: "\xF6ffnen" })
|
|
17316
17751
|
] }, `${medium.assetId}:${medium.role}:${medium.position}`)) })
|
|
17317
17752
|
] }),
|
|
17318
|
-
notiz && /* @__PURE__ */ (0,
|
|
17753
|
+
notiz && /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("p", { role: notiz.tone === "error" ? "alert" : "status", "data-tone": notiz.tone, children: notiz.text })
|
|
17319
17754
|
] });
|
|
17320
17755
|
};
|
|
17321
17756
|
|
|
17322
17757
|
// src/features/szenen/areas/DeriveArea.tsx
|
|
17323
|
-
var
|
|
17758
|
+
var import_react16 = require("react");
|
|
17324
17759
|
|
|
17325
17760
|
// src/features/szenen/areas/RecoveryPanel.tsx
|
|
17326
|
-
var
|
|
17327
|
-
var
|
|
17761
|
+
var import_react14 = require("react");
|
|
17762
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
17328
17763
|
var Diagnosen = ({ befunde, testId }) => {
|
|
17329
17764
|
if (befunde.length === 0) return null;
|
|
17330
|
-
return /* @__PURE__ */ (0,
|
|
17331
|
-
/* @__PURE__ */ (0,
|
|
17332
|
-
d.proposal_type && /* @__PURE__ */ (0,
|
|
17765
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("ul", { className: "szenen-diagnose__liste", "data-testid": testId, children: befunde.map((d, i) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("li", { "data-severity": d.severity, children: [
|
|
17766
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("code", { children: d.code }),
|
|
17767
|
+
d.proposal_type && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
|
|
17333
17768
|
" \xB7 ",
|
|
17334
|
-
/* @__PURE__ */ (0,
|
|
17769
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("strong", { children: d.proposal_type })
|
|
17335
17770
|
] }),
|
|
17336
|
-
d.pointer && /* @__PURE__ */ (0,
|
|
17771
|
+
d.pointer && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
|
|
17337
17772
|
" \xB7 ",
|
|
17338
|
-
/* @__PURE__ */ (0,
|
|
17773
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("code", { children: d.pointer })
|
|
17339
17774
|
] }),
|
|
17340
|
-
typeof d.line === "number" && /* @__PURE__ */ (0,
|
|
17775
|
+
typeof d.line === "number" && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
|
|
17341
17776
|
" \xB7 Zeile ",
|
|
17342
17777
|
d.line,
|
|
17343
17778
|
", Spalte ",
|
|
17344
17779
|
d.column
|
|
17345
17780
|
] }),
|
|
17346
|
-
/* @__PURE__ */ (0,
|
|
17781
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { children: d.message })
|
|
17347
17782
|
] }, i)) });
|
|
17348
17783
|
};
|
|
17349
|
-
var Ausbeute = ({ bewertung }) => /* @__PURE__ */ (0,
|
|
17350
|
-
/* @__PURE__ */ (0,
|
|
17784
|
+
var Ausbeute = ({ bewertung }) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "szenen-diagnose", "data-testid": "rettung-ergebnis", children: [
|
|
17785
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("p", { "data-testid": "rettung-status", children: [
|
|
17351
17786
|
bewertung.status === "usable" && "Diese Fassung ist vollst\xE4ndig verwertbar.",
|
|
17352
17787
|
bewertung.status === "partial" && "Diese Fassung ist teilweise verwertbar \u2014 nicht alles kommt durch.",
|
|
17353
17788
|
bewertung.status === "invalid" && "Aus dieser Fassung ist nichts zu \xFCbernehmen."
|
|
17354
17789
|
] }),
|
|
17355
|
-
bewertung.proposals.length > 0 && /* @__PURE__ */ (0,
|
|
17356
|
-
/* @__PURE__ */ (0,
|
|
17357
|
-
/* @__PURE__ */ (0,
|
|
17358
|
-
/* @__PURE__ */ (0,
|
|
17790
|
+
bewertung.proposals.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
|
|
17791
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("h5", { children: "Verwertbar" }),
|
|
17792
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("ul", { "data-testid": "rettung-verwertbar", children: bewertung.proposals.map((p) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("li", { "data-testid": `rettung-verwertbar-${p.type}`, children: [
|
|
17793
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("strong", { children: p.type }),
|
|
17359
17794
|
" \u2014 ",
|
|
17360
17795
|
p.status === "complete" ? "vollst\xE4ndig" : "teilweise; vor dem Ver\xF6ffentlichen zu erg\xE4nzen",
|
|
17361
|
-
p.status === "partial" && p.gaps && p.gaps.length > 0 && /* @__PURE__ */ (0,
|
|
17362
|
-
/* @__PURE__ */ (0,
|
|
17796
|
+
p.status === "partial" && p.gaps && p.gaps.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("ul", { children: p.gaps.map((l, i) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("li", { children: [
|
|
17797
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("code", { children: l.pointer }),
|
|
17363
17798
|
": ",
|
|
17364
17799
|
l.reason
|
|
17365
17800
|
] }, i)) })
|
|
17366
17801
|
] }, p.type)) })
|
|
17367
17802
|
] }),
|
|
17368
|
-
bewertung.rejected.length > 0 && /* @__PURE__ */ (0,
|
|
17369
|
-
/* @__PURE__ */ (0,
|
|
17370
|
-
/* @__PURE__ */ (0,
|
|
17371
|
-
/* @__PURE__ */ (0,
|
|
17372
|
-
/* @__PURE__ */ (0,
|
|
17803
|
+
bewertung.rejected.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_jsx_runtime16.Fragment, { children: [
|
|
17804
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("h5", { children: "Nicht verwertbar" }),
|
|
17805
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("ul", { "data-testid": "rettung-abgelehnt", children: bewertung.rejected.map((r) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("li", { "data-testid": `rettung-abgelehnt-${r.type}`, children: [
|
|
17806
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("strong", { children: r.type }),
|
|
17807
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Diagnosen, { befunde: r.diagnostics, testId: `rettung-grund-${r.type}` })
|
|
17373
17808
|
] }, r.type)) })
|
|
17374
17809
|
] })
|
|
17375
17810
|
] });
|
|
17376
17811
|
var RecoveryPanel = ({ port, lauf }) => {
|
|
17377
|
-
const [arbeitskopie, setArbeitskopie] = (0,
|
|
17378
|
-
const [bewertung, setBewertung] = (0,
|
|
17379
|
-
const [gesichert, setGesichert] = (0,
|
|
17380
|
-
const [meldung, setMeldung] = (0,
|
|
17381
|
-
const [laeuft, setLaeuft] = (0,
|
|
17812
|
+
const [arbeitskopie, setArbeitskopie] = (0, import_react14.useState)(null);
|
|
17813
|
+
const [bewertung, setBewertung] = (0, import_react14.useState)(null);
|
|
17814
|
+
const [gesichert, setGesichert] = (0, import_react14.useState)(null);
|
|
17815
|
+
const [meldung, setMeldung] = (0, import_react14.useState)(null);
|
|
17816
|
+
const [laeuft, setLaeuft] = (0, import_react14.useState)(false);
|
|
17382
17817
|
if (!port.derivation) return null;
|
|
17383
17818
|
if (typeof lauf.raw_output !== "string" || lauf.raw_output.length === 0) return null;
|
|
17384
17819
|
const derivation = port.derivation;
|
|
@@ -17414,16 +17849,16 @@ var RecoveryPanel = ({ port, lauf }) => {
|
|
|
17414
17849
|
setLaeuft(false);
|
|
17415
17850
|
}
|
|
17416
17851
|
}
|
|
17417
|
-
return /* @__PURE__ */ (0,
|
|
17418
|
-
/* @__PURE__ */ (0,
|
|
17419
|
-
/* @__PURE__ */ (0,
|
|
17852
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("section", { className: "szenen-rettung", "data-testid": "rettung", children: [
|
|
17853
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("h4", { children: "Antwort retten" }),
|
|
17854
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("p", { className: "szenen-area__lead", children: [
|
|
17420
17855
|
"Der Lauf ist bezahlt und seine Antwort liegt vor. Sie l\xE4sst sich hier pr\xFCfen und korrigieren \u2014 ",
|
|
17421
|
-
/* @__PURE__ */ (0,
|
|
17856
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("strong", { children: "ohne" }),
|
|
17422
17857
|
" einen weiteren Modellaufruf. Das Original bleibt unver\xE4ndert."
|
|
17423
17858
|
] }),
|
|
17424
|
-
/* @__PURE__ */ (0,
|
|
17425
|
-
/* @__PURE__ */ (0,
|
|
17426
|
-
/* @__PURE__ */ (0,
|
|
17859
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("label", { className: "szenen-field", children: [
|
|
17860
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: "Original der Modellantwort (unver\xE4nderlich)" }),
|
|
17861
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
17427
17862
|
"textarea",
|
|
17428
17863
|
{
|
|
17429
17864
|
readOnly: true,
|
|
@@ -17434,12 +17869,12 @@ var RecoveryPanel = ({ port, lauf }) => {
|
|
|
17434
17869
|
}
|
|
17435
17870
|
)
|
|
17436
17871
|
] }),
|
|
17437
|
-
/* @__PURE__ */ (0,
|
|
17438
|
-
/* @__PURE__ */ (0,
|
|
17872
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("label", { className: "szenen-field", children: [
|
|
17873
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("span", { children: [
|
|
17439
17874
|
"Arbeitskopie",
|
|
17440
17875
|
bearbeitet ? " (bearbeitet)" : ""
|
|
17441
17876
|
] }),
|
|
17442
|
-
/* @__PURE__ */ (0,
|
|
17877
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
17443
17878
|
"textarea",
|
|
17444
17879
|
{
|
|
17445
17880
|
rows: 8,
|
|
@@ -17449,8 +17884,8 @@ var RecoveryPanel = ({ port, lauf }) => {
|
|
|
17449
17884
|
}
|
|
17450
17885
|
)
|
|
17451
17886
|
] }),
|
|
17452
|
-
/* @__PURE__ */ (0,
|
|
17453
|
-
/* @__PURE__ */ (0,
|
|
17887
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "szenen-rettung__aktionen", children: [
|
|
17888
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
17454
17889
|
"button",
|
|
17455
17890
|
{
|
|
17456
17891
|
type: "button",
|
|
@@ -17460,7 +17895,7 @@ var RecoveryPanel = ({ port, lauf }) => {
|
|
|
17460
17895
|
children: "Arbeitskopie pr\xFCfen (kein Modellaufruf)"
|
|
17461
17896
|
}
|
|
17462
17897
|
),
|
|
17463
|
-
/* @__PURE__ */ (0,
|
|
17898
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
17464
17899
|
"button",
|
|
17465
17900
|
{
|
|
17466
17901
|
type: "button",
|
|
@@ -17470,7 +17905,7 @@ var RecoveryPanel = ({ port, lauf }) => {
|
|
|
17470
17905
|
children: "Arbeitsfassung speichern"
|
|
17471
17906
|
}
|
|
17472
17907
|
),
|
|
17473
|
-
arbeitskopie !== null && /* @__PURE__ */ (0,
|
|
17908
|
+
arbeitskopie !== null && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
17474
17909
|
"button",
|
|
17475
17910
|
{
|
|
17476
17911
|
type: "button",
|
|
@@ -17485,15 +17920,15 @@ var RecoveryPanel = ({ port, lauf }) => {
|
|
|
17485
17920
|
}
|
|
17486
17921
|
)
|
|
17487
17922
|
] }),
|
|
17488
|
-
meldung && /* @__PURE__ */ (0,
|
|
17489
|
-
bewertung && /* @__PURE__ */ (0,
|
|
17490
|
-
bewertung && bewertung.diagnostics.length > 0 && /* @__PURE__ */ (0,
|
|
17491
|
-
/* @__PURE__ */ (0,
|
|
17492
|
-
/* @__PURE__ */ (0,
|
|
17923
|
+
meldung && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "szenen-error", role: "alert", "data-testid": "rettung-meldung", children: meldung }),
|
|
17924
|
+
bewertung && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Ausbeute, { bewertung }),
|
|
17925
|
+
bewertung && bewertung.diagnostics.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "szenen-diagnose", children: [
|
|
17926
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("h5", { children: "Befunde an dieser Fassung" }),
|
|
17927
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)(Diagnosen, { befunde: bewertung.diagnostics, testId: "rettung-befunde" })
|
|
17493
17928
|
] }),
|
|
17494
|
-
gesichert && /* @__PURE__ */ (0,
|
|
17929
|
+
gesichert && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("p", { "data-testid": "rettung-gesichert", children: [
|
|
17495
17930
|
"Gespeichert als Arbeitsfassung ",
|
|
17496
|
-
/* @__PURE__ */ (0,
|
|
17931
|
+
/* @__PURE__ */ (0, import_jsx_runtime16.jsx)("code", { children: gesichert.recovery_id }),
|
|
17497
17932
|
gesichert.edited ? " (bearbeitet)" : " (unver\xE4ndert)",
|
|
17498
17933
|
". Das Original des Laufs ist davon unber\xFChrt."
|
|
17499
17934
|
] })
|
|
@@ -17501,12 +17936,12 @@ var RecoveryPanel = ({ port, lauf }) => {
|
|
|
17501
17936
|
};
|
|
17502
17937
|
|
|
17503
17938
|
// src/features/szenen/areas/ChainActions.tsx
|
|
17504
|
-
var
|
|
17505
|
-
var
|
|
17939
|
+
var import_react15 = require("react");
|
|
17940
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
17506
17941
|
var ChainActions = ({ port, runId, recoveryId }) => {
|
|
17507
|
-
const [graph, setGraph] = (0,
|
|
17508
|
-
const [meldung, setMeldung] = (0,
|
|
17509
|
-
const [laeuft, setLaeuft] = (0,
|
|
17942
|
+
const [graph, setGraph] = (0, import_react15.useState)(null);
|
|
17943
|
+
const [meldung, setMeldung] = (0, import_react15.useState)(null);
|
|
17944
|
+
const [laeuft, setLaeuft] = (0, import_react15.useState)(false);
|
|
17510
17945
|
if (!port.derivation) return null;
|
|
17511
17946
|
const derivation = port.derivation;
|
|
17512
17947
|
const runs = port.runs;
|
|
@@ -17528,14 +17963,14 @@ var ChainActions = ({ port, runId, recoveryId }) => {
|
|
|
17528
17963
|
setLaeuft(false);
|
|
17529
17964
|
}
|
|
17530
17965
|
}
|
|
17531
|
-
return /* @__PURE__ */ (0,
|
|
17532
|
-
/* @__PURE__ */ (0,
|
|
17533
|
-
/* @__PURE__ */ (0,
|
|
17966
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("section", { className: "szenen-kette", "data-testid": "kette", children: [
|
|
17967
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h4", { children: "Draft-Kette" }),
|
|
17968
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("p", { className: "szenen-area__lead", children: [
|
|
17534
17969
|
"Szene, Aufbau und Shot entstehen als zusammenh\xE4ngende Entw\xFCrfe. Daraus l\xE4sst sich sofort ein Prompt erzeugen \u2014 ",
|
|
17535
|
-
/* @__PURE__ */ (0,
|
|
17970
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("strong", { children: "ohne" }),
|
|
17536
17971
|
" vorher etwas zu ver\xF6ffentlichen."
|
|
17537
17972
|
] }),
|
|
17538
|
-
!graph && /* @__PURE__ */ (0,
|
|
17973
|
+
!graph && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
17539
17974
|
"button",
|
|
17540
17975
|
{
|
|
17541
17976
|
type: "button",
|
|
@@ -17545,34 +17980,34 @@ var ChainActions = ({ port, runId, recoveryId }) => {
|
|
|
17545
17980
|
children: "Als Draft-Kette \xFCbernehmen"
|
|
17546
17981
|
}
|
|
17547
17982
|
),
|
|
17548
|
-
graph && /* @__PURE__ */ (0,
|
|
17549
|
-
/* @__PURE__ */ (0,
|
|
17983
|
+
graph && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { "data-testid": "kette-ergebnis", children: [
|
|
17984
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("p", { children: [
|
|
17550
17985
|
"Kette ",
|
|
17551
|
-
/* @__PURE__ */ (0,
|
|
17986
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("code", { children: graph.chainId }),
|
|
17552
17987
|
" angelegt. Kein Knoten ist ver\xF6ffentlicht."
|
|
17553
17988
|
] }),
|
|
17554
|
-
/* @__PURE__ */ (0,
|
|
17555
|
-
/* @__PURE__ */ (0,
|
|
17989
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("ul", { "data-testid": "kette-knoten", children: graph.created.map((k) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("li", { "data-testid": `kette-knoten-${k.type}`, children: [
|
|
17990
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("strong", { children: k.type }),
|
|
17556
17991
|
" \u2014 Element ",
|
|
17557
|
-
/* @__PURE__ */ (0,
|
|
17992
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("code", { children: k.elementId }),
|
|
17558
17993
|
", Entwurf ",
|
|
17559
|
-
/* @__PURE__ */ (0,
|
|
17994
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("code", { children: k.draftId }),
|
|
17560
17995
|
" (Revision ",
|
|
17561
17996
|
k.revision,
|
|
17562
17997
|
")"
|
|
17563
17998
|
] }, k.type)) }),
|
|
17564
|
-
graph.missing.length > 0 && /* @__PURE__ */ (0,
|
|
17565
|
-
/* @__PURE__ */ (0,
|
|
17566
|
-
/* @__PURE__ */ (0,
|
|
17567
|
-
/* @__PURE__ */ (0,
|
|
17999
|
+
graph.missing.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "szenen-diagnose", "data-testid": "kette-fehlend", children: [
|
|
18000
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("h5", { children: "Unvollst\xE4ndig erzeugt" }),
|
|
18001
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("ul", { children: graph.missing.map((m) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("li", { children: [
|
|
18002
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("strong", { children: m.type }),
|
|
17568
18003
|
": ",
|
|
17569
18004
|
m.reason
|
|
17570
18005
|
] }, m.type)) })
|
|
17571
18006
|
] })
|
|
17572
18007
|
] }),
|
|
17573
|
-
shotKnoten && /* @__PURE__ */ (0,
|
|
17574
|
-
/* @__PURE__ */ (0,
|
|
17575
|
-
/* @__PURE__ */ (0,
|
|
18008
|
+
shotKnoten && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
18009
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { children: 'Die Entw\xFCrfe lassen sich jetzt unter \u201E1 \xB7 Bausteine" \xE4ndern. Der Prompt-Lauf friert den Stand ein, den er dabei vorfindet \u2014 dieselbe Aktion steht auch am Shot selbst, unter \u201E4 \xB7 Prompt".' }),
|
|
18010
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
17576
18011
|
PromptStartAction,
|
|
17577
18012
|
{
|
|
17578
18013
|
port,
|
|
@@ -17580,20 +18015,20 @@ var ChainActions = ({ port, runId, recoveryId }) => {
|
|
|
17580
18015
|
}
|
|
17581
18016
|
)
|
|
17582
18017
|
] }),
|
|
17583
|
-
meldung && /* @__PURE__ */ (0,
|
|
18018
|
+
meldung && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "szenen-error", role: "alert", "data-testid": "kette-meldung", children: meldung })
|
|
17584
18019
|
] });
|
|
17585
18020
|
};
|
|
17586
18021
|
|
|
17587
18022
|
// src/features/szenen/areas/DeriveArea.tsx
|
|
17588
|
-
var
|
|
18023
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
17589
18024
|
var MODUS_TEXT = {
|
|
17590
18025
|
prompt: "Nur Prompt",
|
|
17591
18026
|
image: "Nur Bild",
|
|
17592
18027
|
image_prompt: "Bild und Prompt"
|
|
17593
18028
|
};
|
|
17594
18029
|
var BelegFeld = ({ titel, text, testId, offen }) => {
|
|
17595
|
-
const [kopiert, setKopiert] = (0,
|
|
17596
|
-
const feld = (0,
|
|
18030
|
+
const [kopiert, setKopiert] = (0, import_react16.useState)(false);
|
|
18031
|
+
const feld = (0, import_react16.useRef)(null);
|
|
17597
18032
|
async function kopieren() {
|
|
17598
18033
|
try {
|
|
17599
18034
|
await navigator.clipboard.writeText(text);
|
|
@@ -17603,15 +18038,15 @@ var BelegFeld = ({ titel, text, testId, offen }) => {
|
|
|
17603
18038
|
setKopiert(false);
|
|
17604
18039
|
}
|
|
17605
18040
|
}
|
|
17606
|
-
return /* @__PURE__ */ (0,
|
|
17607
|
-
/* @__PURE__ */ (0,
|
|
18041
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("details", { open: offen, "data-testid": `belege-${testId}`, children: [
|
|
18042
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("summary", { children: [
|
|
17608
18043
|
titel,
|
|
17609
18044
|
" (",
|
|
17610
18045
|
text.length,
|
|
17611
18046
|
" Zeichen)"
|
|
17612
18047
|
] }),
|
|
17613
|
-
/* @__PURE__ */ (0,
|
|
17614
|
-
/* @__PURE__ */ (0,
|
|
18048
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "szenen-beleg__kopf", children: [
|
|
18049
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
17615
18050
|
"button",
|
|
17616
18051
|
{
|
|
17617
18052
|
type: "button",
|
|
@@ -17620,9 +18055,9 @@ var BelegFeld = ({ titel, text, testId, offen }) => {
|
|
|
17620
18055
|
children: "Kopieren"
|
|
17621
18056
|
}
|
|
17622
18057
|
),
|
|
17623
|
-
kopiert && /* @__PURE__ */ (0,
|
|
18058
|
+
kopiert && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { "data-testid": `kopiert-${testId}`, children: "Kopiert." })
|
|
17624
18059
|
] }),
|
|
17625
|
-
/* @__PURE__ */ (0,
|
|
18060
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
17626
18061
|
"textarea",
|
|
17627
18062
|
{
|
|
17628
18063
|
ref: feld,
|
|
@@ -17636,8 +18071,8 @@ var BelegFeld = ({ titel, text, testId, offen }) => {
|
|
|
17636
18071
|
)
|
|
17637
18072
|
] });
|
|
17638
18073
|
};
|
|
17639
|
-
var Belege = ({ lauf }) => /* @__PURE__ */ (0,
|
|
17640
|
-
lauf.raw_output ? /* @__PURE__ */ (0,
|
|
18074
|
+
var Belege = ({ lauf }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "szenen-diagnose", "data-testid": "belege", children: [
|
|
18075
|
+
lauf.raw_output ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
17641
18076
|
BelegFeld,
|
|
17642
18077
|
{
|
|
17643
18078
|
titel: "Rohantwort des Modells",
|
|
@@ -17648,9 +18083,9 @@ var Belege = ({ lauf }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div",
|
|
|
17648
18083
|
) : (
|
|
17649
18084
|
/* Kein Text ist auch eine Auskunft: Der Provider hat nichts geliefert,
|
|
17650
18085
|
das Modell hat also nicht „falsch geantwortet". */
|
|
17651
|
-
/* @__PURE__ */ (0,
|
|
18086
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { "data-testid": "roh-antwort-fehlt", children: "Es gibt keine Rohantwort \u2014 der Lauf ist gescheitert, bevor ein Text ankam (etwa Netz, Sperre oder Providerfehler)." })
|
|
17652
18087
|
),
|
|
17653
|
-
/* @__PURE__ */ (0,
|
|
18088
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
17654
18089
|
BelegFeld,
|
|
17655
18090
|
{
|
|
17656
18091
|
titel: "Systemprompt dieses Laufs",
|
|
@@ -17662,18 +18097,18 @@ var Belege = ({ lauf }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div",
|
|
|
17662
18097
|
] });
|
|
17663
18098
|
var Herkunft = ({ lauf }) => {
|
|
17664
18099
|
if (!lauf.follows) return null;
|
|
17665
|
-
return /* @__PURE__ */ (0,
|
|
18100
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("p", { className: "szenen-run__herkunft", "data-testid": "folgt-auf", children: [
|
|
17666
18101
|
"Folgt auf Lauf ",
|
|
17667
|
-
/* @__PURE__ */ (0,
|
|
18102
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("code", { children: lauf.follows.run_id }),
|
|
17668
18103
|
".",
|
|
17669
18104
|
lauf.status === "succeeded" && " Im Folgelauf gelungen."
|
|
17670
18105
|
] });
|
|
17671
18106
|
};
|
|
17672
18107
|
var Widerspruch = ({ lauf }) => {
|
|
17673
18108
|
if (!lauf.reply) return null;
|
|
17674
|
-
return /* @__PURE__ */ (0,
|
|
17675
|
-
/* @__PURE__ */ (0,
|
|
17676
|
-
/* @__PURE__ */ (0,
|
|
18109
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "szenen-diagnose szenen-diagnose--antwort", "data-testid": "modell-antwort", children: [
|
|
18110
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h4", { children: "Das Modell antwortet auf die Beanstandung" }),
|
|
18111
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { children: lauf.reply })
|
|
17677
18112
|
] });
|
|
17678
18113
|
};
|
|
17679
18114
|
function readAsBase642(datei) {
|
|
@@ -17688,11 +18123,33 @@ function readAsBase642(datei) {
|
|
|
17688
18123
|
leser.readAsDataURL(datei);
|
|
17689
18124
|
});
|
|
17690
18125
|
}
|
|
18126
|
+
var ERSTE_KACHELN = 12;
|
|
18127
|
+
function useSichtbareKacheln(alle, wurzel) {
|
|
18128
|
+
const [gesehen, setGesehen] = (0, import_react16.useState)([]);
|
|
18129
|
+
const schluessel = alle.join(" ");
|
|
18130
|
+
(0, import_react16.useEffect)(() => {
|
|
18131
|
+
const ziel = wurzel.current;
|
|
18132
|
+
if (!ziel || typeof IntersectionObserver === "undefined") return void 0;
|
|
18133
|
+
const beobachter = new IntersectionObserver((eintraege) => {
|
|
18134
|
+
const neue = eintraege.filter((e) => e.isIntersecting).map((e) => e.target.dataset.mediaRef).filter((r) => Boolean(r));
|
|
18135
|
+
if (neue.length === 0) return;
|
|
18136
|
+
setGesehen((bisher) => [.../* @__PURE__ */ new Set([...bisher, ...neue])]);
|
|
18137
|
+
for (const e of eintraege) if (e.isIntersecting) beobachter.unobserve(e.target);
|
|
18138
|
+
}, { root: ziel, rootMargin: "200px" });
|
|
18139
|
+
ziel.querySelectorAll("[data-media-ref]").forEach((el) => beobachter.observe(el));
|
|
18140
|
+
return () => beobachter.disconnect();
|
|
18141
|
+
}, [wurzel, schluessel]);
|
|
18142
|
+
return (0, import_react16.useMemo)(
|
|
18143
|
+
() => [.../* @__PURE__ */ new Set([...alle.slice(0, ERSTE_KACHELN), ...gesehen])],
|
|
18144
|
+
[schluessel, gesehen]
|
|
18145
|
+
);
|
|
18146
|
+
}
|
|
17691
18147
|
function useVorschauen(port, mediaRefs) {
|
|
17692
|
-
const [
|
|
17693
|
-
const gehalten = (0,
|
|
18148
|
+
const [stand, setStand] = (0, import_react16.useState)(() => ({ quellen: /* @__PURE__ */ new Map(), gescheitert: /* @__PURE__ */ new Set() }));
|
|
18149
|
+
const gehalten = (0, import_react16.useRef)(/* @__PURE__ */ new Map());
|
|
18150
|
+
const ohneBild = (0, import_react16.useRef)(/* @__PURE__ */ new Set());
|
|
17694
18151
|
const schluessel = mediaRefs.join(" ");
|
|
17695
|
-
(0,
|
|
18152
|
+
(0, import_react16.useEffect)(() => {
|
|
17696
18153
|
const bestand = port.imageLibrary;
|
|
17697
18154
|
if (!bestand?.loadPreview) return void 0;
|
|
17698
18155
|
const refs = schluessel ? schluessel.split(" ") : [];
|
|
@@ -17701,53 +18158,67 @@ function useVorschauen(port, mediaRefs) {
|
|
|
17701
18158
|
bestand,
|
|
17702
18159
|
refs,
|
|
17703
18160
|
(mediaRef, quelle) => {
|
|
17704
|
-
gehalten.current.set(mediaRef, quelle);
|
|
17705
|
-
|
|
18161
|
+
if (quelle) gehalten.current.set(mediaRef, quelle);
|
|
18162
|
+
else ohneBild.current.add(mediaRef);
|
|
18163
|
+
setStand({
|
|
18164
|
+
quellen: new Map(gehalten.current),
|
|
18165
|
+
gescheitert: new Set(ohneBild.current)
|
|
18166
|
+
});
|
|
17706
18167
|
},
|
|
17707
|
-
{
|
|
18168
|
+
{
|
|
18169
|
+
parallel: 4,
|
|
18170
|
+
hat: (ref) => gehalten.current.has(ref) || ohneBild.current.has(ref),
|
|
18171
|
+
lauf,
|
|
18172
|
+
// Ein Fehlschlag ist eine Auskunft, kein Grund weiterzuprobieren:
|
|
18173
|
+
// Die Kachel bekommt einen Platzhalter, das Werk bleibt wählbar.
|
|
18174
|
+
gescheitert: (ref) => {
|
|
18175
|
+
ohneBild.current.add(ref);
|
|
18176
|
+
setStand({
|
|
18177
|
+
quellen: new Map(gehalten.current),
|
|
18178
|
+
gescheitert: new Set(ohneBild.current)
|
|
18179
|
+
});
|
|
18180
|
+
}
|
|
18181
|
+
}
|
|
17708
18182
|
);
|
|
17709
18183
|
return () => {
|
|
17710
18184
|
lauf.abgebrochen = true;
|
|
17711
18185
|
};
|
|
17712
18186
|
}, [port, schluessel]);
|
|
17713
|
-
return
|
|
18187
|
+
return stand;
|
|
17714
18188
|
}
|
|
17715
|
-
var Kachel = ({ quelle, alt }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "szenen-bildkachel", children: quelle ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("img", { src: quelle, alt, loading: "lazy" }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "szenen-bildkachel__leer", "aria-hidden": "true" }) });
|
|
17716
18189
|
var BildWaehler = ({ port, gewaehlt, onWaehlen, onEntfernen }) => {
|
|
17717
|
-
const [suche, setSuche] = (0,
|
|
17718
|
-
const [
|
|
18190
|
+
const [suche, setSuche] = (0, import_react16.useState)("");
|
|
18191
|
+
const [fokus, setFokus] = (0, import_react16.useState)(null);
|
|
18192
|
+
const browser = (0, import_react16.useRef)(null);
|
|
17719
18193
|
const [items] = usePortQuery(
|
|
17720
18194
|
() => port.imageLibrary.listItems({ search: suche.trim() || void 0, limit: 60 }),
|
|
17721
18195
|
[port, suche]
|
|
17722
18196
|
);
|
|
17723
|
-
const
|
|
17724
|
-
const
|
|
17725
|
-
|
|
17726
|
-
|
|
17727
|
-
|
|
17728
|
-
|
|
18197
|
+
const werke = items.status === "ready" ? items.value : [];
|
|
18198
|
+
const werk = werke.find((i) => i.itemRef === fokus) ?? null;
|
|
18199
|
+
const deckbilder = (0, import_react16.useMemo)(
|
|
18200
|
+
() => werke.map((i) => i.images[0]?.mediaRef).filter((r) => Boolean(r)),
|
|
18201
|
+
[werke]
|
|
18202
|
+
);
|
|
18203
|
+
const sichtbareDeckbilder = useSichtbareKacheln(deckbilder, browser);
|
|
18204
|
+
const anzufordern = (0, import_react16.useMemo)(() => [.../* @__PURE__ */ new Set([
|
|
18205
|
+
...sichtbareDeckbilder,
|
|
18206
|
+
...werk ? werk.images.map((b) => b.mediaRef) : [],
|
|
18207
|
+
...gewaehlt.map((b) => b.mediaRef)
|
|
18208
|
+
])], [sichtbareDeckbilder, werk, gewaehlt]);
|
|
18209
|
+
const { quellen, gescheitert } = useVorschauen(port, anzufordern);
|
|
17729
18210
|
const quelleVon = (bild) => bild.thumbUrl || quellen.get(bild.mediaRef) || null;
|
|
17730
|
-
|
|
17731
|
-
|
|
17732
|
-
|
|
17733
|
-
|
|
17734
|
-
|
|
17735
|
-
|
|
17736
|
-
|
|
17737
|
-
|
|
17738
|
-
|
|
17739
|
-
|
|
17740
|
-
|
|
17741
|
-
),
|
|
17742
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "szenen-bildwahl__werktitel", "data-testid": "bildwahl-werktitel", children: [
|
|
17743
|
-
werk.title,
|
|
17744
|
-
" \xB7 ",
|
|
17745
|
-
werk.images.length,
|
|
17746
|
-
" Bilder"
|
|
17747
|
-
] })
|
|
17748
|
-
] }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("label", { className: "szenen-field", children: [
|
|
17749
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: "Bild aus dem Bestand" }),
|
|
17750
|
-
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
18211
|
+
const istGewaehlt = (mediaRef) => gewaehlt.some((b) => b.mediaRef === mediaRef);
|
|
18212
|
+
function werkAntippen(item) {
|
|
18213
|
+
const deckbild = item.images[0];
|
|
18214
|
+
if (!deckbild) return;
|
|
18215
|
+
if (item.images.length === 1) onWaehlen(deckbild);
|
|
18216
|
+
else setFokus(item.itemRef === fokus ? null : item.itemRef);
|
|
18217
|
+
}
|
|
18218
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "szenen-bildwahl", "data-testid": "bildwahl", children: [
|
|
18219
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("label", { className: "szenen-field", children: [
|
|
18220
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: "Bild aus dem Bestand" }),
|
|
18221
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
17751
18222
|
"input",
|
|
17752
18223
|
{
|
|
17753
18224
|
type: "search",
|
|
@@ -17761,63 +18232,107 @@ var BildWaehler = ({ port, gewaehlt, onWaehlen, onEntfernen }) => {
|
|
|
17761
18232
|
}
|
|
17762
18233
|
)
|
|
17763
18234
|
] }),
|
|
17764
|
-
items.status === "loading" && /* @__PURE__ */ (0,
|
|
17765
|
-
items.status === "error" && /* @__PURE__ */ (0,
|
|
18235
|
+
items.status === "loading" && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { children: "Bilder werden geladen \u2026" }),
|
|
18236
|
+
items.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("p", { className: "szenen-error", role: "alert", children: [
|
|
17766
18237
|
"Der Bildbestand ist nicht lesbar: ",
|
|
17767
18238
|
items.message
|
|
17768
18239
|
] }),
|
|
17769
|
-
items.status === "ready" &&
|
|
17770
|
-
|
|
17771
|
-
"
|
|
18240
|
+
items.status === "ready" && werke.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "szenen-empty", "data-testid": "bildwahl-leer", children: "Zu dieser Suche gibt es kein Bild. Ohne Treffer bleibt der Upload." }),
|
|
18241
|
+
werke.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
18242
|
+
"div",
|
|
17772
18243
|
{
|
|
17773
|
-
|
|
17774
|
-
|
|
17775
|
-
|
|
17776
|
-
|
|
17777
|
-
|
|
17778
|
-
|
|
17779
|
-
|
|
17780
|
-
|
|
17781
|
-
|
|
17782
|
-
|
|
17783
|
-
|
|
17784
|
-
|
|
17785
|
-
|
|
17786
|
-
|
|
18244
|
+
className: "szenen-bildwahl__browser",
|
|
18245
|
+
ref: browser,
|
|
18246
|
+
"data-testid": "bildwahl-werke",
|
|
18247
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("ul", { className: "szenen-bildwahl__raster", children: werke.map((item) => {
|
|
18248
|
+
const deckbild = item.images[0];
|
|
18249
|
+
if (!deckbild) return null;
|
|
18250
|
+
const fokussiert = item.itemRef === fokus;
|
|
18251
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("li", { "data-media-ref": deckbild.mediaRef, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
18252
|
+
"button",
|
|
18253
|
+
{
|
|
18254
|
+
type: "button",
|
|
18255
|
+
className: `szenen-bildwahl__karte${fokussiert ? " is-fokus" : ""}`,
|
|
18256
|
+
onClick: () => werkAntippen(item),
|
|
18257
|
+
"aria-pressed": fokussiert,
|
|
18258
|
+
"data-testid": `item-waehlen-${item.itemRef}`,
|
|
18259
|
+
title: item.title,
|
|
18260
|
+
children: [
|
|
18261
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
18262
|
+
Kachel,
|
|
18263
|
+
{
|
|
18264
|
+
quelle: quelleVon(deckbild),
|
|
18265
|
+
alt: item.title,
|
|
18266
|
+
...gescheitert.has(deckbild.mediaRef) ? { leerText: "Vorschau fehlt" } : {}
|
|
18267
|
+
}
|
|
18268
|
+
),
|
|
18269
|
+
item.images.length > 1 && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
18270
|
+
"span",
|
|
18271
|
+
{
|
|
18272
|
+
className: "szenen-bildwahl__anzahl",
|
|
18273
|
+
"data-testid": `item-anzahl-${item.itemRef}`,
|
|
18274
|
+
children: [
|
|
18275
|
+
item.images.length,
|
|
18276
|
+
"x"
|
|
18277
|
+
]
|
|
18278
|
+
}
|
|
18279
|
+
),
|
|
18280
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "szenen-bildwahl__kacheltitel", children: item.title })
|
|
18281
|
+
]
|
|
18282
|
+
}
|
|
18283
|
+
) }, item.itemRef);
|
|
18284
|
+
}) })
|
|
17787
18285
|
}
|
|
17788
|
-
)
|
|
17789
|
-
|
|
17790
|
-
|
|
17791
|
-
|
|
17792
|
-
|
|
18286
|
+
),
|
|
18287
|
+
werk && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("section", { className: "szenen-bildwahl__inspector", "data-testid": "bildwahl-galerie", children: [
|
|
18288
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("header", { className: "szenen-bildwahl__inspektorkopf", children: [
|
|
18289
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "szenen-bildwahl__werktitel", "data-testid": "bildwahl-werktitel", children: [
|
|
18290
|
+
werk.title,
|
|
18291
|
+
" \xB7 ",
|
|
18292
|
+
werk.images.length,
|
|
18293
|
+
" Bilder"
|
|
18294
|
+
] }),
|
|
18295
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
18296
|
+
"button",
|
|
18297
|
+
{
|
|
18298
|
+
type: "button",
|
|
18299
|
+
className: "szenen-bildwahl__zurueck",
|
|
18300
|
+
onClick: () => setFokus(null),
|
|
18301
|
+
"data-testid": "bildwahl-zurueck",
|
|
18302
|
+
children: "Schliessen"
|
|
18303
|
+
}
|
|
18304
|
+
)
|
|
18305
|
+
] }),
|
|
18306
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("ul", { className: "szenen-bildwahl__streifen", children: werk.images.map((bild, position) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
17793
18307
|
"button",
|
|
17794
18308
|
{
|
|
17795
18309
|
type: "button",
|
|
17796
|
-
|
|
17797
|
-
|
|
17798
|
-
|
|
18310
|
+
className: `szenen-bildwahl__variante${istGewaehlt(bild.mediaRef) ? " is-gewaehlt" : ""}`,
|
|
18311
|
+
onClick: () => onWaehlen(bild),
|
|
18312
|
+
"aria-pressed": istGewaehlt(bild.mediaRef),
|
|
18313
|
+
"data-testid": `bild-waehlen-${bild.mediaRef}`,
|
|
18314
|
+
title: bild.title,
|
|
17799
18315
|
children: [
|
|
17800
|
-
/* @__PURE__ */ (0,
|
|
17801
|
-
|
|
17802
|
-
"span",
|
|
18316
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
18317
|
+
Kachel,
|
|
17803
18318
|
{
|
|
17804
|
-
|
|
17805
|
-
|
|
17806
|
-
|
|
17807
|
-
item.images.length,
|
|
17808
|
-
"x"
|
|
17809
|
-
]
|
|
18319
|
+
quelle: quelleVon(bild),
|
|
18320
|
+
alt: bild.title,
|
|
18321
|
+
...gescheitert.has(bild.mediaRef) ? { leerText: "Vorschau fehlt" } : {}
|
|
17810
18322
|
}
|
|
17811
18323
|
),
|
|
17812
|
-
/* @__PURE__ */ (0,
|
|
18324
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "szenen-bildwahl__nummer", children: [
|
|
18325
|
+
"#",
|
|
18326
|
+
position + 1
|
|
18327
|
+
] })
|
|
17813
18328
|
]
|
|
17814
18329
|
}
|
|
17815
|
-
) },
|
|
17816
|
-
|
|
17817
|
-
gewaehlt.length > 0 && /* @__PURE__ */ (0,
|
|
17818
|
-
/* @__PURE__ */ (0,
|
|
17819
|
-
/* @__PURE__ */ (0,
|
|
17820
|
-
/* @__PURE__ */ (0,
|
|
18330
|
+
) }, bild.mediaRef)) })
|
|
18331
|
+
] }),
|
|
18332
|
+
gewaehlt.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("ul", { className: "szenen-bildwahl__gewaehlt", "data-testid": "bilder-gewaehlt", children: gewaehlt.map((bild) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("li", { children: [
|
|
18333
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Kachel, { quelle: quelleVon(bild), alt: bild.title }),
|
|
18334
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "szenen-bildwahl__kacheltitel", children: bild.title }),
|
|
18335
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
17821
18336
|
"button",
|
|
17822
18337
|
{
|
|
17823
18338
|
type: "button",
|
|
@@ -17836,19 +18351,19 @@ async function digestOf(datei) {
|
|
|
17836
18351
|
return [...new Uint8Array(hash)].map((b) => b.toString(16).padStart(2, "0")).join("");
|
|
17837
18352
|
}
|
|
17838
18353
|
var DeriveArea = ({ port, contextId }) => {
|
|
17839
|
-
const [policyVersionId, setPolicyVersionId] = (0,
|
|
17840
|
-
const [modus, setModus] = (0,
|
|
17841
|
-
const [promptText, setPromptText] = (0,
|
|
17842
|
-
const [dateien, setDateien] = (0,
|
|
17843
|
-
const [bestandsbilder, setBestandsbilder] = (0,
|
|
17844
|
-
const [laeuft, setLaeuft] = (0,
|
|
17845
|
-
const [lauf, setLauf] = (0,
|
|
17846
|
-
const [meldung, setMeldung] = (0,
|
|
17847
|
-
const [uebernommen, setUebernommen] = (0,
|
|
17848
|
-
const [titel, setTitel] = (0,
|
|
17849
|
-
const [referenzen, setReferenzen] = (0,
|
|
17850
|
-
const [beanstandung, setBeanstandung] = (0,
|
|
17851
|
-
const [zusatz, setZusatz] = (0,
|
|
18354
|
+
const [policyVersionId, setPolicyVersionId] = (0, import_react16.useState)("");
|
|
18355
|
+
const [modus, setModus] = (0, import_react16.useState)("prompt");
|
|
18356
|
+
const [promptText, setPromptText] = (0, import_react16.useState)("");
|
|
18357
|
+
const [dateien, setDateien] = (0, import_react16.useState)([]);
|
|
18358
|
+
const [bestandsbilder, setBestandsbilder] = (0, import_react16.useState)([]);
|
|
18359
|
+
const [laeuft, setLaeuft] = (0, import_react16.useState)(false);
|
|
18360
|
+
const [lauf, setLauf] = (0, import_react16.useState)(null);
|
|
18361
|
+
const [meldung, setMeldung] = (0, import_react16.useState)(null);
|
|
18362
|
+
const [uebernommen, setUebernommen] = (0, import_react16.useState)({});
|
|
18363
|
+
const [titel, setTitel] = (0, import_react16.useState)({});
|
|
18364
|
+
const [referenzen, setReferenzen] = (0, import_react16.useState)({});
|
|
18365
|
+
const [beanstandung, setBeanstandung] = (0, import_react16.useState)(null);
|
|
18366
|
+
const [zusatz, setZusatz] = (0, import_react16.useState)("");
|
|
17852
18367
|
const [regeln] = usePortQuery(
|
|
17853
18368
|
() => port.derivation.listPolicies(contextId),
|
|
17854
18369
|
[port, contextId]
|
|
@@ -17929,12 +18444,12 @@ ${teile.map((t) => `- ${t}`).join("\n")}`;
|
|
|
17929
18444
|
const text = beanstandung ?? vorgabeBeanstandung(satz);
|
|
17930
18445
|
const bilderFehlen = satz.input.images.some((bild) => bild.kind !== "library");
|
|
17931
18446
|
const bereit = Boolean(text.trim()) && !bilderFehlen && !laeuft;
|
|
17932
|
-
return /* @__PURE__ */ (0,
|
|
17933
|
-
/* @__PURE__ */ (0,
|
|
17934
|
-
/* @__PURE__ */ (0,
|
|
17935
|
-
/* @__PURE__ */ (0,
|
|
17936
|
-
/* @__PURE__ */ (0,
|
|
17937
|
-
/* @__PURE__ */ (0,
|
|
18447
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "szenen-folgelauf", "data-testid": "folgelauf", children: [
|
|
18448
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h4", { children: "Korrektur- oder Erg\xE4nzungslauf" }),
|
|
18449
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "szenen-area__lead", children: satz.status === "failed" ? "Das Modell bekommt seine Antwort und die Beanstandung noch einmal vorgelegt." : "Das Ergebnis steht. Wenn etwas offen blieb, kann das Modell nachbessern." }),
|
|
18450
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("label", { className: "szenen-field", children: [
|
|
18451
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: "Beanstandung" }),
|
|
18452
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
17938
18453
|
"textarea",
|
|
17939
18454
|
{
|
|
17940
18455
|
rows: 4,
|
|
@@ -17944,9 +18459,9 @@ ${teile.map((t) => `- ${t}`).join("\n")}`;
|
|
|
17944
18459
|
}
|
|
17945
18460
|
)
|
|
17946
18461
|
] }),
|
|
17947
|
-
/* @__PURE__ */ (0,
|
|
17948
|
-
/* @__PURE__ */ (0,
|
|
17949
|
-
/* @__PURE__ */ (0,
|
|
18462
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("label", { className: "szenen-field", children: [
|
|
18463
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: "Zus\xE4tzliche Anweisung (optional)" }),
|
|
18464
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
17950
18465
|
"textarea",
|
|
17951
18466
|
{
|
|
17952
18467
|
rows: 2,
|
|
@@ -17957,8 +18472,8 @@ ${teile.map((t) => `- ${t}`).join("\n")}`;
|
|
|
17957
18472
|
}
|
|
17958
18473
|
)
|
|
17959
18474
|
] }),
|
|
17960
|
-
bilderFehlen && /* @__PURE__ */ (0,
|
|
17961
|
-
/* @__PURE__ */ (0,
|
|
18475
|
+
bilderFehlen && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "szenen-error", "data-testid": "folgelauf-ohne-bild", children: "Die Bilder dieses Laufs wurden nicht im Bestand abgelegt \u2014 er ist \xE4lter als diese M\xF6glichkeit. Ein Folgelauf ohne sie k\xF6nnte ein fehlendes Pflichtfeld nur erfinden. Starten Sie einen neuen Lauf mit dem Referenzbild; dessen Bilder bleiben dann erhalten." }),
|
|
18476
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
17962
18477
|
"button",
|
|
17963
18478
|
{
|
|
17964
18479
|
type: "button",
|
|
@@ -18000,19 +18515,19 @@ ${teile.map((t) => `- ${t}`).join("\n")}`;
|
|
|
18000
18515
|
setMeldung(ergebnis.message);
|
|
18001
18516
|
}
|
|
18002
18517
|
}
|
|
18003
|
-
return /* @__PURE__ */ (0,
|
|
18004
|
-
/* @__PURE__ */ (0,
|
|
18005
|
-
regeln.status === "loading" && /* @__PURE__ */ (0,
|
|
18006
|
-
regeln.status === "error" && /* @__PURE__ */ (0,
|
|
18518
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "szenen-derive", "data-testid": "bereich-rekonstruktion", children: [
|
|
18519
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "szenen-area__lead", children: "Aus einem Referenzbild, einem Prompt oder beidem einen Szenenentwurf vorschlagen lassen. Der Vorschlag wird nie ver\xF6ffentlicht \u2014 er wird ein Entwurf, den Sie pr\xFCfen und \xE4ndern." }),
|
|
18520
|
+
regeln.status === "loading" && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { children: "Regeln werden geladen \u2026" }),
|
|
18521
|
+
regeln.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("p", { className: "szenen-error", role: "alert", children: [
|
|
18007
18522
|
"Die Regeln konnten nicht gelesen werden: ",
|
|
18008
18523
|
regeln.message
|
|
18009
18524
|
] }),
|
|
18010
|
-
regeln.status === "ready" && regeln.value.length === 0 && /* @__PURE__ */ (0,
|
|
18525
|
+
regeln.status === "ready" && regeln.value.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("p", { className: "szenen-empty", children: [
|
|
18011
18526
|
"In diesem Kontext ist keine Rekonstruktionsregel (",
|
|
18012
|
-
/* @__PURE__ */ (0,
|
|
18527
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("code", { children: "scene_derivation_policy" }),
|
|
18013
18528
|
') ver\xF6ffentlicht. Ohne sie ist kein Lauf reproduzierbar \u2014 legen Sie hier eine unter \u201E1 \xB7 Bausteine" an, oder wechseln Sie in den Kontext, in dem Ihre Regel liegt. Regeln aus anderen Kontexten stehen hier bewusst nicht zur Auswahl.'
|
|
18014
18529
|
] }),
|
|
18015
|
-
regeln.status === "ready" && regeln.value.length > 0 && /* @__PURE__ */ (0,
|
|
18530
|
+
regeln.status === "ready" && regeln.value.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
18016
18531
|
"form",
|
|
18017
18532
|
{
|
|
18018
18533
|
className: "szenen-form",
|
|
@@ -18021,17 +18536,17 @@ ${teile.map((t) => `- ${t}`).join("\n")}`;
|
|
|
18021
18536
|
void starten();
|
|
18022
18537
|
},
|
|
18023
18538
|
children: [
|
|
18024
|
-
/* @__PURE__ */ (0,
|
|
18025
|
-
/* @__PURE__ */ (0,
|
|
18026
|
-
/* @__PURE__ */ (0,
|
|
18539
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("label", { className: "szenen-field", children: [
|
|
18540
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: "Regel" }),
|
|
18541
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
18027
18542
|
"select",
|
|
18028
18543
|
{
|
|
18029
18544
|
value: policyVersionId,
|
|
18030
18545
|
onChange: (e) => setPolicyVersionId(e.target.value),
|
|
18031
18546
|
"data-testid": "regel-auswahl",
|
|
18032
18547
|
children: [
|
|
18033
|
-
/* @__PURE__ */ (0,
|
|
18034
|
-
regeln.value.map((regel) => /* @__PURE__ */ (0,
|
|
18548
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: "", children: "\u2014 bitte w\xE4hlen \u2014" }),
|
|
18549
|
+
regeln.value.map((regel) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("option", { value: regel.versionId, children: [
|
|
18035
18550
|
regel.title,
|
|
18036
18551
|
" (",
|
|
18037
18552
|
regel.produces.join(", "),
|
|
@@ -18041,21 +18556,21 @@ ${teile.map((t) => `- ${t}`).join("\n")}`;
|
|
|
18041
18556
|
}
|
|
18042
18557
|
)
|
|
18043
18558
|
] }),
|
|
18044
|
-
/* @__PURE__ */ (0,
|
|
18045
|
-
/* @__PURE__ */ (0,
|
|
18046
|
-
/* @__PURE__ */ (0,
|
|
18559
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("label", { className: "szenen-field", children: [
|
|
18560
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: "Eingang" }),
|
|
18561
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
18047
18562
|
"select",
|
|
18048
18563
|
{
|
|
18049
18564
|
value: modus,
|
|
18050
18565
|
onChange: (e) => setModus(e.target.value),
|
|
18051
18566
|
"data-testid": "modus-auswahl",
|
|
18052
|
-
children: (gewaehlt ? gewaehlt.inputModes : ["prompt", "image", "image_prompt"]).map((m) => /* @__PURE__ */ (0,
|
|
18567
|
+
children: (gewaehlt ? gewaehlt.inputModes : ["prompt", "image", "image_prompt"]).map((m) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("option", { value: m, children: MODUS_TEXT[m] }, m))
|
|
18053
18568
|
}
|
|
18054
18569
|
)
|
|
18055
18570
|
] }),
|
|
18056
|
-
modus !== "image" && /* @__PURE__ */ (0,
|
|
18057
|
-
/* @__PURE__ */ (0,
|
|
18058
|
-
/* @__PURE__ */ (0,
|
|
18571
|
+
modus !== "image" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("label", { className: "szenen-field", children: [
|
|
18572
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: "Referenzprompt" }),
|
|
18573
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
18059
18574
|
"textarea",
|
|
18060
18575
|
{
|
|
18061
18576
|
value: promptText,
|
|
@@ -18065,8 +18580,8 @@ ${teile.map((t) => `- ${t}`).join("\n")}`;
|
|
|
18065
18580
|
}
|
|
18066
18581
|
)
|
|
18067
18582
|
] }),
|
|
18068
|
-
modus !== "prompt" && /* @__PURE__ */ (0,
|
|
18069
|
-
port.imageLibrary && /* @__PURE__ */ (0,
|
|
18583
|
+
modus !== "prompt" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
|
|
18584
|
+
port.imageLibrary && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
18070
18585
|
BildWaehler,
|
|
18071
18586
|
{
|
|
18072
18587
|
port,
|
|
@@ -18075,9 +18590,9 @@ ${teile.map((t) => `- ${t}`).join("\n")}`;
|
|
|
18075
18590
|
onEntfernen: (ref) => setBestandsbilder((v) => v.filter((b) => b.mediaRef !== ref))
|
|
18076
18591
|
}
|
|
18077
18592
|
),
|
|
18078
|
-
/* @__PURE__ */ (0,
|
|
18079
|
-
/* @__PURE__ */ (0,
|
|
18080
|
-
/* @__PURE__ */ (0,
|
|
18593
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("label", { className: "szenen-field", children: [
|
|
18594
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: port.imageLibrary ? "Oder hochladen" : "Referenzbild" }),
|
|
18595
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
18081
18596
|
"input",
|
|
18082
18597
|
{
|
|
18083
18598
|
type: "file",
|
|
@@ -18087,40 +18602,40 @@ ${teile.map((t) => `- ${t}`).join("\n")}`;
|
|
|
18087
18602
|
"data-testid": "bild-eingabe"
|
|
18088
18603
|
}
|
|
18089
18604
|
),
|
|
18090
|
-
port.imageLibrary && /* @__PURE__ */ (0,
|
|
18605
|
+
port.imageLibrary && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("small", { "data-testid": "upload-hinweis", children: "Hochgeladene Bilder werden im Bestand abgelegt \u2014 nur so ist sp\xE4ter ein Folgelauf damit m\xF6glich." })
|
|
18091
18606
|
] })
|
|
18092
18607
|
] }),
|
|
18093
|
-
/* @__PURE__ */ (0,
|
|
18608
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("button", { type: "submit", disabled: !gewaehlt || laeuft, "data-testid": "lauf-starten", children: laeuft ? "Rekonstruiert \u2026" : "Rekonstruieren" })
|
|
18094
18609
|
]
|
|
18095
18610
|
}
|
|
18096
18611
|
),
|
|
18097
|
-
meldung && /* @__PURE__ */ (0,
|
|
18098
|
-
lauf && lauf.status === "failed" && /* @__PURE__ */ (0,
|
|
18099
|
-
/* @__PURE__ */ (0,
|
|
18100
|
-
/* @__PURE__ */ (0,
|
|
18101
|
-
/* @__PURE__ */ (0,
|
|
18612
|
+
meldung && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "szenen-error", role: "alert", "data-testid": "derive-meldung", children: meldung }),
|
|
18613
|
+
lauf && lauf.status === "failed" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("section", { className: "szenen-run szenen-run--failed", "data-testid": "lauf-fehler", children: [
|
|
18614
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h3", { children: "Der Lauf ist gescheitert" }),
|
|
18615
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("p", { children: [
|
|
18616
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("strong", { children: lauf.failure?.class }),
|
|
18102
18617
|
" \u2014 ",
|
|
18103
18618
|
lauf.failure?.message
|
|
18104
18619
|
] }),
|
|
18105
|
-
lauf.failure?.diagnostics && lauf.failure.diagnostics.length > 0 && /* @__PURE__ */ (0,
|
|
18106
|
-
/* @__PURE__ */ (0,
|
|
18107
|
-
/* @__PURE__ */ (0,
|
|
18620
|
+
lauf.failure?.diagnostics && lauf.failure.diagnostics.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "szenen-diagnose", "data-testid": "lauf-diagnosen", children: [
|
|
18621
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h4", { children: "Befunde" }),
|
|
18622
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Diagnosen, { befunde: lauf.failure.diagnostics, testId: "lauf-befunde" })
|
|
18108
18623
|
] }),
|
|
18109
|
-
/* @__PURE__ */ (0,
|
|
18110
|
-
/* @__PURE__ */ (0,
|
|
18111
|
-
/* @__PURE__ */ (0,
|
|
18112
|
-
/* @__PURE__ */ (0,
|
|
18624
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Herkunft, { lauf }),
|
|
18625
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Widerspruch, { lauf }),
|
|
18626
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Belege, { lauf }),
|
|
18627
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(RecoveryPanel, { port, lauf }),
|
|
18113
18628
|
folgeblock(lauf)
|
|
18114
18629
|
] }),
|
|
18115
|
-
lauf && lauf.status === "succeeded" && /* @__PURE__ */ (0,
|
|
18116
|
-
/* @__PURE__ */ (0,
|
|
18117
|
-
/* @__PURE__ */ (0,
|
|
18118
|
-
/* @__PURE__ */ (0,
|
|
18119
|
-
/* @__PURE__ */ (0,
|
|
18120
|
-
lauf.conflicts.length > 0 && /* @__PURE__ */ (0,
|
|
18121
|
-
/* @__PURE__ */ (0,
|
|
18122
|
-
/* @__PURE__ */ (0,
|
|
18123
|
-
/* @__PURE__ */ (0,
|
|
18630
|
+
lauf && lauf.status === "succeeded" && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("section", { className: "szenen-run", "data-testid": "lauf-ergebnis", children: [
|
|
18631
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h3", { children: "Vorschlag" }),
|
|
18632
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Herkunft, { lauf }),
|
|
18633
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Widerspruch, { lauf }),
|
|
18634
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "szenen-run__feedback", children: lauf.feedback }),
|
|
18635
|
+
lauf.conflicts.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "szenen-diagnose szenen-diagnose--konflikt", "data-testid": "konflikte", children: [
|
|
18636
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h4", { children: "Widerspr\xFCche zwischen Bild und Prompt" }),
|
|
18637
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("ul", { children: lauf.conflicts.map((k, i) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("li", { children: [
|
|
18638
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("code", { children: k.field }),
|
|
18124
18639
|
": Bild sagt \u201E",
|
|
18125
18640
|
k.from_image,
|
|
18126
18641
|
'", Prompt sagt \u201E',
|
|
@@ -18128,31 +18643,31 @@ ${teile.map((t) => `- ${t}`).join("\n")}`;
|
|
|
18128
18643
|
'". Nichts davon wurde \xFCbernommen.'
|
|
18129
18644
|
] }, i)) })
|
|
18130
18645
|
] }),
|
|
18131
|
-
lauf.not_derivable.length > 0 && /* @__PURE__ */ (0,
|
|
18132
|
-
/* @__PURE__ */ (0,
|
|
18133
|
-
/* @__PURE__ */ (0,
|
|
18134
|
-
/* @__PURE__ */ (0,
|
|
18646
|
+
lauf.not_derivable.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "szenen-diagnose", "data-testid": "nicht-ableitbar", children: [
|
|
18647
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h4", { children: "Nicht ableitbar" }),
|
|
18648
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("ul", { children: lauf.not_derivable.map((n, i) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("li", { children: [
|
|
18649
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("code", { children: n.field }),
|
|
18135
18650
|
": ",
|
|
18136
18651
|
n.reason
|
|
18137
18652
|
] }, i)) })
|
|
18138
18653
|
] }),
|
|
18139
|
-
lauf.assumptions.length > 0 && /* @__PURE__ */ (0,
|
|
18140
|
-
/* @__PURE__ */ (0,
|
|
18141
|
-
/* @__PURE__ */ (0,
|
|
18654
|
+
lauf.assumptions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "szenen-diagnose", "data-testid": "annahmen", children: [
|
|
18655
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h4", { children: "Erschlossen, nicht belegt" }),
|
|
18656
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("ul", { children: lauf.assumptions.map((a, i) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("li", { children: a }, i)) })
|
|
18142
18657
|
] }),
|
|
18143
18658
|
lauf.proposals.map((vorschlag) => {
|
|
18144
18659
|
const bezug = REFERENCE_FIELD[vorschlag.type];
|
|
18145
18660
|
const fertig = uebernommen[vorschlag.type];
|
|
18146
|
-
return /* @__PURE__ */ (0,
|
|
18661
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
18147
18662
|
"article",
|
|
18148
18663
|
{
|
|
18149
18664
|
className: "szenen-proposal",
|
|
18150
18665
|
"data-testid": `vorschlag-${vorschlag.type}`,
|
|
18151
18666
|
children: [
|
|
18152
|
-
/* @__PURE__ */ (0,
|
|
18153
|
-
!fertig && /* @__PURE__ */ (0,
|
|
18154
|
-
/* @__PURE__ */ (0,
|
|
18155
|
-
/* @__PURE__ */ (0,
|
|
18667
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("h4", { children: vorschlag.type }),
|
|
18668
|
+
!fertig && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("label", { className: "szenen-field", children: [
|
|
18669
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: "Titel" }),
|
|
18670
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
18156
18671
|
"input",
|
|
18157
18672
|
{
|
|
18158
18673
|
type: "text",
|
|
@@ -18166,9 +18681,9 @@ ${teile.map((t) => `- ${t}`).join("\n")}`;
|
|
|
18166
18681
|
}
|
|
18167
18682
|
)
|
|
18168
18683
|
] }),
|
|
18169
|
-
/* @__PURE__ */ (0,
|
|
18170
|
-
bezug && !fertig && /* @__PURE__ */ (0,
|
|
18171
|
-
/* @__PURE__ */ (0,
|
|
18684
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("pre", { className: "szenen-proposal__payload", children: JSON.stringify(vorschlag.payload, null, 2) }),
|
|
18685
|
+
bezug && !fertig && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
|
|
18686
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
18172
18687
|
ReferencePicker,
|
|
18173
18688
|
{
|
|
18174
18689
|
port,
|
|
@@ -18182,30 +18697,30 @@ ${teile.map((t) => `- ${t}`).join("\n")}`;
|
|
|
18182
18697
|
}))
|
|
18183
18698
|
}
|
|
18184
18699
|
),
|
|
18185
|
-
referenzen[vorschlag.type] ? /* @__PURE__ */ (0,
|
|
18700
|
+
referenzen[vorschlag.type] ? /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("p", { "data-testid": `referenz-gewaehlt-${vorschlag.type}`, children: [
|
|
18186
18701
|
"Zeigt auf Version ",
|
|
18187
|
-
/* @__PURE__ */ (0,
|
|
18702
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("code", { children: referenzen[vorschlag.type] }),
|
|
18188
18703
|
"."
|
|
18189
18704
|
] }) : (
|
|
18190
18705
|
/* Der Grund steht **vor** der Handlung. Den Nutzer erst
|
|
18191
18706
|
auf einen Knopf drücken zu lassen, um ihm dann eine
|
|
18192
18707
|
Ablehnung zu zeigen, ist keine Auskunft. */
|
|
18193
|
-
/* @__PURE__ */ (0,
|
|
18708
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("p", { "data-testid": `referenz-fehlt-${vorschlag.type}`, children: [
|
|
18194
18709
|
"Diese ",
|
|
18195
|
-
/* @__PURE__ */ (0,
|
|
18710
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("strong", { children: "Einzel\xFCbernahme" }),
|
|
18196
18711
|
" braucht eine ver\xF6ffentlichte ",
|
|
18197
18712
|
bezug.refersTo,
|
|
18198
18713
|
"-Version, auf die der Entwurf zeigt (D-03) \u2014 sie ist der Weg in einen bestehenden, l\xE4ngst ver\xF6ffentlichten Zusammenhang. Wollen Sie aus diesem Lauf erst einmal einen Prompt ausprobieren, nehmen Sie unten die ",
|
|
18199
|
-
/* @__PURE__ */ (0,
|
|
18714
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("strong", { children: "Draft-Kette" }),
|
|
18200
18715
|
": Dort entstehen Szene, Aufbau und Shot zusammenh\xE4ngend, und es muss nichts ver\xF6ffentlicht werden."
|
|
18201
18716
|
] })
|
|
18202
18717
|
)
|
|
18203
18718
|
] }),
|
|
18204
|
-
fertig ? /* @__PURE__ */ (0,
|
|
18719
|
+
fertig ? /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("p", { className: "szenen-proposal__done", children: [
|
|
18205
18720
|
"Als Entwurf \xFCbernommen: ",
|
|
18206
|
-
/* @__PURE__ */ (0,
|
|
18721
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("code", { children: fertig }),
|
|
18207
18722
|
". Er ist noch nicht ver\xF6ffentlicht."
|
|
18208
|
-
] }) : /* @__PURE__ */ (0,
|
|
18723
|
+
] }) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
18209
18724
|
"button",
|
|
18210
18725
|
{
|
|
18211
18726
|
type: "button",
|
|
@@ -18220,39 +18735,39 @@ ${teile.map((t) => `- ${t}`).join("\n")}`;
|
|
|
18220
18735
|
vorschlag.type
|
|
18221
18736
|
);
|
|
18222
18737
|
}),
|
|
18223
|
-
/* @__PURE__ */ (0,
|
|
18224
|
-
/* @__PURE__ */ (0,
|
|
18738
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ChainActions, { port, runId: lauf.run_id }),
|
|
18739
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Belege, { lauf }),
|
|
18225
18740
|
folgeblock(lauf)
|
|
18226
18741
|
] })
|
|
18227
18742
|
] });
|
|
18228
18743
|
};
|
|
18229
18744
|
|
|
18230
18745
|
// src/features/szenen/SzenenView.tsx
|
|
18231
|
-
var
|
|
18746
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
18232
18747
|
var SzenenView = ({
|
|
18233
18748
|
port,
|
|
18234
18749
|
contextId = null,
|
|
18235
18750
|
initialArea,
|
|
18236
18751
|
onAreaChange
|
|
18237
18752
|
}) => {
|
|
18238
|
-
const bereiche = (0,
|
|
18239
|
-
const faehig = (0,
|
|
18240
|
-
const [aktiv, setAktiv] = (0,
|
|
18753
|
+
const bereiche = (0, import_react17.useMemo)(() => areasFor(port), [port]);
|
|
18754
|
+
const faehig = (0, import_react17.useMemo)(() => capabilitiesOf(port), [port]);
|
|
18755
|
+
const [aktiv, setAktiv] = (0, import_react17.useState)(() => resolveArea(port, initialArea));
|
|
18241
18756
|
const wechsle = (id) => {
|
|
18242
18757
|
setAktiv(id);
|
|
18243
18758
|
onAreaChange?.(id);
|
|
18244
18759
|
};
|
|
18245
18760
|
const aktuellerBereich = bereiche.find((b) => b.id === aktiv) ?? bereiche[0];
|
|
18246
|
-
return /* @__PURE__ */ (0,
|
|
18247
|
-
/* @__PURE__ */ (0,
|
|
18248
|
-
/* @__PURE__ */ (0,
|
|
18249
|
-
/* @__PURE__ */ (0,
|
|
18250
|
-
/* @__PURE__ */ (0,
|
|
18251
|
-
/* @__PURE__ */ (0,
|
|
18761
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "szenen-view", "data-testid": "szenen-view", children: [
|
|
18762
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("header", { className: "szenen-view__intro", children: [
|
|
18763
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { children: [
|
|
18764
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "szenen-view__eyebrow", children: "Vom Motiv zum Bild" }),
|
|
18765
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("h2", { children: "Bildprompt aus einer Szene" }),
|
|
18766
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { children: "Bausteine w\xE4hlen, Szene und Bildaufbau festlegen und daraus einen wiederholbaren Prompt erzeugen." })
|
|
18252
18767
|
] }),
|
|
18253
|
-
/* @__PURE__ */ (0,
|
|
18768
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "szenen-view__step", children: aktuellerBereich.title })
|
|
18254
18769
|
] }),
|
|
18255
|
-
/* @__PURE__ */ (0,
|
|
18770
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("nav", { className: "szenen-view__nav", "aria-label": "Szenen-Bereiche", children: bereiche.map((bereich) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
18256
18771
|
"button",
|
|
18257
18772
|
{
|
|
18258
18773
|
type: "button",
|
|
@@ -18266,9 +18781,9 @@ var SzenenView = ({
|
|
|
18266
18781
|
},
|
|
18267
18782
|
bereich.id
|
|
18268
18783
|
)) }),
|
|
18269
|
-
/* @__PURE__ */ (0,
|
|
18270
|
-
aktiv === "derive" && port.derivation && /* @__PURE__ */ (0,
|
|
18271
|
-
aktiv === "elements" && /* @__PURE__ */ (0,
|
|
18784
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("section", { className: "szenen-view__area", "aria-label": aktuellerBereich.title, children: [
|
|
18785
|
+
aktiv === "derive" && port.derivation && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(DeriveArea, { port, contextId }),
|
|
18786
|
+
aktiv === "elements" && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
18272
18787
|
ElementsArea,
|
|
18273
18788
|
{
|
|
18274
18789
|
port,
|
|
@@ -18278,15 +18793,15 @@ var SzenenView = ({
|
|
|
18278
18793
|
listTitle: "Bausteine"
|
|
18279
18794
|
}
|
|
18280
18795
|
),
|
|
18281
|
-
aktiv === "scene" && /* @__PURE__ */ (0,
|
|
18282
|
-
aktiv === "setup" && /* @__PURE__ */ (0,
|
|
18283
|
-
aktiv === "shot" && /* @__PURE__ */ (0,
|
|
18284
|
-
aktiv === "media" && port.media && /* @__PURE__ */ (0,
|
|
18796
|
+
aktiv === "scene" && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SceneArea, { port, contextId }),
|
|
18797
|
+
aktiv === "setup" && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SetupArea, { port, contextId }),
|
|
18798
|
+
aktiv === "shot" && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(ShotArea, { port, contextId }),
|
|
18799
|
+
aktiv === "media" && port.media && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(MediaArea, { port, contextId })
|
|
18285
18800
|
] }),
|
|
18286
|
-
(!faehig.saveRunAsItem || !faehig.media) && /* @__PURE__ */ (0,
|
|
18287
|
-
/* @__PURE__ */ (0,
|
|
18288
|
-
!faehig.saveRunAsItem && /* @__PURE__ */ (0,
|
|
18289
|
-
!faehig.media && /* @__PURE__ */ (0,
|
|
18801
|
+
(!faehig.saveRunAsItem || !faehig.media) && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("details", { className: "szenen-view__host-notes", children: [
|
|
18802
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("summary", { children: "Funktionen dieses Hosts" }),
|
|
18803
|
+
!faehig.saveRunAsItem && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "szenen-view__capability-note", "data-testid": "hinweis-kein-item", children: "Runden k\xF6nnen hier nicht als Library-Item gespeichert werden." }),
|
|
18804
|
+
!faehig.media && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "szenen-view__capability-note", "data-testid": "hinweis-keine-medien", children: "Referenzmedien werden in diesem Host nicht verwaltet." })
|
|
18290
18805
|
] })
|
|
18291
18806
|
] });
|
|
18292
18807
|
};
|