import { IDOMElementHandler } from "./i-dom-element-handler"; import { DOMHandler } from "../dom-handler/dom-handler"; import { IDOMElementHandlerOptions } from "./i-dom-element-handler-options"; import { IDOMElementHandlerResult } from "./i-dom-element-handler-result"; import { PropertyPosition } from "./property-position"; import { NodeUuid } from "../../node-uuid/node-uuid"; import { IDOMElementHandlerAddSelectorResult } from "./i-dom-element-handler-add-selector-result"; import { FoveaDOMAstElement, IFoveaDOMAstAttribute, IFoveaDOMAstCustomAttribute, IFoveaDOMAstListener } from "../../fovea-dom-ast/i-fovea-dom-ast"; import { IDOMElementHandlerAddListenerResult } from "./i-dom-element-handler-add-listener-result"; import { IDOMElementHandlerAddListenersResult } from "./i-dom-element-handler-add-listeners-result"; import { IDOMHandlerCreateResult } from "../dom-handler/i-dom-handler-create-result"; import { IDOMElementHandlerCreateBaseOptions } from "./i-dom-element-handler-create-base-options"; import { IContext } from "../../../util/context-util/i-context"; /** * An abstract class that handles Elements. */ export declare abstract class DOMElementHandler extends DOMHandler implements IDOMElementHandler { /** * Adds an attribute to an element. * @param {NodeUuid | FoveaDOMAstElement} element * @param {IFoveaDOMAstAttribute} attribute * @param {IContext} context * @returns {string} */ addAttribute(element: NodeUuid | FoveaDOMAstElement, attribute: IFoveaDOMAstAttribute, context: IContext): string; /** * Adds a Custom Attribute to an element. * @param {NodeUuid | FoveaDOMAstElement} element * @param {IFoveaDOMAstCustomAttribute} customAttribute * @param {IContext} context * @returns {string} */ addCustomAttribute(element: NodeUuid | FoveaDOMAstElement, customAttribute: IFoveaDOMAstCustomAttribute, context: IContext): string; /** * Adds all the provided attributes to the provided element * @param {NodeUuid | FoveaDOMAstElement} element * @param {IFoveaDOMAstAttribute[]} attributes * @param {IContext} context * @returns {string} */ addAttributes(element: NodeUuid | FoveaDOMAstElement, attributes: IFoveaDOMAstAttribute[], context: IContext): string; /** * Sets a property value directly on an element. * @param {NodeUuid | FoveaDOMAstElement} element * @param {IFoveaDOMAstAttribute} attribute * @param {IContext} context * @returns {string} */ addProperty(element: NodeUuid | FoveaDOMAstElement, { name, value }: IFoveaDOMAstAttribute, context: IContext): string; /** * Adds all the provided properties to the element. * @param {NodeUuid | FoveaDOMAstElement} element * @param {IFoveaDOMAstAttribute[]} properties * @param {IContext} context * @returns {string} */ addProperties(element: NodeUuid | FoveaDOMAstElement, properties: IFoveaDOMAstAttribute[], context: IContext): string; /** * Handles an Element. * @param {IDOMElementHandlerOptions} options * @returns {IDOMElementHandlerResult} */ handle({ node, context }: IDOMElementHandlerOptions): IDOMElementHandlerResult; /** * Adds a ref to the provided child (if it is selectable. It is selectable if it has a '#' followed by some text). * @param {NodeUuid | FoveaDOMAstElement} child * @param {IContext} context * @returns {IDOMElementHandlerAddSelectorResult} */ addRef(child: NodeUuid | FoveaDOMAstElement, context: IContext): IDOMElementHandlerAddSelectorResult | null; /** * Adds a 'listener' instruction * @param {NodeUuid | FoveaDOMAstElement} element * @param {IFoveaDOMAstListener} listener * @param {IContext} context * @returns {IDOMElementHandlerAddListenerResult} */ addListener(element: NodeUuid | FoveaDOMAstElement, { name, handler }: IFoveaDOMAstListener, context: IContext): IDOMElementHandlerAddListenerResult; /** * Adds all the given 'listener' instructions * @param {NodeUuid | FoveaDOMAstElement} element * @param {IFoveaDOMAstListener} listeners * @param {IContext} context * @returns {IDOMElementHandlerAddListenerResult} */ addListeners(element: NodeUuid | FoveaDOMAstElement, listeners: IFoveaDOMAstListener[], context: IContext): IDOMElementHandlerAddListenersResult; /** * Handles all the listeners on the node. Will generate '___addListener' or '___addListeners' instructions, depending on the amount of listeners. * @param {NodeUuid | FoveaDOMAstElement} element * @param {IContext} context * @returns {IDOMElementHandlerAddListenersResult[]} */ handleListeners(element: NodeUuid | FoveaDOMAstElement, context: IContext): IDOMElementHandlerAddListenersResult[]; /** * Creates a new TemplateElement * @param {FoveaDOMAstElement} element * @param {IDOMElementHandlerCreateBaseOptions} options * @param {IContext} context * @returns {IDOMHandlerCreateResult?} */ protected createBase(element: FoveaDOMAstElement, { createConditionalElementName, createElementName, createMultiElementName }: IDOMElementHandlerCreateBaseOptions, context: IContext): IDOMHandlerCreateResult | undefined; /** * Gets the PropertyPosition of a key on an element. This essentially means where to put a property. * For native elements, we always place the properties as attributes. * For custom elements, we always place the properties as properties (like element.foo = "bar") unless * the key is included in the set of required attributes (for example, 'class' is a required attribute). * @param {FoveaDOMAstElement} element * @param {IContext} context * @param {IFoveaDOMAstAttribute} attribute * @returns {PropertyPosition} */ protected getPropertyPosition(element: FoveaDOMAstElement, context: IContext, attribute: IFoveaDOMAstAttribute): PropertyPosition; /** * Adds an attribute to an element. * @param {NodeUuid | FoveaDOMAstElement} element * @param {IFoveaDOMAstAttribute} attribute * @param {IContext} context * @param {"addAttribute"|"addCustomAttribute"} helperName * @returns {string} */ private addAttributeOrCustomAttribute; /** * Adds all of the declared TemplateVariables from some TemplateMultiElementOptions * @param {FoveaDOMAstElement} element * @param {ITemplateMultiElementOptions} options */ private addTemplateVariablesFromTemplateMultiElementOptions; /** * Adds all of the additional host identifiers from some TemplateMultiElementOptions * @param {FoveaDOMAstElement} element * @param {ITemplateMultiElementOptions} options */ private addAdditionalHostIdentifiersFromTemplateMultiElementOptions; /** * Takes the TemplateMultiElementOptions for a RawExpressionChainBindable. * These can be defined in one of two ways: * 1. Semi-colon separated values (e.g.: *foreach="model: ${}; indexAs?: ; as?: ") * 2. One value only, indicating the model (e.g.: *foreach="${}") * @param {RawExpressionChainBindable} expressionChain * @returns {ITemplateMultiElementOptions} */ private takeTemplateMultiElementOptions; /** * Handles all attributes of the provided node. * @param {FoveaDOMAstElement} node * @param {IContext} context * @returns {IDOMHandlerAddPropertyResult[]} */ private handleAttributes; /** * Handles all Custom Attributes of the provided node. * @param {FoveaDOMAstElement} node * @param {IContext} context * @returns {string[]} */ private handleCustomAttributes; /** * Generates IDOMHandlerAddPropertyResults for all of the provided attributes. * These will be grouped to safe precious bytes in the generated instructions. * @param {FoveaDOMAstElement} node * @param {IFoveaDOMAstAttribute[]} attributes * @param {IContext} context * @returns {IDOMHandlerAddPropertyResult[]} */ private addValues; }