import type { Signal as ddeSignal } from "./signals"; type CustomElementTagNameMap= { '#text': Text, '#comment': Comment } type SupportedElement= HTMLElementTagNameMap[keyof HTMLElementTagNameMap] | SVGElementTagNameMap[keyof SVGElementTagNameMap] | MathMLElementTagNameMap[keyof MathMLElementTagNameMap] | CustomElementTagNameMap[keyof CustomElementTagNameMap] declare global { type ddeComponentAttributes= Record | undefined; type ddeElementAddon= (element: El, ...rest: any)=> any; type ddeString= string | ddeSignal type ddeStringable= ddeString | number | ddeSignal } type Host= (...addons: ddeElementAddon[])=> EL; type PascalCase= `${Capitalize}${string}`; type AttrsModified= { /** * Use string like in HTML (internally uses `*.setAttribute("style", *)`), or object representation (like DOM API). */ style: Partial | ddeString | Partial<{ [K in keyof CSSStyleDeclaration]: ddeSignal }> /** * Provide option to add/remove/toggle CSS clasess (index of object) using 1/0/-1. * In fact `el.classList.toggle(class_name)` for `-1` and `el.classList.toggle(class_name, Boolean(...))` * for others. */ classList: Record>, /** * Used by the dataset HTML attribute to represent data for custom attributes added to elements. * Values are converted to string (see {@link DOMStringMap}). * * [MDN Reference](https://developer.mozilla.org/docs/Web/API/DOMStringMap) * */ dataset: Record, /** * Sets `aria-*` simiraly to `dataset` * */ ariaset: Record, } & Record<`=${string}` | `data${PascalCase}` | `aria${PascalCase}`, ddeString> & Record<`.${string}`, any> type _fromElsInterfaces= Omit; type IsReadonly = T extends { readonly [P in K]: T[K] } ? true : false; /** * Just element attributtes * * In most cases, you can use native propertie such as * [MDN WEB/API/Element](https://developer.mozilla.org/en-US/docs/Web/API/Element) and so on * (e.g. [`Text`](https://developer.mozilla.org/en-US/docs/Web/API/Text)). * * There is added support for `data[A-Z].*`/`aria[A-Z].*` to be converted to the kebab-case alternatives. * @private */ type ElementAttributes= Partial<{ [K in keyof _fromElsInterfaces]: _fromElsInterfaces[K] extends ((...p: any[])=> any) ? _fromElsInterfaces[K] | ((...p: Parameters<_fromElsInterfaces[K]>)=> ddeSignal[K]>, {}>) : (IsReadonly<_fromElsInterfaces, K> extends false ? _fromElsInterfaces[K] | ddeSignal<_fromElsInterfaces[K], {}> : ddeStringable) } & AttrsModified> & Record; export function classListDeclarative( element: El, classList: AttrsModified["classList"] ): El export function assign(element: El, ...attrs_array: ElementAttributes[]): El export function assignAttribute>( element: El, attr: ATT, value: ElementAttributes[ATT] ): ElementAttributes[ATT] type ExtendedHTMLElementTagNameMap= HTMLElementTagNameMap & CustomElementTagNameMap; export namespace el { /** * Creates a marker comment for elements * * @param attrs - Marker attributes * @param [is_open=false] - Whether the marker is open-ended * @returns Comment node marker */ export function mark( attrs: { type: "component"|"reactive"|"later", name?: string, host?: "this"|"parentElement" }, is_open?: boolean ): Comment; } export function chainableAppend(el: EL): EL | ddeHTMLElement export function el< A extends ddeComponentAttributes, EL extends SupportedElement | ddeDocumentFragment >( component: (attr: A, ...rest: any[])=> EL, attrs?: NoInfer, ...addons: ddeElementAddon[] ): EL extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap] ? EL : ( EL extends ddeDocumentFragment ? EL : ddeHTMLElement ) export function el< A extends { textContent: ddeStringable }, EL extends SupportedElement | ddeDocumentFragment >( component: (attr: A, ...rest: any[])=> EL, attrs?: NoInfer["textContent"], ...addons: ddeElementAddon[] ): EL extends ddeHTMLElementTagNameMap[keyof ddeHTMLElementTagNameMap] ? EL : ( EL extends ddeDocumentFragment ? EL : ddeHTMLElement ) export function el< TAG extends keyof ExtendedHTMLElementTagNameMap, >( tag_name: TAG, attrs?: ElementAttributes]> | ddeStringable, ...addons: ddeElementAddon< ExtendedHTMLElementTagNameMap[NoInfer] >[], // TODO: for now addons must have the same element ): TAG extends keyof ddeHTMLElementTagNameMap ? ddeHTMLElementTagNameMap[TAG] : ddeHTMLElement export function el( tag_name?: "<>", ): ddeDocumentFragment export function el( tag_name: string, attrs?: ElementAttributes | ddeStringable, ...addons: ddeElementAddon[] ): ddeHTMLElement export { el as createElement } export function elNS( namespace: "http://www.w3.org/2000/svg" ): < TAG extends keyof SVGElementTagNameMap & string, EL extends ( TAG extends keyof SVGElementTagNameMap ? SVGElementTagNameMap[TAG] : SVGElement ), >( tag_name: TAG, attrs?: ElementAttributes> | ddeStringable, ...addons: ddeElementAddon>[] )=> TAG extends keyof ddeSVGElementTagNameMap ? ddeSVGElementTagNameMap[TAG] : ddeSVGElement export function elNS( namespace: "http://www.w3.org/1998/Math/MathML" ): < TAG extends keyof MathMLElementTagNameMap & string, EL extends ( TAG extends keyof MathMLElementTagNameMap ? MathMLElementTagNameMap[TAG] : MathMLElement ), >( tag_name: TAG, attrs?: ddeStringable | Partial<{ [key in keyof EL]: EL[key] | ddeSignal | string | number | boolean }>, ...addons: ddeElementAddon>[] )=> ddeMathMLElement export function elNS( namespace: string ): ( tag_name: string, attrs?: string | ddeStringable | Record, ...addons: ddeElementAddon[] )=> SupportedElement export { elNS as createElementNS } /** Simulate slots for ddeComponents */ export function simulateSlots( root: EL, ): EL /** * Simulate slots in Custom Elements without using `shadowRoot`. * @param el Custom Element root element * @param body Body of the custom element * */ export function simulateSlots( el: HTMLElement, body: EL, ): EL export function dispatchEvent(name: keyof DocumentEventMap | string, host: Host): (data?: any)=> void; export function dispatchEvent(name: keyof DocumentEventMap | string, options?: EventInit): (element: SupportedElement, data?: any)=> void; export function dispatchEvent( name: keyof DocumentEventMap | string, options: EventInit | null, host: Host ): (data?: any)=> void; interface On{ /** Listens to the DOM event. See {@link Document.addEventListener} */ < Event extends keyof DocumentEventMap, EL extends SupportedElement >( type: Event, listener: (this: EL, ev: DocumentEventMap[Event]) => any, options?: AddEventListenerOptions ) : ddeElementAddon; < EE extends ddeElementAddon= ddeElementAddon, >( type: string, listener: (this: EE extends ddeElementAddon ? El : never, ev: Event | CustomEvent ) => any, options?: AddEventListenerOptions ) : EE; /** Listens to the element is connected to the live DOM. In case of custom elements uses [`connectedCallback`](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements#custom_element_lifecycle_callbacks), or {@link MutationObserver} else where */// editorconfig-checker-disable-line connected< EL extends SupportedElement >( listener: (this: EL, event: CustomEvent>) => any, options?: AddEventListenerOptions ) : ddeElementAddon; /** Listens to the element is disconnected from the live DOM. In case of custom elements uses [`disconnectedCallback`](https://developer.mozilla.org/en-US/docs/Web/API/Web_components/Using_custom_elements#custom_element_lifecycle_callbacks), or {@link MutationObserver} else where */// editorconfig-checker-disable-line disconnected< EL extends SupportedElement >( listener: (this: EL, event: CustomEvent) => any, options?: AddEventListenerOptions ) : ddeElementAddon; /** * Fires when the host element is "ready", for host element itsel, it is just an alias for `scope.host(listener)`. * This is handy to apply some property depending on full template such as: * ```js * const selected= "Z"; * //... * return el("form").append( * el("select", null, on.host(e=> e.value=selected)).append( * el("option", { value: "A", textContent: "A" }), * //... * el("option", { value: "Z", textContent: "Z" }), * ), * ); * ``` * */ host< EL extends SupportedElement >( listener: (element: EL) => any, host?: Host ) : ddeElementAddon; } export const on: On; type Scope= { scope: Node | Function | Object, host: Host, custom_element: false | HTMLElement, prevent: boolean }; /** Current scope created last time the `el(Function)` was invoke. (Or {@link scope.push}) */ export const scope: { current: Scope, /** Stops all automatizations. E. g. signals used as attributes in current scope * registers removing these listeners (and clean signal if no other listeners are detected) * on `disconnected` event. */ preventDefault(prevent: T): T, /** * This represents reference to the current host element — `scope.host()`. * It can be also used to register Addon(s) (functions to be called when component is initized) * — `scope.host(on.connected(console.log))`. * */ host: Host, /** * Creates/gets an AbortController that triggers when the element disconnects * */ signal: AbortSignal, state: Scope[], /** Adds new child scope. All attributes are inherited by default. */ push(scope?: Partial): ReturnType["push"]>, /** Adds root scope as a child of the current scope. */ pushRoot(): ReturnType["push"]>, /** Removes last/current child scope. */ pop(): ReturnType["pop"]>, }; export function customElementRender< EL extends HTMLElement, P extends any = Record> >( target: ShadowRoot | EL, render: (props: P)=> SupportedElement | DocumentFragment, props?: P | ((el: EL)=> P) ): EL export function customElementWithDDE HTMLElement)>(custom_element: EL): EL export function lifecyclesToEvents HTMLElement)>(custom_element: EL): EL /** * This is used primarly for server side rendering. To be sure that all async operations * are finished before the page is sent to the client. * ``` * // on component * function component(){ * … * queue(fetch(...).then(...)); * } * * // building the page * async function build(){ * const { component }= await import("./component.js"); * document.body.append(el(component)); * await queue(); * retutn document.body.innerHTML; * } * ``` * */ export function queue(promise?: Promise): Promise; /** * Memoization utility for caching DOM elements to improve performance. * Used to prevent unnecessary recreation of elements when rendering lists or complex components. * * @param key - Unique identifier for the element (usually an ID or unique value) * @param generator - Function that creates the element * @returns The cached element if the key exists, otherwise the result of the generator function * * @example * ```ts * // Within S.el for list rendering * S.el(itemsSignal, (items, memo) => * el("ul").append( * ...items.map(item => * memo(item.id, () => el(ItemComponent, item)) * ) * ) * ) * ``` */ export function memo(key: string | number | object, generator: (key: any) => T): T; /** * Memo namespace containing utility functions for memoization. */ export namespace memo { /** * Checks if an object is a memo scope. * @param obj - The object to check * @returns True if the object is a memo scope */ export function isScope(obj: any): boolean; /** * Creates a memoized function with optional cleanup support. * * @param fun - The function to memoize * @param options - Configuration options * @param options.signal - AbortSignal for cleanup * @param options.onlyLast - When true, only keeps the cache from the most recent call * @returns A memoized version of the function with a .clear() method * * @example * ```ts * const renderItems = memo.scope(function(items) { * return items.map(item => * memo(item.id, () => el("div", item.name)) * ); * }, { * signal: controller.signal, * onlyLast: true * }); * ``` */ export function scope( fun: F, options?: { signal?: AbortSignal; onlyLast?: boolean; } ): F & { clear: () => void }; } /* TypeScript MEH */ declare global{ type ddeAppend= (...nodes: (Node | string)[])=> el; interface ddeDocumentFragment extends DocumentFragment{ append: ddeAppend; } interface ddeHTMLElement extends HTMLElement{ append: ddeAppend; } interface ddeSVGElement extends SVGElement{ append: ddeAppend; } interface ddeMathMLElement extends MathMLElement{ append: ddeAppend; } interface ddeHTMLElementTagNameMap { "a": ddeHTMLAnchorElement; "area": ddeHTMLAreaElement; "audio": ddeHTMLAudioElement; "base": ddeHTMLBaseElement; "blockquote": ddeHTMLQuoteElement; "body": ddeHTMLBodyElement; "br": ddeHTMLBRElement; "button": ddeHTMLButtonElement; "canvas": ddeHTMLCanvasElement; "caption": ddeHTMLTableCaptionElement; "col": ddeHTMLTableColElement; "colgroup": ddeHTMLTableColElement; "data": ddeHTMLDataElement; "datalist": ddeHTMLDataListElement; "del": ddeHTMLModElement; "details": ddeHTMLDetailsElement; "dialog": ddeHTMLDialogElement; "div": ddeHTMLDivElement; "dl": ddeHTMLDListElement; "embed": ddeHTMLEmbedElement; "fieldset": ddeHTMLFieldSetElement; "form": ddeHTMLFormElement; "h1": ddeHTMLHeadingElement; "h2": ddeHTMLHeadingElement; "h3": ddeHTMLHeadingElement; "h4": ddeHTMLHeadingElement; "h5": ddeHTMLHeadingElement; "h6": ddeHTMLHeadingElement; "head": ddeHTMLHeadElement; "hr": ddeHTMLHRElement; "html": ddeHTMLHtmlElement; "iframe": ddeHTMLIFrameElement; "img": ddeHTMLImageElement; "input": ddeHTMLInputElement; "ins": ddeHTMLModElement; "label": ddeHTMLLabelElement; "legend": ddeHTMLLegendElement; "li": ddeHTMLLIElement; "link": ddeHTMLLinkElement; "map": ddeHTMLMapElement; "menu": ddeHTMLMenuElement; "meta": ddeHTMLMetaElement; "meter": ddeHTMLMeterElement; "object": ddeHTMLObjectElement; "ol": ddeHTMLOListElement; "optgroup": ddeHTMLOptGroupElement; "option": ddeHTMLOptionElement; "output": ddeHTMLOutputElement; "p": ddeHTMLParagraphElement; "picture": ddeHTMLPictureElement; "pre": ddeHTMLPreElement; "progress": ddeHTMLProgressElement; "q": ddeHTMLQuoteElement; "script": ddeHTMLScriptElement; "select": ddeHTMLSelectElement; "slot": ddeHTMLSlotElement; "source": ddeHTMLSourceElement; "span": ddeHTMLSpanElement; "style": ddeHTMLStyleElement; "table": ddeHTMLTableElement; "tbody": ddeHTMLTableSectionElement; "td": ddeHTMLTableCellElement; "template": ddeHTMLTemplateElement; "textarea": ddeHTMLTextAreaElement; "tfoot": ddeHTMLTableSectionElement; "th": ddeHTMLTableCellElement; "thead": ddeHTMLTableSectionElement; "time": ddeHTMLTimeElement; "title": ddeHTMLTitleElement; "tr": ddeHTMLTableRowElement; "track": ddeHTMLTrackElement; "ul": ddeHTMLUListElement; "video": ddeHTMLVideoElement; } interface ddeSVGElementTagNameMap { "a": ddeSVGAElement; "animate": ddeSVGAnimateElement; "animateMotion": ddeSVGAnimateMotionElement; "animateTransform": ddeSVGAnimateTransformElement; "circle": ddeSVGCircleElement; "clipPath": ddeSVGClipPathElement; "defs": ddeSVGDefsElement; "desc": ddeSVGDescElement; "ellipse": ddeSVGEllipseElement; "feBlend": ddeSVGFEBlendElement; "feColorMatrix": ddeSVGFEColorMatrixElement; "feComponentTransfer": ddeSVGFEComponentTransferElement; "feComposite": ddeSVGFECompositeElement; "feConvolveMatrix": ddeSVGFEConvolveMatrixElement; "feDiffuseLighting": ddeSVGFEDiffuseLightingElement; "feDisplacementMap": ddeSVGFEDisplacementMapElement; "feDistantLight": ddeSVGFEDistantLightElement; "feDropShadow": ddeSVGFEDropShadowElement; "feFlood": ddeSVGFEFloodElement; "feFuncA": ddeSVGFEFuncAElement; "feFuncB": ddeSVGFEFuncBElement; "feFuncG": ddeSVGFEFuncGElement; "feFuncR": ddeSVGFEFuncRElement; "feGaussianBlur": ddeSVGFEGaussianBlurElement; "feImage": ddeSVGFEImageElement; "feMerge": ddeSVGFEMergeElement; "feMergeNode": ddeSVGFEMergeNodeElement; "feMorphology": ddeSVGFEMorphologyElement; "feOffset": ddeSVGFEOffsetElement; "fePointLight": ddeSVGFEPointLightElement; "feSpecularLighting": ddeSVGFESpecularLightingElement; "feSpotLight": ddeSVGFESpotLightElement; "feTile": ddeSVGFETileElement; "feTurbulence": ddeSVGFETurbulenceElement; "filter": ddeSVGFilterElement; "foreignObject": ddeSVGForeignObjectElement; "g": ddeSVGGElement; "image": ddeSVGImageElement; "line": ddeSVGLineElement; "linearGradient": ddeSVGLinearGradientElement; "marker": ddeSVGMarkerElement; "mask": ddeSVGMaskElement; "metadata": ddeSVGMetadataElement; "mpath": ddeSVGMPathElement; "path": ddeSVGPathElement; "pattern": ddeSVGPatternElement; "polygon": ddeSVGPolygonElement; "polyline": ddeSVGPolylineElement; "radialGradient": ddeSVGRadialGradientElement; "rect": ddeSVGRectElement; "script": ddeSVGScriptElement; "set": ddeSVGSetElement; "stop": ddeSVGStopElement; "style": ddeSVGStyleElement; "svg": ddeSVGSVGElement; "switch": ddeSVGSwitchElement; "symbol": ddeSVGSymbolElement; "text": ddeSVGTextElement; "textPath": ddeSVGTextPathElement; "title": ddeSVGTitleElement; "tspan": ddeSVGTSpanElement; "use": ddeSVGUseElement; "view": ddeSVGViewElement; } } // editorconfig-checker-disable interface ddeHTMLAnchorElement extends HTMLAnchorElement{ append: ddeAppend; } interface ddeHTMLAreaElement extends HTMLAreaElement{ append: ddeAppend; } interface ddeHTMLAudioElement extends HTMLAudioElement{ append: ddeAppend; } interface ddeHTMLBaseElement extends HTMLBaseElement{ append: ddeAppend; } interface ddeHTMLQuoteElement extends HTMLQuoteElement{ append: ddeAppend; } interface ddeHTMLBodyElement extends HTMLBodyElement{ append: ddeAppend; } interface ddeHTMLBRElement extends HTMLBRElement{ append: ddeAppend; } interface ddeHTMLButtonElement extends HTMLButtonElement{ append: ddeAppend; } interface ddeHTMLCanvasElement extends HTMLCanvasElement{ append: ddeAppend; } interface ddeHTMLTableCaptionElement extends HTMLTableCaptionElement{ append: ddeAppend; } interface ddeHTMLTableColElement extends HTMLTableColElement{ append: ddeAppend; } interface ddeHTMLTableColElement extends HTMLTableColElement{ append: ddeAppend; } interface ddeHTMLDataElement extends HTMLDataElement{ append: ddeAppend; } interface ddeHTMLDataListElement extends HTMLDataListElement{ append: ddeAppend; } interface ddeHTMLModElement extends HTMLModElement{ append: ddeAppend; } interface ddeHTMLDetailsElement extends HTMLDetailsElement{ append: ddeAppend; } interface ddeHTMLDialogElement extends HTMLDialogElement{ append: ddeAppend; } interface ddeHTMLDivElement extends HTMLDivElement{ append: ddeAppend; } interface ddeHTMLDListElement extends HTMLDListElement{ append: ddeAppend; } interface ddeHTMLEmbedElement extends HTMLEmbedElement{ append: ddeAppend; } interface ddeHTMLFieldSetElement extends HTMLFieldSetElement{ append: ddeAppend; } interface ddeHTMLFormElement extends HTMLFormElement{ append: ddeAppend; } interface ddeHTMLHeadingElement extends HTMLHeadingElement{ append: ddeAppend; } interface ddeHTMLHeadElement extends HTMLHeadElement{ append: ddeAppend; } interface ddeHTMLHRElement extends HTMLHRElement{ append: ddeAppend; } interface ddeHTMLHtmlElement extends HTMLHtmlElement{ append: ddeAppend; } interface ddeHTMLIFrameElement extends HTMLIFrameElement{ append: ddeAppend; } interface ddeHTMLImageElement extends HTMLImageElement{ append: ddeAppend; } interface ddeHTMLInputElement extends HTMLInputElement{ append: ddeAppend; } interface ddeHTMLLabelElement extends HTMLLabelElement{ append: ddeAppend; } interface ddeHTMLLegendElement extends HTMLLegendElement{ append: ddeAppend; } interface ddeHTMLLIElement extends HTMLLIElement{ append: ddeAppend; } interface ddeHTMLLinkElement extends HTMLLinkElement{ append: ddeAppend; } interface ddeHTMLMapElement extends HTMLMapElement{ append: ddeAppend; } interface ddeHTMLMenuElement extends HTMLMenuElement{ append: ddeAppend; } interface ddeHTMLMetaElement extends HTMLMetaElement{ append: ddeAppend; } interface ddeHTMLMeterElement extends HTMLMeterElement{ append: ddeAppend; } interface ddeHTMLObjectElement extends HTMLObjectElement{ append: ddeAppend; } interface ddeHTMLOListElement extends HTMLOListElement{ append: ddeAppend; } interface ddeHTMLOptGroupElement extends HTMLOptGroupElement{ append: ddeAppend; } interface ddeHTMLOptionElement extends HTMLOptionElement{ append: ddeAppend; } interface ddeHTMLOutputElement extends HTMLOutputElement{ append: ddeAppend; } interface ddeHTMLParagraphElement extends HTMLParagraphElement{ append: ddeAppend; } interface ddeHTMLPictureElement extends HTMLPictureElement{ append: ddeAppend; } interface ddeHTMLPreElement extends HTMLPreElement{ append: ddeAppend; } interface ddeHTMLProgressElement extends HTMLProgressElement{ append: ddeAppend; } interface ddeHTMLScriptElement extends HTMLScriptElement{ append: ddeAppend; } interface ddeHTMLSelectElement extends HTMLSelectElement{ append: ddeAppend; } interface ddeHTMLSlotElement extends HTMLSlotElement{ append: ddeAppend; } interface ddeHTMLSourceElement extends HTMLSourceElement{ append: ddeAppend; } interface ddeHTMLSpanElement extends HTMLSpanElement{ append: ddeAppend; } interface ddeHTMLStyleElement extends HTMLStyleElement{ append: ddeAppend; } interface ddeHTMLTableElement extends HTMLTableElement{ append: ddeAppend; } interface ddeHTMLTableSectionElement extends HTMLTableSectionElement{ append: ddeAppend; } interface ddeHTMLTableCellElement extends HTMLTableCellElement{ append: ddeAppend; } interface ddeHTMLTemplateElement extends HTMLTemplateElement{ append: ddeAppend; } interface ddeHTMLTextAreaElement extends HTMLTextAreaElement{ append: ddeAppend; } interface ddeHTMLTableCellElement extends HTMLTableCellElement{ append: ddeAppend; } interface ddeHTMLTimeElement extends HTMLTimeElement{ append: ddeAppend; } interface ddeHTMLTitleElement extends HTMLTitleElement{ append: ddeAppend; } interface ddeHTMLTableRowElement extends HTMLTableRowElement{ append: ddeAppend; } interface ddeHTMLTrackElement extends HTMLTrackElement{ append: ddeAppend; } interface ddeHTMLUListElement extends HTMLUListElement{ append: ddeAppend; } interface ddeHTMLVideoElement extends HTMLVideoElement{ append: ddeAppend; } interface ddeSVGAElement extends SVGAElement{ append: ddeAppend; } interface ddeSVGAnimateElement extends SVGAnimateElement{ append: ddeAppend; } interface ddeSVGAnimateMotionElement extends SVGAnimateMotionElement{ append: ddeAppend; } interface ddeSVGAnimateTransformElement extends SVGAnimateTransformElement{ append: ddeAppend; } interface ddeSVGCircleElement extends SVGCircleElement{ append: ddeAppend; } interface ddeSVGClipPathElement extends SVGClipPathElement{ append: ddeAppend; } interface ddeSVGDefsElement extends SVGDefsElement{ append: ddeAppend; } interface ddeSVGDescElement extends SVGDescElement{ append: ddeAppend; } interface ddeSVGEllipseElement extends SVGEllipseElement{ append: ddeAppend; } interface ddeSVGFEBlendElement extends SVGFEBlendElement{ append: ddeAppend; } interface ddeSVGFEColorMatrixElement extends SVGFEColorMatrixElement{ append: ddeAppend; } interface ddeSVGFEComponentTransferElement extends SVGFEComponentTransferElement{ append: ddeAppend; } interface ddeSVGFECompositeElement extends SVGFECompositeElement{ append: ddeAppend; } interface ddeSVGFEConvolveMatrixElement extends SVGFEConvolveMatrixElement{ append: ddeAppend; } interface ddeSVGFEDiffuseLightingElement extends SVGFEDiffuseLightingElement{ append: ddeAppend; } interface ddeSVGFEDisplacementMapElement extends SVGFEDisplacementMapElement{ append: ddeAppend; } interface ddeSVGFEDistantLightElement extends SVGFEDistantLightElement{ append: ddeAppend; } interface ddeSVGFEDropShadowElement extends SVGFEDropShadowElement{ append: ddeAppend; } interface ddeSVGFEFloodElement extends SVGFEFloodElement{ append: ddeAppend; } interface ddeSVGFEFuncAElement extends SVGFEFuncAElement{ append: ddeAppend; } interface ddeSVGFEFuncBElement extends SVGFEFuncBElement{ append: ddeAppend; } interface ddeSVGFEFuncGElement extends SVGFEFuncGElement{ append: ddeAppend; } interface ddeSVGFEFuncRElement extends SVGFEFuncRElement{ append: ddeAppend; } interface ddeSVGFEGaussianBlurElement extends SVGFEGaussianBlurElement{ append: ddeAppend; } interface ddeSVGFEImageElement extends SVGFEImageElement{ append: ddeAppend; } interface ddeSVGFEMergeElement extends SVGFEMergeElement{ append: ddeAppend; } interface ddeSVGFEMergeNodeElement extends SVGFEMergeNodeElement{ append: ddeAppend; } interface ddeSVGFEMorphologyElement extends SVGFEMorphologyElement{ append: ddeAppend; } interface ddeSVGFEOffsetElement extends SVGFEOffsetElement{ append: ddeAppend; } interface ddeSVGFEPointLightElement extends SVGFEPointLightElement{ append: ddeAppend; } interface ddeSVGFESpecularLightingElement extends SVGFESpecularLightingElement{ append: ddeAppend; } interface ddeSVGFESpotLightElement extends SVGFESpotLightElement{ append: ddeAppend; } interface ddeSVGFETileElement extends SVGFETileElement{ append: ddeAppend; } interface ddeSVGFETurbulenceElement extends SVGFETurbulenceElement{ append: ddeAppend; } interface ddeSVGFilterElement extends SVGFilterElement{ append: ddeAppend; } interface ddeSVGForeignObjectElement extends SVGForeignObjectElement{ append: ddeAppend; } interface ddeSVGGElement extends SVGGElement{ append: ddeAppend; } interface ddeSVGImageElement extends SVGImageElement{ append: ddeAppend; } interface ddeSVGLineElement extends SVGLineElement{ append: ddeAppend; } interface ddeSVGLinearGradientElement extends SVGLinearGradientElement{ append: ddeAppend; } interface ddeSVGMarkerElement extends SVGMarkerElement{ append: ddeAppend; } interface ddeSVGMaskElement extends SVGMaskElement{ append: ddeAppend; } interface ddeSVGMetadataElement extends SVGMetadataElement{ append: ddeAppend; } interface ddeSVGMPathElement extends SVGMPathElement{ append: ddeAppend; } interface ddeSVGPathElement extends SVGPathElement{ append: ddeAppend; } interface ddeSVGPatternElement extends SVGPatternElement{ append: ddeAppend; } interface ddeSVGPolygonElement extends SVGPolygonElement{ append: ddeAppend; } interface ddeSVGPolylineElement extends SVGPolylineElement{ append: ddeAppend; } interface ddeSVGRadialGradientElement extends SVGRadialGradientElement{ append: ddeAppend; } interface ddeSVGRectElement extends SVGRectElement{ append: ddeAppend; } interface ddeSVGScriptElement extends SVGScriptElement{ append: ddeAppend; } interface ddeSVGSetElement extends SVGSetElement{ append: ddeAppend; } interface ddeSVGStopElement extends SVGStopElement{ append: ddeAppend; } interface ddeSVGStyleElement extends SVGStyleElement{ append: ddeAppend; } interface ddeSVGSVGElement extends SVGSVGElement{ append: ddeAppend; } interface ddeSVGSwitchElement extends SVGSwitchElement{ append: ddeAppend; } interface ddeSVGSymbolElement extends SVGSymbolElement{ append: ddeAppend; } interface ddeSVGTextElement extends SVGTextElement{ append: ddeAppend; } interface ddeSVGTextPathElement extends SVGTextPathElement{ append: ddeAppend; } interface ddeSVGTitleElement extends SVGTitleElement{ append: ddeAppend; } interface ddeSVGTSpanElement extends SVGTSpanElement{ append: ddeAppend; } interface ddeSVGUseElement extends SVGUseElement{ append: ddeAppend; } interface ddeSVGViewElement extends SVGViewElement{ append: ddeAppend; } // editorconfig-checker-enable