parcoursup/node_modules/@riotjs/dom-bindings/dom-bindings.d.ts
lalBi94 7bc56c09b5 $
2023-03-05 13:23:23 +01:00

142 lines
4.1 KiB
TypeScript

// Expressions
export enum ExpressionType {
ATTRIBUTE,
EVENT,
TEXT,
VALUE,
}
export interface BaseExpressionData<Scope = any> {
type: ExpressionType
evaluate(scope: Scope): any
}
export interface AttributeExpressionData<Scope = any> extends BaseExpressionData<Scope> {
name: string
}
export interface EventExpressionData<Scope = any> extends BaseExpressionData<Scope> {
name: string
}
export interface TextExpressionData<Scope = any> extends BaseExpressionData<Scope> {
childNodeIndex: number
}
export interface ValueExpressionData<Scope = any> extends BaseExpressionData<Scope> {
}
export type ExpressionData<Scope = any> =
AttributeExpressionData<Scope>
| EventExpressionData<Scope>
| TextExpressionData<Scope>
| ValueExpressionData<Scope>
export interface Expression<Scope = any> {
type: ExpressionType
node: HTMLElement
value: any
mount(scope: Scope): Expression<Scope>
update(scope: Scope): Expression<Scope>
unmount(scope: Scope): Expression<Scope>
}
// Bindings
export enum BindingType {
EACH,
IF,
SIMPLE,
TAG,
SLOT,
}
export interface BaseBindingData<Scope = any> {
selector?: string
redundantAttribute?: string
type?: BindingType
evaluate?(scope: Scope): any
}
export interface EachBindingData<Scope = any,
ItemName extends string = string,
IndexName extends string = string,
ItemValue extends any = any,
ExtendedScope = Scope & { [Property in ItemName]: ItemValue } & { [Property in IndexName]: number }> {
itemName: ItemName
indexName?: IndexName | null
template: TemplateChunk<ExtendedScope>,
getKey?: ((scope: ExtendedScope) => any) | null
condition?: ((scope: ExtendedScope) => any) | null,
evaluate(scope: Scope): ItemValue[],
selector?: string
redundantAttribute?: string
}
export interface IfBindingData<Scope = any> extends BaseBindingData<Scope> {
template: TemplateChunk<Scope>
}
export interface SimpleBindingData<Scope = any> extends BaseBindingData<Scope> {
expressions: ExpressionData<Scope>[]
}
export interface SlotBindingData<Scope = any> extends BaseBindingData<Scope> {
id: string
html: string
bindings: BindingData<Scope>[]
}
export interface TagBindingData<Scope = any> extends BaseBindingData<Scope> {
getComponent(name: string): TemplateChunk<Scope>
attributes: AttributeExpressionData<Scope>[]
slots: SlotBindingData<Scope>[]
}
export type BindingData<Scope = any> =
EachBindingData<Scope>
| IfBindingData<Scope>
| SimpleBindingData<Scope>
| SlotBindingData<Scope>
| TagBindingData<Scope>
export interface Binding<Scope = any, ParentScope = any> {
mount(el: HTMLElement, scope: Scope, parentScope?: ParentScope, meta?: TemplateChunkMeta): Binding<Scope, ParentScope>
update(scope: Scope, parentScope?: ParentScope): Binding<Scope, ParentScope>
unmount(scope: Scope, parentScope?: ParentScope, mustRemoveRoot?: boolean): Binding<Scope, ParentScope>
}
// Template Object
export interface TemplateChunkMeta {
fragment: DocumentFragment
children: HTMLCollection
avoidDOMInjection: boolean
}
export interface TemplateChunk<Scope = any, ParentScope = any> {
mount(el: HTMLElement, scope: Scope, parentScope?: ParentScope, meta?: TemplateChunkMeta): TemplateChunk
update(scope: Scope, parentScope?: ParentScope): TemplateChunk
unmount(scope: Scope, parentScope?: ParentScope, mustRemoveRoot?: boolean): TemplateChunk
clone(): TemplateChunk
createDOM(el: HTMLElement): TemplateChunk
bindings?: Binding<Scope, ParentScope>[]
bindingsData?: BindingData<Scope>[]
html?: string | null
isTemplateTag?: boolean
fragment?: DocumentFragment
children?: HTMLCollection
dom?: HTMLElement
el?: HTMLElement
}
// API
export function template<Scope = any, ParentScope = any>(template: string, bindings?: BindingData<Scope>[]): TemplateChunk<Scope, ParentScope>
export function createBinding<Scope = any>(root: HTMLElement, binding: BindingData<Scope>, templateTagOffset?: number | null): Binding<Scope>
export function createExpression<Scope = any>(node: HTMLElement, expression: ExpressionData<Scope>): Expression<Scope>
export const bindingTypes: BindingType
export const expressionTypes: ExpressionType