diff --git a/api/onnx_web/server/api.py b/api/onnx_web/server/api.py index 37485dfd..c3d32634 100644 --- a/api/onnx_web/server/api.py +++ b/api/onnx_web/server/api.py @@ -204,7 +204,7 @@ def list_extra_strings(server: ServerContext): def list_filters(server: ServerContext): mask_filters = list(get_mask_filters().keys()) - prompt_filters = list(get_prompt_filters().keys()) + prompt_filters = get_prompt_filters() source_filters = list(get_source_filters().keys()) return jsonify( { diff --git a/gui/src/components/control/ExperimentalControl.tsx b/gui/src/components/control/ExperimentalControl.tsx new file mode 100644 index 00000000..c3094af2 --- /dev/null +++ b/gui/src/components/control/ExperimentalControl.tsx @@ -0,0 +1,141 @@ +/* eslint-disable camelcase */ +import { mustDefault, mustExist } from '@apextoaster/js-utils'; +import { Checkbox, FormControlLabel, Stack, TextField } from '@mui/material'; +import { useTranslation } from 'react-i18next'; +import * as React from 'react'; +import { useQuery } from '@tanstack/react-query'; + +import { STALE_TIME, STANDARD_SPACING } from '../../constants.js'; +import { NumericField } from '../input/NumericField.js'; +import { QueryList } from '../input/QueryList.js'; +import { ClientContext } from '../../state/full.js'; + +export interface ExperimentalControlProps { + setExperimental(params: Record): void; +} + +export function ExperimentalControl(props: ExperimentalControlProps) { + const { t } = useTranslation(); + const state = { + latent_symmetry: false, + latent_symmetry_gradient_start: 0.1, + latent_symmetry_gradient_end: 0.3, + latent_symmetry_line_of_symmetry: 0.5, + prompt_editing: false, + prompt_filter: '', + remove_tokens: '', + add_suffix: '', + }; + + const client = mustExist(React.useContext(ClientContext)); + const filters = useQuery(['filters'], async () => client.filters(), { + staleTime: STALE_TIME, + }); + + return + + { + props.setExperimental({ + latent_symmetry: state.latent_symmetry === false, + }); + }} + />} + /> + { + props.setExperimental({ + latent_symmetry_gradient_start, + }); + }} + /> + { + props.setExperimental({ + latent_symmetry_gradient_end, + }); + }} + /> + { + props.setExperimental({ + latent_symmetry_line_of_symmetry, + }); + }} + /> + + + { + props.setExperimental({ + prompt_editing: state.prompt_editing === false, + }); + }} + />} + /> + f.prompt, + }} + value={mustDefault(state.prompt_filter, '')} + onChange={(prompt_filter) => { + props.setExperimental({ + prompt_filter, + }); + }} + /> + { + props.setExperimental({ + remove_tokens: event.target.value, + }); + }} + /> + { + props.setExperimental({ + add_suffix: event.target.value, + }); + }} + /> + + ; +}