mirror of
https://github.com/openswarm-ai/openswarm.git
synced 2026-09-10 11:47:43 +02:00
[eric] imports: extract schema getDefault into shared
This commit is contained in:
@@ -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;
|
||||
|
||||
@@ -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 '';
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user