UNPKG

jsfast

Version:

Fastjs(jsfast) is a useful, lightweight JavaScript library for any types of project.

51 lines (50 loc) 4.66 kB
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 {};