MCPcopy Create free account
hub / github.com/NetEase/tango / EditableVariableTree

Function EditableVariableTree

packages/designer/src/components/variable-tree.tsx:136–279  ·  view source on GitHub ↗
({
  height,
  searchAddonAfter,
  searchStyle,
  dataSource,
  onAddVariable = noop,
  onDeleteVariable = noop,
  onDeleteStore = noop,
  getPreviewValue = noop,
  onSelect = noop,
  onSave = noop,
  modes = ['add', 'preview', 'define'],
  defaultMode = 'preview',
}: EditableVariableTreeProps)

Source from the content-addressed store, hash-verified

134];
135
136export function EditableVariableTree({
137 height,
138 searchAddonAfter,
139 searchStyle,
140 dataSource,
141 onAddVariable = noop,
142 onDeleteVariable = noop,
143 onDeleteStore = noop,
144 getPreviewValue = noop,
145 onSelect = noop,
146 onSave = noop,
147 modes = ['add', 'preview', 'define'],
148 defaultMode = 'preview',
149}: EditableVariableTreeProps) {
150 const [keyword, setKeyword] = useState('');
151 const [node, setNode] = useState<IVariableTreeNode>();
152 const [mode, setMode] = useState<EditableVariableTreeProps['defaultMode']>(defaultMode);
153 const hasPanelSwitch = modes.includes('define') && modes.includes('preview');
154
155 const treeData = useMemo(() => {
156 const pattern = new RegExp(keyword, 'ig');
157 return keyword
158 ? filterTreeData(dataSource, (leaf) => pattern.test(leaf.title), 'children', true)
159 : dataSource;
160 }, [keyword, dataSource]);
161
162 return (
163 <Box
164 className="EditableVariableTree"
165 display="flex"
166 overflow="auto"
167 height={height}
168 position="relative"
169 >
170 <Box p="l" width="40%">
171 <Box mb="m" position="sticky" top="0" bg="white" zIndex={2}>
172 <Input.Group compact>
173 <Search
174 placeholder="请输入变量名"
175 onChange={(val) => setKeyword(val?.trim())}
176 style={searchStyle}
177 />
178 {searchAddonAfter}
179 </Input.Group>
180 </Box>
181 <VariableTree
182 dataSource={treeData}
183 showViewIcon
184 onSelect={(item) => {
185 setNode(item);
186 mode === 'add' && setMode(defaultMode);
187 onSelect(item);
188 }}
189 onView={(item) => {
190 setNode(item);
191 mode === 'add' && setMode(defaultMode);
192 }}
193 onAdd={(item) => {

Callers

nothing calls this directly

Calls 1

filterTreeDataFunction · 0.85

Tested by

no test coverage detected