@contentful/experience-design-system-cli 2.37.1-dev-build-c3291210.0 → 2.37.1-dev-build-0d4be259.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/app.js +88 -94
- package/dist/index.js +88 -94
- package/dist/package.json +1 -1
- package/legacy/package.json +1 -1
- package/package.json +3 -3
package/dist/app.js
CHANGED
|
@@ -2018,7 +2018,7 @@ var init_cache_keys = __esm({
|
|
|
2018
2018
|
|
|
2019
2019
|
// packages/experience-design-system-cli/app.tsx
|
|
2020
2020
|
import { join as join25 } from "node:path";
|
|
2021
|
-
import { useEffect as
|
|
2021
|
+
import { useEffect as useEffect27, useState as useState33 } from "react";
|
|
2022
2022
|
|
|
2023
2023
|
// packages/experience-design-system-cli/src/tui/home/home.tsx
|
|
2024
2024
|
import { useEffect as useEffect2, useState as useState2 } from "react";
|
|
@@ -2240,14 +2240,9 @@ function HomeScreen({ onNavigate }) {
|
|
|
2240
2240
|
}
|
|
2241
2241
|
|
|
2242
2242
|
// packages/experience-design-system-cli/src/tui/import/PageContainer.tsx
|
|
2243
|
-
import {
|
|
2244
|
-
import { Box as Box2, Text as Text3, useInput as useInput2, useStdout as useStdout2 } from "ink";
|
|
2243
|
+
import { Box as Box2, Text as Text3, useInput as useInput2 } from "ink";
|
|
2245
2244
|
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
2246
2245
|
function ImportScreen({ exitCode, onDone }) {
|
|
2247
|
-
const { stdout } = useStdout2();
|
|
2248
|
-
useEffect3(() => {
|
|
2249
|
-
stdout.write("\x1B[H\x1B[0J");
|
|
2250
|
-
}, [stdout]);
|
|
2251
2246
|
useInput2((input, key) => {
|
|
2252
2247
|
if (key.return || key.escape || input === "q") {
|
|
2253
2248
|
onDone();
|
|
@@ -2455,7 +2450,7 @@ function TokenInputScreen({ onConfirm, onBack, initialPath = "" }) {
|
|
|
2455
2450
|
}
|
|
2456
2451
|
|
|
2457
2452
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/screen.tsx
|
|
2458
|
-
import { useEffect as
|
|
2453
|
+
import { useEffect as useEffect3, useMemo, useState as useState5 } from "react";
|
|
2459
2454
|
import { Box as Box5, Text as Text6 } from "ink";
|
|
2460
2455
|
|
|
2461
2456
|
// packages/experience-design-system-cli/src/tui/import/steps/03-path-validation/controls.ts
|
|
@@ -16616,7 +16611,7 @@ function PathValidationScreen({
|
|
|
16616
16611
|
}) {
|
|
16617
16612
|
const resolvedPath = useMemo(() => resolveUserPath(projectPath), [projectPath]);
|
|
16618
16613
|
const [scan, setScan] = useState5();
|
|
16619
|
-
|
|
16614
|
+
useEffect3(() => {
|
|
16620
16615
|
setScan(scanFiles(resolvedPath));
|
|
16621
16616
|
}, [resolvedPath]);
|
|
16622
16617
|
const phase = phaseOf(scan);
|
|
@@ -16984,10 +16979,10 @@ var PROGRESS_THEME = extendTheme(defaultTheme, {
|
|
|
16984
16979
|
});
|
|
16985
16980
|
|
|
16986
16981
|
// packages/experience-design-system-cli/src/tui/import/shared/running-step/use-elapsed.ts
|
|
16987
|
-
import { useEffect as
|
|
16982
|
+
import { useEffect as useEffect4, useState as useState7 } from "react";
|
|
16988
16983
|
function useElapsed() {
|
|
16989
16984
|
const [seconds, setSeconds] = useState7(0);
|
|
16990
|
-
|
|
16985
|
+
useEffect4(() => {
|
|
16991
16986
|
const timer = setInterval(() => setSeconds((current) => current + 1), 1e3);
|
|
16992
16987
|
return () => clearInterval(timer);
|
|
16993
16988
|
}, []);
|
|
@@ -17225,7 +17220,7 @@ async function updateSettings2(patch) {
|
|
|
17225
17220
|
}
|
|
17226
17221
|
|
|
17227
17222
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/use-extraction.ts
|
|
17228
|
-
import { useEffect as
|
|
17223
|
+
import { useEffect as useEffect5, useRef as useRef2, useState as useState8 } from "react";
|
|
17229
17224
|
|
|
17230
17225
|
// packages/experience-design-system-cli/src/tui/import/steps/06-extraction/run.ts
|
|
17231
17226
|
import { mkdir as mkdir7 } from "node:fs/promises";
|
|
@@ -17484,7 +17479,7 @@ async function resolveSelectionPrompt(overrides) {
|
|
|
17484
17479
|
function useExtraction(input) {
|
|
17485
17480
|
const [state, setState] = useState8();
|
|
17486
17481
|
const current = useRef2();
|
|
17487
|
-
|
|
17482
|
+
useEffect5(() => {
|
|
17488
17483
|
current.current = input;
|
|
17489
17484
|
if (!input) {
|
|
17490
17485
|
setState(void 0);
|
|
@@ -17514,7 +17509,7 @@ function useExtraction(input) {
|
|
|
17514
17509
|
import { Box as Box20, Text as Text22 } from "ink";
|
|
17515
17510
|
|
|
17516
17511
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/panels/added-column.tsx
|
|
17517
|
-
import
|
|
17512
|
+
import React6 from "react";
|
|
17518
17513
|
import { Box as Box11, Text as Text12 } from "ink";
|
|
17519
17514
|
import figures from "figures";
|
|
17520
17515
|
|
|
@@ -17715,7 +17710,7 @@ function AddedColumn(props) {
|
|
|
17715
17710
|
const aiFlagged = aiFlaggedByKey?.get(entry.name) === true;
|
|
17716
17711
|
const showSeparator = firstNonCycleIdx > 0 && i === firstNonCycleIdx;
|
|
17717
17712
|
const style = sideColumnLabelStyle({ isCycle: entry.isCycle, isSelected, focused });
|
|
17718
|
-
return /* @__PURE__ */ jsxs11(
|
|
17713
|
+
return /* @__PURE__ */ jsxs11(React6.Fragment, { children: [
|
|
17719
17714
|
showSeparator && /* @__PURE__ */ jsx14(Text12, { dimColor: true, children: "\u2500".repeat(Math.max(0, width - 2)) }),
|
|
17720
17715
|
/* @__PURE__ */ jsxs11(Box11, { children: [
|
|
17721
17716
|
isCursor ? /* @__PURE__ */ jsx14(Text12, { color: PALETTE2.info, bold: true, children: figures.pointer }) : /* @__PURE__ */ jsx14(Text12, { children: " " }),
|
|
@@ -18748,7 +18743,7 @@ function GroupedSidebar(props) {
|
|
|
18748
18743
|
}
|
|
18749
18744
|
|
|
18750
18745
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/components/HelpOverlay.tsx
|
|
18751
|
-
import
|
|
18746
|
+
import React7 from "react";
|
|
18752
18747
|
import { Box as Box18, Text as Text20 } from "ink";
|
|
18753
18748
|
|
|
18754
18749
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/hooks/useImmediateInput.ts
|
|
@@ -18825,8 +18820,8 @@ function useImmediateInput(handler, enabled = true) {
|
|
|
18825
18820
|
}
|
|
18826
18821
|
|
|
18827
18822
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/sidebar/hooks/use-terminal-size.ts
|
|
18828
|
-
import { useStdout as
|
|
18829
|
-
import { useEffect as
|
|
18823
|
+
import { useStdout as useStdout2 } from "ink";
|
|
18824
|
+
import { useEffect as useEffect6, useState as useState9 } from "react";
|
|
18830
18825
|
function readTerminalSize(stdout) {
|
|
18831
18826
|
return {
|
|
18832
18827
|
columns: stdout?.columns ?? 80,
|
|
@@ -18834,9 +18829,9 @@ function readTerminalSize(stdout) {
|
|
|
18834
18829
|
};
|
|
18835
18830
|
}
|
|
18836
18831
|
function useTerminalSize() {
|
|
18837
|
-
const { stdout } =
|
|
18832
|
+
const { stdout } = useStdout2();
|
|
18838
18833
|
const [size, setSize] = useState9(() => readTerminalSize(stdout));
|
|
18839
|
-
|
|
18834
|
+
useEffect6(() => {
|
|
18840
18835
|
const updateSize = () => setSize(readTerminalSize(stdout));
|
|
18841
18836
|
stdout?.on("resize", updateSize);
|
|
18842
18837
|
updateSize();
|
|
@@ -18870,7 +18865,7 @@ function HelpOverlay(props) {
|
|
|
18870
18865
|
overflowY: "hidden",
|
|
18871
18866
|
children: [
|
|
18872
18867
|
/* @__PURE__ */ jsx22(Text20, { bold: true, children: "\u2500".repeat(titleRule) + " Help " + "\u2500".repeat(titleRule) }),
|
|
18873
|
-
props.sections.map((section) => /* @__PURE__ */ jsxs19(
|
|
18868
|
+
props.sections.map((section) => /* @__PURE__ */ jsxs19(React7.Fragment, { children: [
|
|
18874
18869
|
/* @__PURE__ */ jsx22(Text20, { children: " " }),
|
|
18875
18870
|
/* @__PURE__ */ jsx22(Text20, { bold: true, children: section.title }),
|
|
18876
18871
|
section.entries.map((entry) => /* @__PURE__ */ jsx22(Text20, { children: entry.keys ? " " + entry.keys.padEnd(16) + " " + entry.label : " " + entry.label }, entry.keys + entry.label))
|
|
@@ -19019,7 +19014,7 @@ function createSidebarViewsHelpSection(includeBreaking) {
|
|
|
19019
19014
|
}
|
|
19020
19015
|
|
|
19021
19016
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/use-scope-gate.ts
|
|
19022
|
-
import { useEffect as
|
|
19017
|
+
import { useEffect as useEffect7, useMemo as useMemo2, useRef as useRef4, useState as useState12 } from "react";
|
|
19023
19018
|
|
|
19024
19019
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/graph/search-neighborhood.ts
|
|
19025
19020
|
function computeDirectNeighborhood(matches, graph) {
|
|
@@ -19703,7 +19698,7 @@ function useScopeGate({ components, onConfirm, onQuit }) {
|
|
|
19703
19698
|
return seed;
|
|
19704
19699
|
});
|
|
19705
19700
|
const seededGroupsRef = useRef4(closures.size > 0 || cycleParticipants.size > 0);
|
|
19706
|
-
|
|
19701
|
+
useEffect7(() => {
|
|
19707
19702
|
if (seededGroupsRef.current) return;
|
|
19708
19703
|
if (closures.size === 0 && cycleParticipants.size === 0) return;
|
|
19709
19704
|
seededGroupsRef.current = true;
|
|
@@ -19793,7 +19788,7 @@ function useScopeGate({ components, onConfirm, onQuit }) {
|
|
|
19793
19788
|
entryCount: 0
|
|
19794
19789
|
});
|
|
19795
19790
|
const panelLayout = useMemo2(() => computePanelLayout(visibleCount), [visibleCount]);
|
|
19796
|
-
|
|
19791
|
+
useEffect7(() => {
|
|
19797
19792
|
setNav((prev) => {
|
|
19798
19793
|
const maxIdx = Math.max(0, visibleRows.length - 1);
|
|
19799
19794
|
const nextCursor = Math.min(prev.cursor, maxIdx);
|
|
@@ -20261,7 +20256,7 @@ function ScopeGateView({ components, onConfirm, onQuit }) {
|
|
|
20261
20256
|
}
|
|
20262
20257
|
|
|
20263
20258
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/use-scope-gate-flow.ts
|
|
20264
|
-
import { useEffect as
|
|
20259
|
+
import { useEffect as useEffect8, useMemo as useMemo3, useRef as useRef5, useState as useState13 } from "react";
|
|
20265
20260
|
|
|
20266
20261
|
// packages/experience-design-system-cli/src/tui/import/steps/07-scope-gate/cache-check.ts
|
|
20267
20262
|
async function checkGenerationCache(input) {
|
|
@@ -20310,7 +20305,7 @@ function useScopeGateFlow(input, deps = realDeps2) {
|
|
|
20310
20305
|
const loaded = useMemo3(() => sessionId ? deps.load(sessionId) : void 0, [sessionId]);
|
|
20311
20306
|
const cacheCheck = useRef5(void 0);
|
|
20312
20307
|
const [confirmed, setConfirmed] = useState13();
|
|
20313
|
-
|
|
20308
|
+
useEffect8(() => {
|
|
20314
20309
|
if (!input || !loaded?.ok || cacheCheck.current) return;
|
|
20315
20310
|
cacheCheck.current = deps.checkCache(input.cache);
|
|
20316
20311
|
}, [input, loaded]);
|
|
@@ -20381,7 +20376,7 @@ function GenerationScreen({
|
|
|
20381
20376
|
}
|
|
20382
20377
|
|
|
20383
20378
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/use-generation.ts
|
|
20384
|
-
import { useEffect as
|
|
20379
|
+
import { useEffect as useEffect9, useRef as useRef6, useState as useState14 } from "react";
|
|
20385
20380
|
|
|
20386
20381
|
// packages/experience-design-system-cli/src/tui/import/steps/08-generation/run.ts
|
|
20387
20382
|
import { resolve as resolve23 } from "node:path";
|
|
@@ -20441,7 +20436,9 @@ async function runGeneration(input, onProgress, deps = realDeps3) {
|
|
|
20441
20436
|
onProgress(progress);
|
|
20442
20437
|
};
|
|
20443
20438
|
const accepted = input.decisions.accepted;
|
|
20439
|
+
update({ components: { done: 0, total: accepted.length, current: "Restoring cache..." } });
|
|
20444
20440
|
const handedOverNames = await input.cachedNames.catch(() => []);
|
|
20441
|
+
update({ components: { done: 0, total: accepted.length, current: "Starting generation..." } });
|
|
20445
20442
|
try {
|
|
20446
20443
|
await deps.saveDecisions({ sessionId: input.sessionId, decisions: input.decisions });
|
|
20447
20444
|
} catch (error) {
|
|
@@ -20547,7 +20544,7 @@ function applyProgressEvent2(event, previous, total) {
|
|
|
20547
20544
|
function useGeneration(input) {
|
|
20548
20545
|
const [state, setState] = useState14();
|
|
20549
20546
|
const current = useRef6();
|
|
20550
|
-
|
|
20547
|
+
useEffect9(() => {
|
|
20551
20548
|
current.current = input;
|
|
20552
20549
|
if (!input) {
|
|
20553
20550
|
setState(void 0);
|
|
@@ -20593,7 +20590,7 @@ function buildFlowStart(input) {
|
|
|
20593
20590
|
}
|
|
20594
20591
|
|
|
20595
20592
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/screen.tsx
|
|
20596
|
-
import { useEffect as
|
|
20593
|
+
import { useEffect as useEffect20, useRef as useRef12 } from "react";
|
|
20597
20594
|
import { Box as Box41 } from "ink";
|
|
20598
20595
|
|
|
20599
20596
|
// packages/experience-design-system-types/dist/src/cdf/validate.js
|
|
@@ -20940,7 +20937,7 @@ function PreviewValidationErrorScreen({
|
|
|
20940
20937
|
}
|
|
20941
20938
|
|
|
20942
20939
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/generate-review-step.tsx
|
|
20943
|
-
import { useCallback as useCallback5, useEffect as
|
|
20940
|
+
import { useCallback as useCallback5, useEffect as useEffect16, useMemo as useMemo4, useRef as useRef11, useState as useState22 } from "react";
|
|
20944
20941
|
import figures7 from "figures";
|
|
20945
20942
|
|
|
20946
20943
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/theme.ts
|
|
@@ -21212,7 +21209,7 @@ function enumerateCycleBreaks(cycle, components) {
|
|
|
21212
21209
|
import { Box as Box27, Text as Text30 } from "ink";
|
|
21213
21210
|
|
|
21214
21211
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/components/FieldEditor.tsx
|
|
21215
|
-
import
|
|
21212
|
+
import React8, { useEffect as useEffect10, useLayoutEffect as useLayoutEffect2, useState as useState15 } from "react";
|
|
21216
21213
|
import figures5 from "figures";
|
|
21217
21214
|
import { Box as Box21, measureElement, Text as Text23 } from "ink";
|
|
21218
21215
|
|
|
@@ -21923,9 +21920,9 @@ function FieldEditor({
|
|
|
21923
21920
|
const [editorState, setEditorState] = useState15(initialState);
|
|
21924
21921
|
const [parseErr] = useState15(parseError);
|
|
21925
21922
|
const [listScrollStart, setListScrollStart] = useState15(0);
|
|
21926
|
-
const initialFocusScrollApplied =
|
|
21923
|
+
const initialFocusScrollApplied = React8.useRef(false);
|
|
21927
21924
|
const [rowHeights, setRowHeights] = useState15({});
|
|
21928
|
-
const rowMeasureRefs =
|
|
21925
|
+
const rowMeasureRefs = React8.useRef(/* @__PURE__ */ new Map());
|
|
21929
21926
|
const initialFocus = (() => {
|
|
21930
21927
|
if (initialFocusTarget?.kind === "description") {
|
|
21931
21928
|
return {
|
|
@@ -22012,23 +22009,23 @@ function FieldEditor({
|
|
|
22012
22009
|
const [showHelp, setShowHelp] = useState15(false);
|
|
22013
22010
|
const props = editorState.props;
|
|
22014
22011
|
const slots = editorState.slots;
|
|
22015
|
-
const contentPropIndexes =
|
|
22012
|
+
const contentPropIndexes = React8.useMemo(
|
|
22016
22013
|
() => props.flatMap((prop, index) => prop.category === "content" ? [index] : []),
|
|
22017
22014
|
[props]
|
|
22018
22015
|
);
|
|
22019
|
-
const designPropIndexes =
|
|
22016
|
+
const designPropIndexes = React8.useMemo(
|
|
22020
22017
|
() => props.flatMap((prop, index) => prop.category === "design" ? [index] : []),
|
|
22021
22018
|
[props]
|
|
22022
22019
|
);
|
|
22023
|
-
const hiddenPropIndexes =
|
|
22020
|
+
const hiddenPropIndexes = React8.useMemo(
|
|
22024
22021
|
() => showHiddenProps ? props.flatMap((prop, index) => prop.category === "state" || prop.category === "unattached" ? [index] : []) : [],
|
|
22025
22022
|
[props, showHiddenProps]
|
|
22026
22023
|
);
|
|
22027
|
-
const visiblePropIndexes =
|
|
22024
|
+
const visiblePropIndexes = React8.useMemo(
|
|
22028
22025
|
() => [...contentPropIndexes, ...designPropIndexes, ...hiddenPropIndexes],
|
|
22029
22026
|
[contentPropIndexes, designPropIndexes, hiddenPropIndexes]
|
|
22030
22027
|
);
|
|
22031
|
-
const propGroups =
|
|
22028
|
+
const propGroups = React8.useMemo(
|
|
22032
22029
|
() => [
|
|
22033
22030
|
{
|
|
22034
22031
|
kind: "content",
|
|
@@ -22048,7 +22045,7 @@ function FieldEditor({
|
|
|
22048
22045
|
],
|
|
22049
22046
|
[contentPropIndexes, designPropIndexes, hiddenPropIndexes]
|
|
22050
22047
|
);
|
|
22051
|
-
const selectableRows =
|
|
22048
|
+
const selectableRows = React8.useMemo(
|
|
22052
22049
|
() => [
|
|
22053
22050
|
...contentPropIndexes.map((idx) => ({ kind: "prop", idx })),
|
|
22054
22051
|
...designPropIndexes.map((idx) => ({ kind: "prop", idx })),
|
|
@@ -22058,7 +22055,7 @@ function FieldEditor({
|
|
|
22058
22055
|
[contentPropIndexes, designPropIndexes, hiddenPropIndexes, slots]
|
|
22059
22056
|
);
|
|
22060
22057
|
const visiblePropPosition = visiblePropIndexes.indexOf(propIdx);
|
|
22061
|
-
const selectedSelectableIndex =
|
|
22058
|
+
const selectedSelectableIndex = React8.useMemo(
|
|
22062
22059
|
() => selectableRows.findIndex(
|
|
22063
22060
|
(row) => inSlots ? row.kind === "slot" && row.idx === slotIdx : row.kind === "prop" && row.idx === propIdx
|
|
22064
22061
|
),
|
|
@@ -22077,12 +22074,12 @@ function FieldEditor({
|
|
|
22077
22074
|
}
|
|
22078
22075
|
};
|
|
22079
22076
|
const textEntryActive = focusLevel === "field" && editingField && activeField === "description" || focusLevel === "field" && editingField && activeField === "default" && (editorState.props[propIdx]?.type === "string" || editorState.props[propIdx]?.type === "token") || editingValue != null;
|
|
22080
|
-
|
|
22077
|
+
React8.useEffect(() => {
|
|
22081
22078
|
onTextEntryActiveChange?.(textEntryActive);
|
|
22082
22079
|
}, [textEntryActive, onTextEntryActiveChange]);
|
|
22083
22080
|
const currentProp = props[propIdx] ?? null;
|
|
22084
22081
|
const currentSlot = slots[slotIdx] ?? null;
|
|
22085
|
-
|
|
22082
|
+
React8.useEffect(() => {
|
|
22086
22083
|
if (showHiddenProps || inSlots || inComponentDesc || visiblePropPosition >= 0) return;
|
|
22087
22084
|
if (visiblePropIndexes.length > 0) {
|
|
22088
22085
|
setPropIdx(visiblePropIndexes[0]);
|
|
@@ -22101,22 +22098,22 @@ function FieldEditor({
|
|
|
22101
22098
|
setEditorState(next);
|
|
22102
22099
|
onChange(serializeState(next, value));
|
|
22103
22100
|
};
|
|
22104
|
-
const canonicalize =
|
|
22101
|
+
const canonicalize = React8.useCallback((json) => {
|
|
22105
22102
|
try {
|
|
22106
22103
|
return JSON.stringify(JSON.parse(json));
|
|
22107
22104
|
} catch {
|
|
22108
22105
|
return `__unparseable__:${json}`;
|
|
22109
22106
|
}
|
|
22110
22107
|
}, []);
|
|
22111
|
-
const initialStateRef =
|
|
22108
|
+
const initialStateRef = React8.useRef(initialState);
|
|
22112
22109
|
const baselineCanonical = canonicalize(serializeState(initialStateRef.current, value));
|
|
22113
22110
|
const currentCanonical = canonicalize(serializeState(editorState, value));
|
|
22114
22111
|
const isDirty = currentCanonical !== baselineCanonical;
|
|
22115
|
-
|
|
22112
|
+
React8.useEffect(() => {
|
|
22116
22113
|
onDirtyChange?.(isDirty);
|
|
22117
22114
|
}, [isDirty, onDirtyChange]);
|
|
22118
|
-
const lastDiscardTriggerRef =
|
|
22119
|
-
|
|
22115
|
+
const lastDiscardTriggerRef = React8.useRef(discardTrigger);
|
|
22116
|
+
React8.useEffect(() => {
|
|
22120
22117
|
if (discardTrigger === void 0) return;
|
|
22121
22118
|
if (discardTrigger === lastDiscardTriggerRef.current) return;
|
|
22122
22119
|
lastDiscardTriggerRef.current = discardTrigger;
|
|
@@ -22715,7 +22712,7 @@ function FieldEditor({
|
|
|
22715
22712
|
}
|
|
22716
22713
|
return Math.max(start + 1, end2);
|
|
22717
22714
|
};
|
|
22718
|
-
|
|
22715
|
+
useEffect10(() => {
|
|
22719
22716
|
if (focusLevel === "field" || selectedRowIdx < 0) return;
|
|
22720
22717
|
setListScrollStart((previous) => {
|
|
22721
22718
|
if (initialFocusTarget && !initialFocusScrollApplied.current) {
|
|
@@ -23773,7 +23770,7 @@ function finalizeReviewSession(extractSessionId, components) {
|
|
|
23773
23770
|
}
|
|
23774
23771
|
|
|
23775
23772
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-review-session.ts
|
|
23776
|
-
import { useCallback as useCallback2, useEffect as
|
|
23773
|
+
import { useCallback as useCallback2, useEffect as useEffect12, useRef as useRef8, useState as useState17 } from "react";
|
|
23777
23774
|
|
|
23778
23775
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/history.ts
|
|
23779
23776
|
var DEFAULT_MAX_DEPTH = 50;
|
|
@@ -23829,7 +23826,7 @@ function createHistoryStack(seed, maxDepth = DEFAULT_MAX_DEPTH) {
|
|
|
23829
23826
|
}
|
|
23830
23827
|
|
|
23831
23828
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-finalize-preview.ts
|
|
23832
|
-
import { useEffect as
|
|
23829
|
+
import { useEffect as useEffect11, useRef as useRef7, useState as useState16 } from "react";
|
|
23833
23830
|
|
|
23834
23831
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/run-live-preview.ts
|
|
23835
23832
|
var TimeoutError = class extends Error {
|
|
@@ -23981,7 +23978,7 @@ function useFinalizePreview(opts) {
|
|
|
23981
23978
|
const [scrollOffset, setScrollOffset] = useState16(0);
|
|
23982
23979
|
const generationRef = useRef7(0);
|
|
23983
23980
|
const acceptedKey = [...acceptedKeys].sort().join("\0");
|
|
23984
|
-
|
|
23981
|
+
useEffect11(() => {
|
|
23985
23982
|
if (!open) {
|
|
23986
23983
|
setStatus("idle");
|
|
23987
23984
|
setRemoved([]);
|
|
@@ -24044,7 +24041,7 @@ function useReviewSession({
|
|
|
24044
24041
|
}));
|
|
24045
24042
|
return { result, catalog };
|
|
24046
24043
|
}, [loadSession, tokensPath]);
|
|
24047
|
-
|
|
24044
|
+
useEffect12(() => {
|
|
24048
24045
|
let disposed = false;
|
|
24049
24046
|
void (async () => {
|
|
24050
24047
|
try {
|
|
@@ -24097,7 +24094,7 @@ function useReviewSession({
|
|
|
24097
24094
|
function useReviewMetadata({ components, selectedIdx, extractSessionId }) {
|
|
24098
24095
|
const [reviewMetadata, setReviewMetadata] = useState17(null);
|
|
24099
24096
|
const [componentRationale, setComponentRationale] = useState17(null);
|
|
24100
|
-
|
|
24097
|
+
useEffect12(() => {
|
|
24101
24098
|
const current = components[selectedIdx];
|
|
24102
24099
|
if (!current) {
|
|
24103
24100
|
setReviewMetadata(null);
|
|
@@ -24129,7 +24126,7 @@ function useReviewMetadata({ components, selectedIdx, extractSessionId }) {
|
|
|
24129
24126
|
function useReviewHistory({ loading, components, createSnapshot, applySnapshot }) {
|
|
24130
24127
|
const historyRef = useRef8(null);
|
|
24131
24128
|
const historySeededRef = useRef8(false);
|
|
24132
|
-
|
|
24129
|
+
useEffect12(() => {
|
|
24133
24130
|
if (loading || historySeededRef.current) return;
|
|
24134
24131
|
historySeededRef.current = true;
|
|
24135
24132
|
historyRef.current = createHistoryStack(createSnapshot(components));
|
|
@@ -24180,7 +24177,7 @@ function useReviewFinalize({
|
|
|
24180
24177
|
}
|
|
24181
24178
|
|
|
24182
24179
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-review-editor.ts
|
|
24183
|
-
import { useEffect as
|
|
24180
|
+
import { useEffect as useEffect13, useRef as useRef9, useState as useState18 } from "react";
|
|
24184
24181
|
|
|
24185
24182
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/token-suggestions.ts
|
|
24186
24183
|
function collectTokenSuggestions(entry, availableTokens = []) {
|
|
@@ -24233,7 +24230,7 @@ function useReviewEditor({
|
|
|
24233
24230
|
const [tokenReviewEditSelection, setTokenReviewEditSelection] = useState18(/* @__PURE__ */ new Set());
|
|
24234
24231
|
const tokenReviewSuggestedRef = useRef9(/* @__PURE__ */ new Map());
|
|
24235
24232
|
const pendingGRef = useRef9(false);
|
|
24236
|
-
|
|
24233
|
+
useEffect13(() => {
|
|
24237
24234
|
setTokenReviewRow(0);
|
|
24238
24235
|
setTokenReviewEditing(false);
|
|
24239
24236
|
setTokenReviewEditCursor(0);
|
|
@@ -24637,7 +24634,7 @@ function handleJsonPanelInput(input, key, state) {
|
|
|
24637
24634
|
}
|
|
24638
24635
|
|
|
24639
24636
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-review-preview.ts
|
|
24640
|
-
import { useCallback as useCallback4, useEffect as
|
|
24637
|
+
import { useCallback as useCallback4, useEffect as useEffect15, useState as useState21 } from "react";
|
|
24641
24638
|
|
|
24642
24639
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/preview-annotations.ts
|
|
24643
24640
|
function applyPreviewAnnotations(preview, localNames) {
|
|
@@ -24672,7 +24669,7 @@ function applyPreviewAnnotations(preview, localNames) {
|
|
|
24672
24669
|
}
|
|
24673
24670
|
|
|
24674
24671
|
// packages/experience-design-system-cli/src/tui/import/steps/09-review/use-live-preview.ts
|
|
24675
|
-
import { useCallback as useCallback3, useEffect as
|
|
24672
|
+
import { useCallback as useCallback3, useEffect as useEffect14, useRef as useRef10, useState as useState20 } from "react";
|
|
24676
24673
|
var DEFAULT_DEBOUNCE_MS = 500;
|
|
24677
24674
|
function useLivePreview(opts) {
|
|
24678
24675
|
const debounceMs = opts.debounceMs ?? DEFAULT_DEBOUNCE_MS;
|
|
@@ -24683,14 +24680,14 @@ function useLivePreview(opts) {
|
|
|
24683
24680
|
const latestRef = useRef10(0);
|
|
24684
24681
|
const inflightRef = useRef10(0);
|
|
24685
24682
|
const optsRef = useRef10(opts);
|
|
24686
|
-
|
|
24683
|
+
useEffect14(() => {
|
|
24687
24684
|
optsRef.current = opts;
|
|
24688
24685
|
});
|
|
24689
24686
|
const disabledRef = useRef10(disabled);
|
|
24690
|
-
|
|
24687
|
+
useEffect14(() => {
|
|
24691
24688
|
disabledRef.current = disabled;
|
|
24692
24689
|
}, [disabled]);
|
|
24693
|
-
|
|
24690
|
+
useEffect14(() => {
|
|
24694
24691
|
return () => {
|
|
24695
24692
|
if (timerRef.current) {
|
|
24696
24693
|
clearTimeout(timerRef.current);
|
|
@@ -24804,13 +24801,13 @@ function useReviewPreview({
|
|
|
24804
24801
|
deleteAllComponents
|
|
24805
24802
|
});
|
|
24806
24803
|
const [spinnerTick, setSpinnerTick] = useState21(0);
|
|
24807
|
-
|
|
24804
|
+
useEffect15(() => {
|
|
24808
24805
|
if (livePreviewHook.status !== "running") return;
|
|
24809
24806
|
const id = setInterval(() => setSpinnerTick((tick) => tick + 1), 80);
|
|
24810
24807
|
return () => clearInterval(id);
|
|
24811
24808
|
}, [livePreviewHook.status]);
|
|
24812
24809
|
const livePreviewSpinner = SPINNER_FRAMES[spinnerTick % SPINNER_FRAMES.length];
|
|
24813
|
-
|
|
24810
|
+
useEffect15(() => {
|
|
24814
24811
|
if (loading) return;
|
|
24815
24812
|
if (!livePreview) return;
|
|
24816
24813
|
if (components.length === 0) return;
|
|
@@ -25230,7 +25227,7 @@ function GenerateReviewStepView({
|
|
|
25230
25227
|
[components]
|
|
25231
25228
|
);
|
|
25232
25229
|
const closures = useMemo4(() => computeAllClosures(componentGraph), [componentGraph]);
|
|
25233
|
-
|
|
25230
|
+
useEffect16(() => {
|
|
25234
25231
|
if (seededGroupsRef.current) return;
|
|
25235
25232
|
if (closures.size === 0 && slotCycles.length === 0) return;
|
|
25236
25233
|
seededGroupsRef.current = true;
|
|
@@ -25257,7 +25254,7 @@ function GenerateReviewStepView({
|
|
|
25257
25254
|
suggestedBreak: cycle.edges.length > 0 ? suggestCycleBreakEdge2(cycle, cycleView.pushBlocking) : null
|
|
25258
25255
|
}));
|
|
25259
25256
|
}, [slotCycles, cycleView]);
|
|
25260
|
-
|
|
25257
|
+
useEffect16(() => {
|
|
25261
25258
|
const decision = computeAutoRejectDecision({
|
|
25262
25259
|
loading,
|
|
25263
25260
|
autoRejectFired: autoRejectFiredRef.current,
|
|
@@ -25301,7 +25298,7 @@ function GenerateReviewStepView({
|
|
|
25301
25298
|
applySnapshot: applyHistorySnapshot
|
|
25302
25299
|
});
|
|
25303
25300
|
const autoRejectPushedRef = useRef11(false);
|
|
25304
|
-
|
|
25301
|
+
useEffect16(() => {
|
|
25305
25302
|
if (loading) return;
|
|
25306
25303
|
if (!historySeededRef.current) return;
|
|
25307
25304
|
if (!autoRejectFiredRef.current) return;
|
|
@@ -25385,7 +25382,7 @@ function GenerateReviewStepView({
|
|
|
25385
25382
|
const panelHeight = leftPanelHeight + 2;
|
|
25386
25383
|
const panelContentHeight = Math.max(1, panelHeight - 3);
|
|
25387
25384
|
const cycleViewportHeight = Math.max(1, panelHeight - 4);
|
|
25388
|
-
|
|
25385
|
+
useEffect16(() => {
|
|
25389
25386
|
if (selectableRowPositions.length === 0) return;
|
|
25390
25387
|
const cursorInRange = selectableRowPositions.includes(cursorRowIdx);
|
|
25391
25388
|
const maxScroll = Math.max(0, visibleRowsMemo.length - visibleCount);
|
|
@@ -26345,10 +26342,10 @@ function normalizePath(input) {
|
|
|
26345
26342
|
}
|
|
26346
26343
|
|
|
26347
26344
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/use-blinking-cursor.ts
|
|
26348
|
-
import { useEffect as
|
|
26345
|
+
import { useEffect as useEffect17, useState as useState23 } from "react";
|
|
26349
26346
|
function useBlinkingCursor() {
|
|
26350
26347
|
const [visible, setVisible] = useState23(true);
|
|
26351
|
-
|
|
26348
|
+
useEffect17(() => {
|
|
26352
26349
|
const interval = setInterval(() => setVisible((current) => !current), 500);
|
|
26353
26350
|
return () => clearInterval(interval);
|
|
26354
26351
|
}, []);
|
|
@@ -26456,12 +26453,12 @@ function StepHeader({ stepNumber, totalSteps, title }) {
|
|
|
26456
26453
|
}
|
|
26457
26454
|
|
|
26458
26455
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/use-timed-spinner.tsx
|
|
26459
|
-
import { useEffect as
|
|
26456
|
+
import { useEffect as useEffect18, useState as useState25 } from "react";
|
|
26460
26457
|
import { Spinner as Spinner2 } from "@inkjs/ui";
|
|
26461
26458
|
import { jsx as jsx49 } from "react/jsx-runtime";
|
|
26462
26459
|
function useTimedSpinner() {
|
|
26463
26460
|
const [elapsedSeconds, setElapsedSeconds] = useState25(0);
|
|
26464
|
-
|
|
26461
|
+
useEffect18(() => {
|
|
26465
26462
|
const timer = setInterval(() => setElapsedSeconds((current) => current + 1), 1e3);
|
|
26466
26463
|
return () => {
|
|
26467
26464
|
clearInterval(timer);
|
|
@@ -26510,7 +26507,7 @@ function PushingStep({ stepNumber, totalSteps, progress }) {
|
|
|
26510
26507
|
}
|
|
26511
26508
|
|
|
26512
26509
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/screens/WizardPreviewStep.tsx
|
|
26513
|
-
import { useEffect as
|
|
26510
|
+
import { useEffect as useEffect19, useState as useState26, useMemo as useMemo5 } from "react";
|
|
26514
26511
|
import { Box as Box40, Text as Text43 } from "ink";
|
|
26515
26512
|
|
|
26516
26513
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/support/preview-diff.ts
|
|
@@ -26895,7 +26892,7 @@ function WizardPreviewStep({
|
|
|
26895
26892
|
const activeLines = diffExpanded ? diffLines : summaryLines;
|
|
26896
26893
|
const maxScroll = Math.max(0, activeLines.length - viewportHeight);
|
|
26897
26894
|
const boundedScrollOffset = Math.min(scrollOffset, maxScroll);
|
|
26898
|
-
|
|
26895
|
+
useEffect19(() => {
|
|
26899
26896
|
setScrollOffset((previous) => Math.min(previous, maxScroll));
|
|
26900
26897
|
}, [maxScroll]);
|
|
26901
26898
|
useImmediateInput((input, key) => {
|
|
@@ -27000,7 +26997,7 @@ function FlowScreen({
|
|
|
27000
26997
|
const totalSteps = totalStepsFor(state);
|
|
27001
26998
|
const quit = () => onExit(0);
|
|
27002
26999
|
const previousStep = useRef12(state.step);
|
|
27003
|
-
|
|
27000
|
+
useEffect20(() => {
|
|
27004
27001
|
if (previousStep.current !== state.step) {
|
|
27005
27002
|
onStepChange?.();
|
|
27006
27003
|
previousStep.current = state.step;
|
|
@@ -27131,7 +27128,7 @@ function FlowScreen({
|
|
|
27131
27128
|
}
|
|
27132
27129
|
|
|
27133
27130
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/use-flow.ts
|
|
27134
|
-
import { useEffect as
|
|
27131
|
+
import { useEffect as useEffect21, useRef as useRef13, useSyncExternalStore } from "react";
|
|
27135
27132
|
|
|
27136
27133
|
// packages/experience-design-system-cli/src/tui/import/steps/10-flow/flow/controller.ts
|
|
27137
27134
|
import { appendFileSync, writeFileSync } from "node:fs";
|
|
@@ -27872,14 +27869,14 @@ function useFlow(start, deps = realFlowDeps) {
|
|
|
27872
27869
|
(listener) => current?.subscribe(listener) ?? (() => void 0),
|
|
27873
27870
|
() => current?.getState()
|
|
27874
27871
|
);
|
|
27875
|
-
|
|
27872
|
+
useEffect21(() => {
|
|
27876
27873
|
if (!start) controller.current = void 0;
|
|
27877
27874
|
}, [start]);
|
|
27878
27875
|
return current && state ? { controller: current, state } : void 0;
|
|
27879
27876
|
}
|
|
27880
27877
|
|
|
27881
27878
|
// packages/experience-design-system-cli/src/tui/help/PageContainer.tsx
|
|
27882
|
-
import { useEffect as
|
|
27879
|
+
import { useEffect as useEffect22, useState as useState27 } from "react";
|
|
27883
27880
|
import { Box as Box42, Text as Text44, useInput as useInput9 } from "ink";
|
|
27884
27881
|
|
|
27885
27882
|
// packages/experience-design-system-cli/src/tui/debug-store.ts
|
|
@@ -28073,7 +28070,7 @@ function Section({ title, rows }) {
|
|
|
28073
28070
|
}
|
|
28074
28071
|
function HelpScreen({ onDone }) {
|
|
28075
28072
|
const [info, setInfo] = useState27();
|
|
28076
|
-
|
|
28073
|
+
useEffect22(() => {
|
|
28077
28074
|
startDebugRun({ flow: "help", step: "01-help", menuOption: "Help", inputs: {} });
|
|
28078
28075
|
void readHelpInfo().then(setInfo);
|
|
28079
28076
|
}, []);
|
|
@@ -28166,7 +28163,7 @@ function SettingsScreen({
|
|
|
28166
28163
|
}
|
|
28167
28164
|
|
|
28168
28165
|
// packages/experience-design-system-cli/src/tui/settings/contentful-configuration/ContentfulConfigScreen.tsx
|
|
28169
|
-
import { useEffect as
|
|
28166
|
+
import { useEffect as useEffect23, useState as useState29 } from "react";
|
|
28170
28167
|
import { Box as Box44, Text as Text46, useInput as useInput11 } from "ink";
|
|
28171
28168
|
import TextInput4 from "ink-text-input";
|
|
28172
28169
|
|
|
@@ -28234,7 +28231,7 @@ function ConfigurationScreen({ onDone }) {
|
|
|
28234
28231
|
const [lastSaved, setLastSaved] = useState29(null);
|
|
28235
28232
|
const [editing, setEditing] = useState29(false);
|
|
28236
28233
|
const [valueBeforeEdit, setValueBeforeEdit] = useState29("");
|
|
28237
|
-
|
|
28234
|
+
useEffect23(() => {
|
|
28238
28235
|
readCredentials().then((cfg) => {
|
|
28239
28236
|
setConfig(cfg);
|
|
28240
28237
|
setStage("form");
|
|
@@ -28371,7 +28368,7 @@ function ConfigurationScreen({ onDone }) {
|
|
|
28371
28368
|
}
|
|
28372
28369
|
|
|
28373
28370
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/screen.tsx
|
|
28374
|
-
import { useEffect as
|
|
28371
|
+
import { useEffect as useEffect24, useState as useState30 } from "react";
|
|
28375
28372
|
import { Box as Box45, Text as Text47, useInput as useInput12 } from "ink";
|
|
28376
28373
|
|
|
28377
28374
|
// packages/experience-design-system-cli/src/tui/settings/opt-in-analytics/analytics-store.ts
|
|
@@ -28394,7 +28391,7 @@ import { Fragment as Fragment18, jsx as jsx56, jsxs as jsxs46 } from "react/jsx-
|
|
|
28394
28391
|
function OptInAnalyticsScreen({ onDone }) {
|
|
28395
28392
|
const [loading, setLoading] = useState30(true);
|
|
28396
28393
|
const [enabled, setEnabled] = useState30(true);
|
|
28397
|
-
|
|
28394
|
+
useEffect24(() => {
|
|
28398
28395
|
readAnalyticsSetting().then((setting) => {
|
|
28399
28396
|
setEnabled(setting.enabled);
|
|
28400
28397
|
setLoading(false);
|
|
@@ -28448,13 +28445,13 @@ function OptInAnalyticsScreen({ onDone }) {
|
|
|
28448
28445
|
}
|
|
28449
28446
|
|
|
28450
28447
|
// packages/experience-design-system-cli/src/tui/upgrade/PageContainer.tsx
|
|
28451
|
-
import { useEffect as
|
|
28448
|
+
import { useEffect as useEffect25, useState as useState31 } from "react";
|
|
28452
28449
|
import { Box as Box46, Text as Text48, useInput as useInput13 } from "ink";
|
|
28453
28450
|
import { jsx as jsx57, jsxs as jsxs47 } from "react/jsx-runtime";
|
|
28454
28451
|
var UPGRADE_COMMANDS = ["git pull", "pnpm install", "pnpm build"];
|
|
28455
28452
|
function UpgradeScreen({ onDone }) {
|
|
28456
28453
|
const [upgradeCheck, setUpgradeCheck] = useState31();
|
|
28457
|
-
|
|
28454
|
+
useEffect25(() => {
|
|
28458
28455
|
startDebugRun({
|
|
28459
28456
|
flow: "upgrade",
|
|
28460
28457
|
step: "01-upgrade",
|
|
@@ -28519,13 +28516,13 @@ function renderBody(upgradeCheck) {
|
|
|
28519
28516
|
}
|
|
28520
28517
|
|
|
28521
28518
|
// packages/experience-design-system-cli/src/tui/settings/debug-mode/screen.tsx
|
|
28522
|
-
import { useEffect as
|
|
28519
|
+
import { useEffect as useEffect26, useState as useState32 } from "react";
|
|
28523
28520
|
import { Box as Box47, Text as Text49, useInput as useInput14 } from "ink";
|
|
28524
28521
|
import { jsx as jsx58, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
28525
28522
|
function DebugModeScreen({ onDone }) {
|
|
28526
28523
|
const [loading, setLoading] = useState32(true);
|
|
28527
28524
|
const [enabled, setEnabled] = useState32(true);
|
|
28528
|
-
|
|
28525
|
+
useEffect26(() => {
|
|
28529
28526
|
readDebugModeSetting().then((setting) => {
|
|
28530
28527
|
setEnabled(setting.enabled);
|
|
28531
28528
|
setLoading(false);
|
|
@@ -28605,7 +28602,7 @@ function App({ importOptions, inkClear }) {
|
|
|
28605
28602
|
const [flowStart, setFlowStart] = useState33();
|
|
28606
28603
|
const flow = useFlow(flowStart);
|
|
28607
28604
|
const [importDefaults, setImportDefaults] = useState33();
|
|
28608
|
-
|
|
28605
|
+
useEffect27(() => {
|
|
28609
28606
|
if (screen !== "import") {
|
|
28610
28607
|
setImportDefaults(void 0);
|
|
28611
28608
|
return;
|
|
@@ -28663,12 +28660,12 @@ function App({ importOptions, inkClear }) {
|
|
|
28663
28660
|
}
|
|
28664
28661
|
});
|
|
28665
28662
|
};
|
|
28666
|
-
|
|
28663
|
+
useEffect27(() => {
|
|
28667
28664
|
if (!extractionRun || extraction?.status !== "done" || !extraction.result.ok) return;
|
|
28668
28665
|
setExtractionRun(void 0);
|
|
28669
28666
|
setScopeRun({ ...extractionRun, extraction: extraction.result.extraction });
|
|
28670
28667
|
}, [extraction, extractionRun]);
|
|
28671
|
-
|
|
28668
|
+
useEffect27(() => {
|
|
28672
28669
|
if (!scopeRun || scopeFlow?.status !== "confirmed" || generationInput) return;
|
|
28673
28670
|
const { extraction: produced, input, generatePromptPath } = scopeRun;
|
|
28674
28671
|
setGenerationInput({
|
|
@@ -28686,7 +28683,7 @@ function App({ importOptions, inkClear }) {
|
|
|
28686
28683
|
...generatePromptPath ? { generatePromptPath } : {}
|
|
28687
28684
|
});
|
|
28688
28685
|
}, [scopeFlow, scopeRun, generationInput]);
|
|
28689
|
-
|
|
28686
|
+
useEffect27(() => {
|
|
28690
28687
|
if (!scopeRun || generation?.status !== "done" || !generation.result.ok) return;
|
|
28691
28688
|
const { credentialsSkipped, tokenStrategy, extraction: produced, input, generatePromptPath } = scopeRun;
|
|
28692
28689
|
inkClear();
|
|
@@ -28737,10 +28734,7 @@ function App({ importOptions, inkClear }) {
|
|
|
28737
28734
|
state: flow.state,
|
|
28738
28735
|
controller: flow.controller,
|
|
28739
28736
|
generatePromptPath: flowStart.generatePromptPath,
|
|
28740
|
-
onExit:
|
|
28741
|
-
inkClear();
|
|
28742
|
-
setImportExitCode(code);
|
|
28743
|
-
},
|
|
28737
|
+
onExit: setImportExitCode,
|
|
28744
28738
|
onStepChange: inkClear
|
|
28745
28739
|
}
|
|
28746
28740
|
);
|