Skip to content

Commit 6133284

Browse files
committed
Adds hole selector, enforces script property order
Introduces a new interface for selecting holes visually Replaces numeric input with a more user-friendly layout Maintains consistent script structure with forced property ordering Adds supporting images and styling for improved UX
1 parent dc13380 commit 6133284

File tree

18 files changed

+666
-30
lines changed

18 files changed

+666
-30
lines changed
1.11 MB
Loading
1.1 MB
Loading
1.08 MB
Loading
1.09 MB
Loading
1.09 MB
Loading
1.07 MB
Loading
1.09 MB
Loading
1.07 MB
Loading
1.09 MB
Loading

editor/src/App.tsx

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -323,24 +323,25 @@ export default function App() {
323323
// Merge patch into current script first
324324
const merged = { ...script, ...patch };
325325

326-
// Always reconstruct the script object in the desired property order
326+
// Force property order by using JSON parse/stringify trick
327327
const orderedScript: any = {};
328328

329-
// Add properties in the desired order: id, startMode, endMode, activities
330-
if (merged.id !== undefined && merged.id !== '') {
331-
orderedScript.id = merged.id;
332-
}
333-
if (merged.startMode !== undefined) {
334-
orderedScript.startMode = merged.startMode;
335-
}
336-
if (merged.endMode !== undefined) {
337-
orderedScript.endMode = merged.endMode;
329+
// Build object with explicit property order
330+
const propertyOrder: (keyof ScriptData)[] = ['id', 'startMode', 'endMode', 'activities'];
331+
332+
for (const key of propertyOrder) {
333+
if (key === 'activities') {
334+
// Always include activities (required)
335+
orderedScript.activities = merged.activities;
336+
} else if (merged[key] !== undefined && merged[key] !== '') {
337+
orderedScript[key] = merged[key];
338+
}
338339
}
339340

340-
// Always include activities (required property) last
341-
orderedScript.activities = merged.activities;
341+
// Ensure we have a clean object with proper property order
342+
const cleanScript = JSON.parse(JSON.stringify(orderedScript));
342343

343-
dispatch({ type: 'LOAD_SCRIPT', script: orderedScript as ScriptData });
344+
dispatch({ type: 'LOAD_SCRIPT', script: cleanScript as ScriptData });
344345
};
345346

346347
// Ensure step logic is properly initialized when a step is selected

0 commit comments

Comments
 (0)