import { Component } from './component'; export interface ChangeSet { p: { [name: string]: any; }; c: { [name: string]: any; }; } export interface AttributeChangeSet extends ChangeSet { n?: { [namespace: string]: ChangeSet; }; } interface ValueMap { [name: string]: any; } interface ValueMapNS { [ns: string]: ValueMap; } /** * Create pending props change set */ export declare function propsSet(elem: Component, initial?: Record): Record; /** * Alias for `elem.setAttribute` */ export declare function setAttribute(elem: Element, name: string, value: T): T; /** * Updates element’s `name` attribute value only if it differs from previous value, * defined in `prev` */ export declare function updateAttribute(elem: Element, prev: ValueMap, name: string, value: unknown): number; /** * Alias for `elem.className` */ export declare function setClass(elem: Element, value: T): T; /** * Shorthand to update class name, specific to Endorphin compiled code */ export declare function updateClass(elem: Element, prev: ValueMap, value: unknown): number; /** * Sets attribute value as expression. Unlike regular primitive attributes, * expression values must be represented, e.g. non-primitive values must be * converted to string representations. Also, expression resolved to `false`, * `null` or `undefined` will remove attribute from element */ export declare function setAttributeExpression(elem: Element, name: string, value: T): T; /** * Alias for `elem.setAttributeNS` */ export declare function setAttributeNS(elem: Element, ns: string, name: string, value: T): T; /** * Updates element’s `name` attribute value only if it differs from previous value, * defined in `prev` */ export declare function updateAttributeNS(elem: Element, prevNS: ValueMapNS, ns: string, name: string, value: unknown): number; /** * Same as `setAttributeExpression()` but for namespaced attributes */ export declare function setAttributeExpressionNS(elem: Element, ns: string, name: string, value: T): T; /** * Sets pending namespaced attribute value which will be added to element later */ export declare function setPendingAttributeNS(attrs: ValueMapNS, ns: string, name: string, value: unknown): void; /** * Updates pending `name` value only if given `value` is not null */ export declare function updatePendingAttribute(attrs: ValueMap, name: string, value: unknown): void; /** * Updates pending namespaced `name` value only if given `value` is not null */ export declare function updatePendingAttributeNS(attrs: ValueMap, ns: string, name: string, value: unknown): void; /** * Adds given class name to pending attribute set */ export declare function addPendingClass(data: ValueMap, className: string): void; /** * Adds given class name to pending attribute set if condition is truthy */ export declare function addPendingClassIf(data: ValueMap, className: string, condition: unknown): void; /** * Finalizes pending attributes */ export declare function finalizeAttributes(elem: Element, cur: ValueMap, prev: ValueMap): number; /** * Returns normalized list of class names from given string */ export declare function classNames(str: string): string; /** * Returns value for element */ export declare function inputValue(value: unknown): string; /** * Updates element’s `name` property value only if it differs from previous value, * defined in `prev` */ export declare function updateProperty(elem: Element, prev: ValueMap, name: string, value: unknown): number; export {};