UNPKG

@surface/custom-element

Version:

Provides support of directives and data binding on custom elements.

119 lines (102 loc) 2.57 kB
/* eslint-disable import/exports-last */ import type { IExpression, IPattern } from "@surface/expression"; import type ObservablePath from "./observable-path"; export type AttributeDescritor = { key: string, value: string, }; export type BindDescritor = { key: string, observables: ObservablePath[], type: "oneway" | "twoway" | "interpolation", value: IExpression, }; export type BranchDescriptor = { expression: Expression, fragment: FragmentDescriptor, observables: ObservablePath[], }; export type CommentDescriptor = { type: "comment", value: string, }; export type ChoiceStatementDescriptor = { branches: BranchDescriptor[], type: "choice-statement", }; export type ElementDescriptor = { attributes: AttributeDescritor[], binds: BindDescritor[], childs: Descriptor[], directives: DirectiveDescritor[], events: EventDescritor[], tag: string, type: "element", }; export type EventDescritor = { key: string, value: IExpression, }; export type EventDescritor = { key: string, value: IExpression, }; export type FragmentDescriptor = { childs: Descriptor[], type: "fragment", }; export type KeyValueObservable = { key: ObservablePath[], value: ObservablePath[], }; export type InjectionStatementDescriptor = { fragment: FragmentDescriptor, key: IExpression, observables: KeyValueObservable, type: "injection-statement", value: IPattern, }; export type LoopStatementDescriptor = { fragment: FragmentDescriptor, left: IPattern, observables: ObservablePath[], operator: "in" | "of", right: IExpression, type: "loop-statement", }; export type PlaceholderStatementDescriptor = { fragment: FragmentDescriptor, key: IExpression, observables: KeyValueObservable, type: "placeholder-statement", value: IExpression, }; export type TextDescriptor = { observables: ObservablePath[], type: "text", value: IExpression, }; type Descriptor = | ChoiceStatementDescriptor | CommentDescriptor | ElementDescriptor | FragmentDescriptor | InjectionStatementDescriptor | LoopStatementDescriptor | PlaceholderStatementDescriptor | TextDescriptor; export default Descriptor;