UNPKG

@meui-js/core

Version:
665 lines (652 loc) 26.6 kB
import * as meui_native from 'meui-native'; import { Box, UI_STATE, Path2D as Path2D$1, CanvasGradient as CanvasGradient$1 } from 'meui-native'; export { TextMetrics } from 'meui-native'; import { Property } from 'csstype'; declare type Length<T = (string & {}) | 0> = number | "auto" | T; interface MeuiStyle { borderRadius?: [number, number, number, number] | number; borderColor?: string; backgroundColor?: Property.BackgroundColor; fontColor?: Property.Color; fontSize?: number; fontFamily?: string; textAlign?: "center-left" | "center-right" | "center" | "top-left" | "top-right" | "top-center" | "bottom-left" | "bottom-right" | "bottom-center"; backgroundImage?: string; contentImage?: string; transform?: string; transformOrigin?: [number, number] | ["left" | "center" | "right", "top" | "center" | "bottom"]; flexWrap?: "nowrap" | "wrap" | "wrap-reverse"; flexDirection?: "row" | "column" | "row-reverse" | "column-reverse"; alignItems?: "stretch" | "flex-start" | "center" | "flex-end" | "baseline"; alignSelf?: "auto" | "stretch" | "flex-start" | "center" | "flex-end" | "baseline"; alignContent?: "stretch" | "flex-start" | "center" | "flex-end" | "space-between" | "space-around"; justifyContent?: "flex-start" | "center" | "flex-end" | "space-between" | "space-around"; margin?: [number, number, number, number] | number; border?: [number, number, number, number] | number; padding?: [number, number, number, number] | number; overflow?: "visible" | "hidden" | "scroll" | "auto"; flexBasis?: number; flexGrow?: number; flexShrink?: number; width?: Length; height?: Length; minWidth?: Length; minHeight?: Length; maxWidth?: Length; maxHeight?: Length; marginLeft?: Length; marginTop?: Length; marginBottom?: Length; marginRight?: Length; marginStart?: Length; marginEnd?: Length; rowGap?: Length; columnGap?: Length; paddingLeft?: Length; paddingTop?: Length; paddingBottom?: Length; paddingRight?: Length; paddingStart?: Length; paddingEnd?: Length; borderLeft?: number; borderTop?: number; borderBottom?: number; borderRight?: number; borderStart?: number; borderEnd?: number; borderTopLeftRadius?: number; borderTopRightRadius?: number; borderBottomRightRadius?: number; borderBottomLeftRadius?: number; left?: Length; right?: Length; top?: Length; bottom?: Length; zIndex?: number; FOCUS?: MeuiStyle; ACTIVE?: MeuiStyle; HOVER?: MeuiStyle; SELECT?: MeuiStyle; DISABLE?: MeuiStyle; CHECK?: MeuiStyle; } declare type Matrix2D = [number, number, number, number, number, number]; interface MeuiEventMap { mousedown: MeuiMouseEvent; mouseup: MeuiMouseEvent; mousemove: MeuiMouseEvent; mouseout: MeuiMouseEvent; mouseover: MeuiMouseEvent; mousewheel: MeuiWheelEvent; keydown: MeuiKeyboardEvent; keyup: MeuiKeyboardEvent; click: MeuiMouseEvent; focusin: MeuiFocusEvent; focusout: MeuiFocusEvent; } interface EventInit { bubbles?: boolean; cancelable?: boolean; } interface MouseEventInit { button?: number; buttons?: number; clientX?: number; clientY?: number; movementX?: number; movementY?: number; screenX?: number; screenY?: number; } interface WheelEventInit extends MouseEventInit { deltaMode?: number; deltaX?: number; deltaY?: number; deltaZ?: number; } declare class MeuiEvent implements MeuiEvent { readonly bubbles: boolean; readonly cancelable: boolean; readonly type: string; target: Element | null; currentTarget: Element | null; constructor(type: string, eventInitDict?: EventInit); stopPropagation(): void; } declare class MeuiMouseEvent extends MeuiEvent { readonly button: number; readonly buttons: number; readonly clientX: number; readonly clientY: number; readonly offsetX: number; readonly offsetY: number; readonly screenX: number; readonly screenY: number; readonly x: number; readonly y: number; constructor(type: string, eventInitDict?: MouseEventInit); } declare class MeuiWheelEvent extends MeuiMouseEvent { deltaX: number; deltaY: number; deltaZ: number; constructor(type: string, eventInitDict?: WheelEventInit); } interface EventModifierInit { altKey?: boolean; ctrlKey?: boolean; metaKey?: boolean; modifierAltGraph?: boolean; modifierCapsLock?: boolean; modifierFn?: boolean; modifierFnLock?: boolean; modifierHyper?: boolean; modifierNumLock?: boolean; modifierScrollLock?: boolean; modifierSuper?: boolean; modifierSymbol?: boolean; modifierSymbolLock?: boolean; shiftKey?: boolean; } interface KeyboardEventInit extends EventModifierInit { /** @deprecated */ charCode?: number; code?: string; isComposing?: boolean; key?: string; /** @deprecated */ keyCode?: number; location?: number; repeat?: boolean; } /** KeyboardEvent objects describe a user interaction with the keyboard; each event describes a single interaction between the user and a key (or combination of a key with modifier keys) on the keyboard. */ declare class MeuiKeyboardEvent extends MeuiEvent { readonly altKey: boolean; readonly ctrlKey: boolean; readonly key: string; /** @deprecated */ readonly keyCode: number; readonly shiftKey: boolean; readonly DOM_KEY_LOCATION_LEFT: number; readonly DOM_KEY_LOCATION_NUMPAD: number; readonly DOM_KEY_LOCATION_RIGHT: number; readonly DOM_KEY_LOCATION_STANDARD: number; constructor(type: string, eventInitDict?: KeyboardEventInit); } interface FocusEventInit { relatedTarget?: Element | null; } declare class MeuiFocusEvent extends MeuiEvent { readonly relatedTarget: Element | null; constructor(type: string, eventInitDict?: FocusEventInit); } declare class CustomEvent extends MeuiEvent { constructor(type: string); } declare type EventListener<K extends string> = K extends keyof MeuiEventMap ? (ev: MeuiEventMap[K]) => void : (ev: MeuiEvent) => void; declare type EventRecord<K extends string> = Array<{ useCapture: boolean; listener: EventListener<K>; }>; declare type EventCollection = { [K in string]: EventRecord<K>; }; declare class Element extends Node { nativeBox: Box; children: Node[]; eventListeners: EventCollection; focusable: boolean; style: any; nodeType: NodeType; get onmousedown(): null; get onmouseup(): null; get onmousemove(): null; get onmouseout(): null; get onmouseover(): null; get onmousewheel(): null; get onkeydown(): null; get onkeyup(): null; get onclick(): null; get onfocusin(): null; get onfocusout(): null; constructor(type?: string, style?: MeuiStyle); getStyle(state: UI_STATE): Record<string, any>; private _setStyle; setStyle(style: MeuiStyle): void; checkConsistency(): void; insertChildElement(child: Element, index: number): void; updateText(): void; removeChild(child: Node): void; insertBefore(child: Node, beforeChild: Node | null): Node; getState(): UI_STATE; setState(state: UI_STATE): void; hit(x: number, y: number): boolean; search(x: number, y: number): number[]; getNativeObject(): Box; addEventListener<K extends string>(type: K, listener: EventListener<K>, useCapture?: boolean): void; removeEventListener<K extends string>(type: K, listener: EventListener<K>, useCapture?: boolean): void; toClient(x: number, y: number): [number, number]; toOffset(x: number, y: number): [number, number]; tryHandleEvent(event: MeuiEvent, capture: boolean): void; capturingPhase(node: Element, event: MeuiEvent): void; bubblingPhase(node: Element, event: MeuiEvent): void; dispatchEvent(event: MeuiEvent): void; getPath(): Element[]; get textContent(): string; set textContent(val: string); get scrollWidth(): number; get scrollHeight(): number; get clientWidth(): number; get clientHeight(): number; get scrollTopMax(): number; get scrollLeftMax(): number; get scrollTop(): number; set scrollTop(val: number); get scrollLeft(): number; set scrollLeft(val: number); } declare abstract class Node { childNodes: Node[]; parentNode: Element | null; abstract nodeType: NodeType; private _previousSibling; private _nextSibling; constructor(); get firstChild(): Node; get lastChild(): Node; get nextSibling(): Node | null; get previousSibling(): Node | null; appendChild(child: Node): void; insertBefore(child: Node, ref: Node | null): Node; removeChild(child: Node): void; remove(): void; } declare enum NodeType { ELEMENT_NODE = 1, TEXT_NODE = 3 } declare class Text extends Node { nodeType: NodeType; text: string; constructor(text: string); set data(value: string); } declare class DivElement extends Element { constructor(style?: MeuiStyle); } declare class StackElement extends Element { constructor(style?: MeuiStyle); } interface CanvasPath { arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void; arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; closePath(): void; ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void; lineTo(x: number, y: number): void; moveTo(x: number, y: number): void; quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; rect(x: number, y: number, w: number, h: number): void; } /** This Canvas 2D API interface is used to declare a path that can then be used on a CanvasRenderingContext2D object. The path methods of the CanvasRenderingContext2D interface are also present on this interface, which gives you the convenience of being able to retain and replay your path whenever desired. */ declare class Path2D implements CanvasPath { native: Path2D$1; constructor(path?: Path2D | string); arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void; arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; closePath(): void; ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void; lineTo(x: number, y: number): void; moveTo(x: number, y: number): void; quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; rect(x: number, y: number, w: number, h: number): void; /** Adds to the path the path given by the argument. */ addPath(path: Path2D, transform?: Matrix2D): void; } /** An opaque object describing a gradient. It is returned by the methods CanvasRenderingContext2D.createLinearGradient() or CanvasRenderingContext2D.createRadialGradient(). */ declare class CanvasGradient { native: CanvasGradient$1; constructor(startAngle: number, x: number, y: number); constructor(x0: number, y0: number, x1: number, y1: number); constructor(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number); /** * Adds a color stop with the given color to the gradient at the given offset. 0.0 is the offset at one end of the gradient, 1.0 is the offset at the other end. * * Throws an "IndexSizeError" DOMException if the offset is out of range. Throws a "SyntaxError" DOMException if the color cannot be parsed. */ addColorStop(offset: number, color: string): void; } declare enum COLOR_FORMAT { COLOR_RGBA = 0, COLOR_RGB = 1, COLOR_BGRA = 2, COLOR_BGR = 3 } /** The dimensions of a piece of text in the canvas, as created by the CanvasRenderingContext2D.measureText() method. */ interface TextMetrics { /** Returns the measurement described below. */ readonly actualBoundingBoxAscent: number; /** Returns the measurement described below. */ readonly actualBoundingBoxDescent: number; /** Returns the measurement described below. */ readonly actualBoundingBoxLeft: number; /** Returns the measurement described below. */ readonly actualBoundingBoxRight: number; /** Returns the measurement described below. */ readonly fontBoundingBoxAscent: number; /** Returns the measurement described below. */ readonly fontBoundingBoxDescent: number; /** Returns the measurement described below. */ readonly width: number; } /** The underlying pixel data of an area of a <canvas> element. It is created using the ImageData() constructor or creator methods on the CanvasRenderingContext2D object associated with a canvas: createImageData() and getImageData(). It can also be used to set a part of the canvas by using putImageData(). */ declare class ImageData { /** Returns the one-dimensional array containing the data in RGBA order, as integers in the range 0 to 255. */ readonly data: Uint8ClampedArray; /** Returns the actual dimensions of the data in the ImageData object, in pixels. */ readonly height: number; /** Returns the actual dimensions of the data in the ImageData object, in pixels. */ readonly width: number; constructor(sw: number, sh: number, settings?: ImageDataSettings); constructor(data: Uint8ClampedArray, sw: number, sh?: number, settings?: ImageDataSettings); } interface CanvasCompositing { globalAlpha: number; globalCompositeOperation: GlobalCompositeOperation; } interface CanvasDrawImage { drawImage(image: CanvasImageSource, dx: number, dy: number): void; drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void; drawImage(image: CanvasImageSource, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void; } interface CanvasDrawPath { beginPath(): void; clip(fillRule?: CanvasFillRule): void; clip(path: Path2D, fillRule?: CanvasFillRule): void; fill(fillRule?: CanvasFillRule): void; fill(path: Path2D, fillRule?: CanvasFillRule): void; isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean; isPointInPath(path: Path2D, x: number, y: number, fillRule?: CanvasFillRule): boolean; isPointInStroke(x: number, y: number): boolean; isPointInStroke(path: Path2D, x: number, y: number): boolean; stroke(): void; stroke(path: Path2D): void; } interface CanvasFillStrokeStyles { fillStyle: string | CanvasGradient | CanvasPattern; strokeStyle: string | CanvasGradient | CanvasPattern; createConicGradient(startAngle: number, x: number, y: number): CanvasGradient; createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient; createPattern(image: CanvasImageSource, repetition: string | null): CanvasPattern | null; createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient; } interface CanvasFilters { filter: string; } interface CanvasImageData { createImageData(sw: number, sh: number, settings?: ImageDataSettings): ImageData; createImageData(imagedata: ImageData): ImageData; getImageData(sx: number, sy: number, sw: number, sh: number, settings?: ImageDataSettings): ImageData; putImageData(imagedata: ImageData, dx: number, dy: number): void; putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number): void; } interface CanvasImageSmoothing { imageSmoothingEnabled: boolean; imageSmoothingQuality: ImageSmoothingQuality; } interface CanvasPathDrawingStyles { lineCap: CanvasLineCap; lineDashOffset: number; lineJoin: CanvasLineJoin; lineWidth: number; miterLimit: number; getLineDash(): number[]; setLineDash(segments: number[]): void; } /** An opaque object describing a pattern, based on an image, a canvas, or a video, created by the CanvasRenderingContext2D.createPattern() method. */ declare class CanvasPattern { /** Sets the transformation matrix that will be used when rendering the pattern during a fill or stroke painting operation. */ constructor(); setTransform(transform?: DOMMatrix2DInit): void; } interface CanvasRect { clearRect(x: number, y: number, w: number, h: number): void; fillRect(x: number, y: number, w: number, h: number): void; strokeRect(x: number, y: number, w: number, h: number): void; } interface CanvasShadowStyles { shadowBlur: number; shadowColor: string; shadowOffsetX: number; shadowOffsetY: number; } interface CanvasState { restore(): void; save(): void; } interface CanvasText { fillText(text: string, x: number, y: number, maxWidth?: number): void; measureText(text: string): TextMetrics; strokeText(text: string, x: number, y: number, maxWidth?: number): void; } interface CanvasTextDrawingStyles { direction: CanvasDirection; font: string; textAlign: CanvasTextAlign; textBaseline: CanvasTextBaseline; } interface CanvasTransform { getTransform(): Matrix2D; resetTransform(): void; rotate(angle: number): void; scale(x: number, y: number): void; setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void; setTransform(transform?: Matrix2D): void; transform(a: number, b: number, c: number, d: number, e: number, f: number): void; translate(x: number, y: number): void; } interface CanvasUserInterface { drawFocusIfNeeded(element: Element): void; drawFocusIfNeeded(path: Path2D, element: Element): void; } declare class CanvasRenderingContext2D implements CanvasCompositing, CanvasDrawImage, CanvasDrawPath, CanvasFillStrokeStyles, CanvasFilters, CanvasImageData, CanvasImageSmoothing, CanvasPath, CanvasPathDrawingStyles, CanvasRect, CanvasShadowStyles, CanvasState, CanvasText, CanvasTextDrawingStyles, CanvasTransform, CanvasUserInterface { contextType: string; contextAttributes?: Record<string, string>; canvas: CanvasElement; private _fillStyle; private _strokeStyle; private _lineCap; private _lineDashOffset; private _lineJoin; private _lineWidth; private _miterLimit; private _lineDashSegments; shadowBlur: number; shadowColor: string; shadowOffsetX: number; shadowOffsetY: number; private _direction; private _font; private _textAlign; private _textBaseline; globalAlpha: number; globalCompositeOperation: GlobalCompositeOperation; filter: string; imageSmoothingEnabled: boolean; imageSmoothingQuality: ImageSmoothingQuality; private _beginPath; private _closePath; private _moveTo; private _lineTo; private _bezierCurveTo; private _quadraticCurveTo; private _strokeRect; private _fillRect; private _clearRect; private _rect; private _ellipse; private _arc; private _arcTo; private _setLineCap; private _setLineJoin; private _setLineWidth; private _setMiterLimit; private _setLineDash; private _stroke; private _fill; private _clip; private _scale; private _rotate; private _translate; private _transform; private _setTransform; private _resetTransform; private _getTransform; private _putImage; private _getImage; private _fillText; private _setFontSize; private _setFontFamily; private _setTextAlign; private _setTextBaseline; private _setDirection; private _strokeText; private _measureText; private _save; private _restore; private stateStack; _setStrokeStyle: { (r: number, g: number, b: number, a: number): void; (strokeStyle: meui_native.CanvasGradient): void; }; _setFillStyle: { (r: number, g: number, b: number, a: number): void; (strokeStyle: meui_native.CanvasGradient): void; }; constructor(canvas: CanvasElement, contextType: string, contextAttributes?: Record<string, string>); restore(): void; save(): void; drawFocusIfNeeded(element: Element): void; drawFocusIfNeeded(path: Path2D, element: Element): void; drawImage(image: CanvasImageSource, dx: number, dy: number): void; drawImage(image: CanvasImageSource, dx: number, dy: number, dw: number, dh: number): void; drawImage(image: CanvasImageSource, sx: number, sy: number, sw: number, sh: number, dx: number, dy: number, dw: number, dh: number): void; addColorStop(offset: number, color: string): void; getTransform(): Matrix2D; resetTransform(): void; rotate(angle: number): void; scale(x: number, y: number): void; setTransform(a: number, b: number, c: number, d: number, e: number, f: number): void; setTransform(transform?: Matrix2D): void; transform(a: number, b: number, c: number, d: number, e: number, f: number): void; translate(x: number, y: number): void; fillText(text: string, x: number, y: number, maxWidth?: number): void; measureText(text: string): TextMetrics; strokeText(text: string, x: number, y: number, maxWidth?: number): void; getLineDash(): number[]; setLineDash(segments: number[]): void; private updateStrokeStyle; private updateFillStyle; get lineCap(): CanvasLineCap; set lineCap(val: CanvasLineCap); get lineDashOffset(): number; set lineDashOffset(val: number); get lineJoin(): CanvasLineJoin; set lineJoin(val: CanvasLineJoin); get lineWidth(): number; set lineWidth(val: number); get miterLimit(): number; set miterLimit(val: number); get strokeStyle(): string | CanvasGradient | CanvasPattern; set strokeStyle(val: string | CanvasGradient | CanvasPattern); get fillStyle(): string | CanvasGradient | CanvasPattern; set fillStyle(val: string | CanvasGradient | CanvasPattern); get font(): string; set font(val: string); get direction(): CanvasDirection; set direction(direction: CanvasDirection); get textAlign(): CanvasTextAlign; set textAlign(textAlign: CanvasTextAlign); get textBaseline(): CanvasTextBaseline; set textBaseline(textBaseline: CanvasTextBaseline); clearRect(x: number, y: number, w: number, h: number): void; fillRect(x: number, y: number, w: number, h: number): void; strokeRect(x: number, y: number, w: number, h: number): void; createConicGradient(startAngle: number, x: number, y: number): CanvasGradient; createLinearGradient(x0: number, y0: number, x1: number, y1: number): CanvasGradient; createPattern(image: CanvasImageSource, repetition: string | null): CanvasPattern | null; createRadialGradient(x0: number, y0: number, r0: number, x1: number, y1: number, r1: number): CanvasGradient; beginPath(): void; clip(fillRule?: CanvasFillRule): void; clip(path: Path2D, fillRule?: CanvasFillRule): void; fill(fillRule?: CanvasFillRule): void; fill(path: Path2D, fillRule?: CanvasFillRule): void; isPointInPath(x: number, y: number, fillRule?: CanvasFillRule): boolean; isPointInPath(path: Path2D, x: number, y: number, fillRule?: CanvasFillRule): boolean; isPointInStroke(x: number, y: number): boolean; isPointInStroke(path: Path2D, x: number, y: number): boolean; stroke(): void; stroke(path: Path2D): void; arc(x: number, y: number, radius: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void; arcTo(x1: number, y1: number, x2: number, y2: number, radius: number): void; bezierCurveTo(cp1x: number, cp1y: number, cp2x: number, cp2y: number, x: number, y: number): void; closePath(): void; ellipse(x: number, y: number, radiusX: number, radiusY: number, rotation: number, startAngle: number, endAngle: number, counterclockwise?: boolean): void; lineTo(x: number, y: number): void; moveTo(x: number, y: number): void; quadraticCurveTo(cpx: number, cpy: number, x: number, y: number): void; rect(x: number, y: number, w: number, h: number): void; putImageData(imagedata: ImageData, dx: number, dy: number, format?: COLOR_FORMAT): void; putImageData(imagedata: ImageData, dx: number, dy: number, dirtyX: number, dirtyY: number, dirtyWidth: number, dirtyHeight: number, format?: COLOR_FORMAT): void; createImageData(sw: number, sh: number, settings?: ImageDataSettings): ImageData; createImageData(imagedata: ImageData): ImageData; getImageData(sx: number, sy: number, sw: number, sh: number, settings?: ImageDataSettings): ImageData; } declare class CanvasElement extends Element { private context; private _context2d; private getWidth; private setWidth; private setHeight; private getHeight; private getFit; private setFit; constructor(style?: MeuiStyle); get width(): number; set width(val: number); get height(): number; set height(val: number); get fit(): boolean; set fit(val: boolean); getContext(contextType: string, contextAttributes?: Record<string, string>): CanvasRenderingContext2D | undefined; } declare function createElement(type?: string, style?: MeuiStyle): Element; declare class MEUI { private nativeMEUI; private root; private mouseX; private mouseY; private mouseHit; private focusElement; private intervalId; private width; private height; onunload: () => void; constructor(width: number, height: number); private diffPath; onExit(): void; onEvent(): void; onFrameTick(): void; registerCallback(): void; flush(): void; update(): void; debug(): void; addFontFace(fontFamily: string, fileName: string): void; getConnectNumber(): number; getRoot(): Element; pending(): number; nextEvent(): meui_native.MeuiRawEvent | null; searchNode(x: number, y: number): Element | null; } export { COLOR_FORMAT, CanvasElement, CanvasRenderingContext2D, CustomEvent, DivElement, Element, ImageData, MEUI, MeuiEvent, MeuiFocusEvent, MeuiKeyboardEvent, MeuiMouseEvent, MeuiStyle, MeuiWheelEvent, Node, NodeType, Path2D, StackElement, Text, createElement };