AstComponent
Interface: AstComponent
Defined in: dsl-compiler/src/dslToAst/astTypes.ts:35
AST-представление компонента.
По сути это тот же ComponentNode из DSL, но:
- children нормализованы в AstComponent[];
- добавлены служебные поля для навигации и анализа:
- pageId — страница, к которой принадлежит компонент;
- parentId — родительский компонент (если есть);
- depth — глубина в дереве (root = 0);
- path — строковый путь для отладки и валидации;
- добавлены метаданные из DSL-реестра компонент:
- componentDefinition — описание типа компонента;
- canHaveChildren — может ли компонент иметь детей;
- normalizedProps — пропсы с учётом значений по умолчанию и AST выражений.
Extends
Omit<ComponentNode,"children">
Properties
canHaveChildren?
optionalcanHaveChildren:boolean
Defined in: dsl-compiler/src/dslToAst/astTypes.ts:71
Флаг, может ли компонент иметь дочерние элементы.
Берётся из componentDefinition.canHaveChildren, при отсутствии
определения компонента считается true.
children?
optionalchildren:AstComponent[]
Defined in: dsl-compiler/src/dslToAst/astTypes.ts:37
Дочерние компоненты в AST-форме.
componentDefinition?
optionalcomponentDefinition:ComponentDefinition
Defined in: dsl-compiler/src/dslToAst/astTypes.ts:63
Описание типа компонента из DSL-реестра.
Если тип компонента неизвестен встроенному реестру, поле остаётся неопределённым.
depth
depth:
number
Defined in: dsl-compiler/src/dslToAst/astTypes.ts:46
Глубина в дереве компонентов (корень = 0).
id
id:
string
Defined in: dsl/src/schema.ts:273
Уникальный ID компонента.
Inherited from
Omit.id
layout?
optionallayout:LayoutProps
Defined in: dsl/src/schema.ts:296
Layout-свойства (расположение и размеры).
Inherited from
Omit.layout
name?
optionalname:string
Defined in: dsl/src/schema.ts:279
Опциональное удобочитаемое имя для отображения в builder-web.
Inherited from
Omit.name
normalizedProps?
optionalnormalizedProps:Record<string,AstPropValue>
Defined in: dsl-compiler/src/dslToAst/astTypes.ts:87
Нормализованные пропсы компонента.
Формируются на этапе построения AST:
- учитывают значения по умолчанию из описания пропов;
- включают все явно заданные пропсы из DSL;
- могут содержать "лишние" пропсы, которых нет в описании;
- для ExpressionValue вместо сырой строки используются AstExpressionValue с разобранным AST и метаданными.
Если по каким-то причинам нормализация не выполнялась,
поле может оставаться undefined, тогда следует использовать
оригинальные props.
order?
optionalorder:number
Defined in: dsl/src/schema.ts:293
Порядковый номер компонента среди братьев (0-based).
Используется для определения порядка отображения, если runtime
сортирует детей по order.
Inherited from
Omit.order
pageId
pageId:
string
Defined in: dsl-compiler/src/dslToAst/astTypes.ts:40
ID страницы, к которой относится данный компонент.
parentId?
optionalparentId:string
Defined in: dsl-compiler/src/dslToAst/astTypes.ts:43
ID родительского компонента (undefined для корня).
path
path:
string
Defined in: dsl-compiler/src/dslToAst/astTypes.ts:55
Строковый путь до компонента в DSL-дереве.
Примеры: "pages[0].rootComponent" "pages[0].rootComponent.children[1]"
props?
optionalprops:Record<string,PropValue>
Defined in: dsl/src/schema.ts:282
Пропы компонента (могут быть статическими и выражениями).
Inherited from
Omit.props
style?
optionalstyle:StyleProps
Defined in: dsl/src/schema.ts:305
Стилевые свойства (цвета, шрифты, границы, классы и т.д.).
Этот блок описывает визуальное оформление компонента и может интерпретироваться runtime-слоем по-разному (CSS, Tailwind-классы, токены дизайн-системы и т.п.).
Inherited from
Omit.style
styleStates?
optionalstyleStates:StyleStates
Defined in: dsl/src/schema.ts:310
Стили интерактивных состояний (hover и т.п.).
Inherited from
Omit.styleStates
type
type:
string
Defined in: dsl/src/schema.ts:276
Тип компонента (например: "Button", "Text", "Form").
Inherited from
Omit.type