import { PromiseOrValue, NodeOrString } from "./interfaces"; import Deferred = require("./_base/Deferred"); import { DeclareConstructor } from "./_base/declare"; declare namespace dojoHtml { type ContentSetterContent = string | Node | ArrayLike; interface ContentSetterParams { node?: NodeOrString; content?: ContentSetterContent; id?: string; cleanContent?: boolean; extractContent?: boolean; parseContent?: boolean; parserScope?: boolean; startup?: boolean; onBegin?: Function; onEnd?: Function; tearDown?: Function; onContentError?: Function; onExecError?: Function; } interface ContentSetter { /** * An node which will be the parent element that we set content into */ node: NodeOrString; /** * The content to be placed in the node. Can be an HTML string, a node reference, or a enumerable list of nodes */ content: ContentSetterContent; /** * Usually only used internally, and auto-generated with each instance */ id: string; /** * Should the content be treated as a full html document, * and the real content stripped of , wrapper before injection */ cleanContent: boolean; /** * Should the content be treated as a full html document, * and the real content stripped of ` ` wrapper before injection */ extractContent: boolean; /** * Should the node by passed to the parser after the new content is set */ parseContent: boolean; /** * Flag passed to parser. Root for attribute names to search for. If scopeName is dojo, * will search for data-dojo-type (or dojoType). For backwards compatibility * reasons defaults to dojo._scopeName (which is "dojo" except when * multi-version support is used, when it will be something like dojo16, dojo20, etc.) */ parserScope: string; /** * Start the child widgets after parsing them. Only obeyed if parseContent is true. */ startup: boolean; /** * front-end to the set-content sequence */ set(cont?: ContentSetterContent, params?: ContentSetterParams): Promise | Node; /** * sets the content on the node */ setContent(): void; /** * cleanly empty out existing content */ empty(): void; /** * Called after instantiation, but before set(); * It allows modification of any of the object properties - * including the node and content provided - before the set operation actually takes place */ onBegin(): Node; /** * Called after set(), when the new content has been pushed into the node * It provides an opportunity for post-processing before handing back the node to the caller * This default implementation checks a parseContent flag to optionally run the dojo parser over the new content */ onEnd(): Node; /** * manually reset the Setter instance if its being re-used for example for another set() */ tearDown(): void; onContentError(): string; onExecError(): string; _mixin(params: ContentSetterParams): void; parseDeferred: Deferred; /** * runs the dojo parser over the node contents, storing any results in this.parseResults */ _parse(): void; /** * shows user the string that is returned by on[type]Error * override/implement on[type]Error and return your own string to customize */ _onError(type: string, err: Error, consoleText?: string): void; } interface ContentSetterConstructor extends DeclareConstructor { new(params?: ContentSetterParams, node?: NodeOrString): ContentSetter; } interface Html { /** * removes !DOCTYPE and title elements from the html string. * * khtml is picky about dom faults, you can't attach a style or `` node as child of body * must go into head, so we need to cut out those tags */ _secureForInnerHtml(cont: string): string; /** * Deprecated, should use dojo/dom-constuct.empty() directly, remove in 2.0. */ _emptyNode(node: NodeOrString): void; /** * inserts the given content into the given node */ _setNodeContent<T extends Node>(node: Node, cont: string | Node | ArrayLike<T>): Node; _ContentSetter: ContentSetterConstructor; /** * inserts (replaces) the given content into the given node. dojo/dom-construct.place(cont, node, "only") * may be a better choice for simple HTML insertion. */ set(node: Node, cont?: ContentSetterContent, params?: ContentSetterParams): PromiseOrValue<Node>; } } declare const dojoHtml: dojoHtml.Html; export = dojoHtml;