[eric] imports: extract schema getDefault into shared

This commit is contained in:
ciregenz
2026-05-23 07:21:57 -07:00
parent 37d1b067bf
commit c45972b2df
5 changed files with 34 additions and 34 deletions
@@ -14,7 +14,7 @@ import { useAppDispatch } from '@/shared/hooks';
import { API_BASE, getAuthToken } from '@/shared/config';
import { useClaudeTokens } from '@/shared/styles/ThemeContext';
import ViewPreview, { ViewPreviewHandle } from '@/app/pages/Views/ViewPreview';
import { getDefault } from '@/app/pages/Views/InputSchemaForm';
import { getDefault } from '@/shared/inputSchemaDefaults';
import { useOverlayScrollPassthrough } from './useOverlayScrollPassthrough';
import {
useRuntimePreviewUrl,
@@ -13,16 +13,7 @@ import Button from '@mui/material/Button';
import AddIcon from '@mui/icons-material/Add';
import RemoveCircleOutlineIcon from '@mui/icons-material/RemoveCircleOutline';
import { useClaudeTokens } from '@/shared/styles/ThemeContext';
interface SchemaNode {
type?: string;
properties?: Record<string, SchemaNode>;
items?: SchemaNode;
required?: string[];
enum?: string[];
description?: string;
default?: any;
}
import { getDefault, type SchemaNode } from '@/shared/inputSchemaDefaults';
interface Props {
schema: SchemaNode;
@@ -32,26 +23,6 @@ interface Props {
depth?: number;
}
function getDefault(schema: SchemaNode): any {
if (schema.default !== undefined) return schema.default;
switch (schema.type) {
case 'string': return '';
case 'number': return 0;
case 'boolean': return false;
case 'array': return [];
case 'object': {
const obj: Record<string, any> = {};
if (schema.properties) {
for (const [k, v] of Object.entries(schema.properties)) {
obj[k] = getDefault(v);
}
}
return obj;
}
default: return '';
}
}
const InputSchemaForm: React.FC<Props> = ({ schema, value, onChange, label, depth = 0 }) => {
const c = useClaudeTokens();
@@ -258,5 +229,4 @@ const InputSchemaForm: React.FC<Props> = ({ schema, value, onChange, label, dept
);
};
export { getDefault };
export default InputSchemaForm;
+1 -1
View File
@@ -36,7 +36,7 @@ import AgentChat from '../AgentChat/AgentChat';
import RefreshIcon from '@mui/icons-material/Refresh';
import ViewPreview, { ViewPreviewHandle } from './ViewPreview';
import TerminalPanel, { TerminalLine } from './TerminalPanel';
import { getDefault } from './InputSchemaForm';
import { getDefault } from '@/shared/inputSchemaDefaults';
import CodeEditor from './CodeEditor';
import { ElementSelectionProvider } from '@/app/components/ElementSelectionContext';
import { captureViewThumbnail } from './captureViewThumbnail';
@@ -11,7 +11,8 @@ import WarningAmberIcon from '@mui/icons-material/WarningAmber';
import { Output, executeOutput, OutputExecuteResult, getFrontendCode, getBackendCode, buildServeUrl, SERVE_BASE } from '@/shared/state/outputsSlice';
import { useAppDispatch } from '@/shared/hooks';
import { useClaudeTokens } from '@/shared/styles/ThemeContext';
import InputSchemaForm, { getDefault } from './InputSchemaForm';
import InputSchemaForm from './InputSchemaForm';
import { getDefault } from '@/shared/inputSchemaDefaults';
import ViewPreview from './ViewPreview';
interface Props {
@@ -0,0 +1,29 @@
export interface SchemaNode {
type?: string;
properties?: Record<string, SchemaNode>;
items?: SchemaNode;
required?: string[];
enum?: string[];
description?: string;
default?: any;
}
export function getDefault(schema: SchemaNode): any {
if (schema.default !== undefined) return schema.default;
switch (schema.type) {
case 'string': return '';
case 'number': return 0;
case 'boolean': return false;
case 'array': return [];
case 'object': {
const obj: Record<string, any> = {};
if (schema.properties) {
for (const [k, v] of Object.entries(schema.properties)) {
obj[k] = getDefault(v);
}
}
return obj;
}
default: return '';
}
}