# Expr Editor

基于 Monaco Editor 和 `@fc-components/lezer-metricsql` 的表达式编辑器组件。

## 功能特性

- 表达式语法高亮
- 智能代码补全
- 语法验证（红色波浪线提示）
- 支持浅色/深色主题
- 支持多尺寸（small, middle, large）
- 只读和禁用模式
- Enter 键快捷执行回调
- Shift+Enter 换行

## 使用方法

```tsx
import { ExprMonacoEditor } from '@fc-components/monaco-editor';

function MyComponent() {
  const [value, setValue] = React.useState('');

  return (
    <ExprMonacoEditor
      value={value}
      onChange={setValue}
      theme="light"
      placeholder="输入表达式..."
    />
  );
}
```

## Props

| 参数               | 类型                                      | 默认值      | 说明                         |
| ------------------ | ----------------------------------------- | ----------- | ---------------------------- |
| `size`             | `'small' \| 'middle' \| 'large'`          | `'middle'`  | 编辑器尺寸                   |
| `theme`            | `'light' \| 'dark'`                       | `'light'`   | 主题                         |
| `value`            | `string`                                  | `''`        | 编辑器内容                   |
| `placeholder`      | `string`                                  | -           | 占位符文本                   |
| `enableAutocomplete`| `boolean`                                | `true`      | 启用代码补全                 |
| `readOnly`         | `boolean`                                 | `false`     | 只读模式                     |
| `disabled`         | `boolean`                                 | `false`     | 禁用编辑                     |
| `maxHeight`        | `number \| string`                        | -           | 最大高度                     |
| `fontSize`         | `number`                                  | -           | 字体大小                     |
| `onChange`         | `(value: string) => void`                 | -           | 内容变化回调                 |
| `onEnter`          | `(value: string) => void`                 | -           | Enter 键触发（无建议窗口时） |
| `onBlur`           | `(value: string) => void`                 | -           | 编辑器失焦回调               |
| `onFocus`          | `(value: string) => void`                 | -           | 编辑器聚焦回调               |
| `editorDidMount`   | `(editor) => void`                        | -           | 编辑器挂载完成回调           |