jsfast
Version:
Fastjs(jsfast) is a useful, lightweight JavaScript library for any types of project.
51 lines (50 loc) • 4.66 kB
TypeScript
import { FastjsDom } from "./dom-types";
export type PushTarget = "firstElementChild" | "lastElementChild" | "randomElementChild" | "beforeElement" | "afterElement" | "replaceElement" | number;
export type PushReturn<T, ElementType extends ElementList> = {
isReplace: T extends "replaceElement" ? true : false;
newElement: T extends "replaceElement" ? FastjsDom<ElementList> : never;
oldElement: T extends "replaceElement" ? FastjsDom<ElementType> : never;
/** @description index to parent -> children, start with 0 */
index: number;
/** @description FastjsDom point to the new element */
el: FastjsDom<ElementList>;
/** @description FastjsDom point to the origin element when you call(this) */
origin: FastjsDom<ElementType>;
father: FastjsDom | null;
};
export type InsertTarget = "first" | "last" | "random" | "before" | "after" | number;
export type InsertReturn<ElementType extends ElementList> = {
/** @description index to parent -> children, start with 0 */
index: number;
/** @description FastjsDom point to the new element */
added: FastjsDom;
/** @description FastjsDom point to the origin element when you call(this) */
origin: FastjsDom<ElementType>;
};
export type EventCallback<ElementType extends ElementList> = (el: FastjsDom<ElementType>, event: Event) => void;
export type EachCallback<ElementType extends ElementList> = (el: FastjsDom<ElementType>, dom: ElementType, index: number) => void;
export type EventList<ElementType extends ElementList> = Array<{
type: keyof HTMLElementEventMap;
callback: EventCallback<ElementType>;
trigger: EventListener;
remove: () => void;
}>;
export type ElementList = HTMLElement | HTMLAnchorElement | HTMLAreaElement | HTMLAudioElement | HTMLBodyElement | HTMLBaseElement | HTMLBRElement | HTMLButtonElement | HTMLCanvasElement | HTMLDivElement | HTMLDListElement | HTMLDataElement | HTMLDataListElement | HTMLDialogElement | HTMLDetailsElement | HTMLEmbedElement | HTMLFormElement | HTMLFieldSetElement | HTMLHRElement | HTMLHeadingElement | HTMLHtmlElement | HTMLHeadingElement | HTMLIFrameElement | HTMLImageElement | HTMLInputElement | HTMLLegendElement | HTMLLabelElement | HTMLLIElement | HTMLLinkElement | HTMLMapElement | HTMLMenuElement | HTMLMediaElement | HTMLMeterElement | HTMLModElement | HTMLMetaElement | HTMLObjectElement | HTMLOListElement | HTMLOptGroupElement | HTMLParagraphElement | HTMLPreElement | HTMLProgressElement | HTMLQuoteElement | HTMLScriptElement | HTMLSelectElement | HTMLSpanElement | HTMLSourceElement | HTMLStyleElement | HTMLTableCaptionElement | HTMLTableElement | HTMLTableRowElement | HTMLTableCellElement | HTMLTextAreaElement | HTMLTimeElement | HTMLTitleElement | HTMLUListElement | HTMLVideoElement | HTMLUnknownElement | SVGElements;
type SVGElements = SVGElement | SVGAnimateElement | SVGAnimateMotionElement | SVGAnimateTransformElement | SVGCircleElement | SVGClipPathElement | SVGDefsElement | SVGDescElement | SVGEllipseElement | SVGFEBlendElement | SVGFEColorMatrixElement | SVGFEComponentTransferElement | SVGFECompositeElement | SVGFEConvolveMatrixElement | SVGFEDiffuseLightingElement | SVGFEDisplacementMapElement | SVGFEDistantLightElement | SVGFEDropShadowElement | SVGFEFloodElement | SVGFEFuncAElement | SVGFEFuncBElement | SVGFEFuncGElement | SVGFEFuncRElement | SVGFEGaussianBlurElement | SVGFEImageElement | SVGFEMergeElement | SVGFEMergeNodeElement | SVGFEMorphologyElement | SVGFEOffsetElement | SVGFEPointLightElement | SVGFESpecularLightingElement | SVGFESpotLightElement | SVGFETileElement | SVGFETurbulenceElement | SVGFilterElement | SVGForeignObjectElement | SVGGElement | SVGImageElement | SVGLineElement | SVGLinearGradientElement | SVGMarkerElement | SVGMaskElement | SVGMetadataElement | SVGPathElement | SVGPatternElement | SVGPolygonElement | SVGPolylineElement | SVGRadialGradientElement | SVGRectElement | SVGSVGElement | SVGScriptElement | SVGSetElement | SVGStopElement | SVGStyleElement | SVGSwitchElement | SVGSymbolElement | SVGTextElement | SVGTextPathElement | SVGTitleElement | SVGTSpanElement | SVGUseElement | SVGViewElement;
export type CustomProps = {
html?: string;
text?: string;
css?: StyleObj | string;
class?: string[] | string;
attr?: {
[key: string]: string | null;
};
val?: string;
};
export type FastjsDomProps<ElementType extends ElementList> = CustomProps & Partial<Record<keyof ElementType, any>>;
export type StyleObj = Partial<CSSStyleDeclaration>;
export type StyleObjKeys = keyof StyleObj;
export type SetStyleObj = {
[K in StyleObjKeys]?: StyleObj[K] | null;
};
export {};