|
|
import _WidgetBase = require("dijit/_WidgetBase");
|
|
|
|
|
|
type _WidgetBaseConstructor = typeof _WidgetBase;
|
|
|
|
|
|
export type DojoNodePosition = "first" | "after" | "before" | "last" | "replace" | "only" | number;
|
|
|
|
|
|
export interface BuildContext<TNode extends Node = Node> {
|
|
|
getDomNode(): TNode;
|
|
|
|
|
|
placeAt(refNode: string | Node, position?: DojoNodePosition): void;
|
|
|
}
|
|
|
|
|
|
export function isNode(el: any): el is Node {
|
|
|
return el && el.nodeName && el.nodeType;
|
|
|
}
|
|
|
|
|
|
export function isElementNode(el: any): el is Element {
|
|
|
return isNode(el) && el.nodeType === 1;
|
|
|
}
|
|
|
|
|
|
export function isTextNode(el: any): el is Text {
|
|
|
return isNode(el) && el.nodeType === 3;
|
|
|
}
|
|
|
|
|
|
export function isProcessingInstructionNode(el: any): el is ProcessingInstruction {
|
|
|
return isNode(el) && el.nodeType === 7;
|
|
|
}
|
|
|
|
|
|
export function isCommentNode(el: any): el is Comment {
|
|
|
return isNode(el) && el.nodeType === 8;
|
|
|
}
|
|
|
|
|
|
export function isDocumentNode(el: any): el is Document {
|
|
|
return isNode(el) && el.nodeType === 9;
|
|
|
}
|
|
|
|
|
|
export function isDocumentTypeNode(el: any): el is DocumentType {
|
|
|
return isNode(el) && el.nodeType === 10;
|
|
|
}
|
|
|
|
|
|
export function isDocumentFragmentNode(el: any): el is DocumentFragment {
|
|
|
return isNode(el) && el.nodeType === 11;
|
|
|
}
|
|
|
|
|
|
export function isWidget(v: any): v is _WidgetBase {
|
|
|
return v && "domNode" in v;
|
|
|
}
|
|
|
|
|
|
export function isBuildContext(v: any): v is BuildContext {
|
|
|
return typeof v === "object" && typeof v.getDomElement === "function";
|
|
|
}
|
|
|
|
|
|
export function isPlainObject(v: object) {
|
|
|
if (typeof v !== "object")
|
|
|
return false;
|
|
|
|
|
|
const vp = Object.getPrototypeOf(v);
|
|
|
return !vp || vp === Object.prototype;
|
|
|
}
|
|
|
|
|
|
export function isWidgetConstructor(v: any): v is _WidgetBaseConstructor {
|
|
|
return typeof v === "function" && v.prototype && (
|
|
|
"domNode" in v.prototype ||
|
|
|
"buildRendering" in v.prototype
|
|
|
);
|
|
|
}
|
|
|
|