/** * @license jCanvas TypeScript Declarations * Copyright 2024 Caleb Evans * Released under the MIT license */ declare module "jcanvas"; declare module "jcanvas/dist/umd/jcanvas.min.js"; declare module "jcanvas/dist/umd/jcanvas-crescents.min.js"; declare module "jcanvas/dist/umd/jcanvas-donuts.min.js"; declare module "jcanvas/dist/umd/jcanvas-hearts.min.js"; declare module "jcanvas/dist/umd/jcanvas-handles.min.js"; declare module "jcanvas/dist/esm/jcanvas.min.js"; declare module "jcanvas/dist/esm/jcanvas-crescents.min.js"; declare module "jcanvas/dist/esm/jcanvas-donuts.min.js"; declare module "jcanvas/dist/esm/jcanvas-hearts.min.js"; declare module "jcanvas/dist/esm/jcanvas-handles.min.js"; interface JCanvasPluginParams { name: string; props?: TProps; type?: string; fn: ( this: HTMLCanvasElement, ctx: CanvasRenderingContext2D, params: JCanvasObject & TProps ) => void; } type JCanvasMouseEventName = | "click" | "dblclick" | "mousedown" | "mouseup" | "mousemove" | "mouseover" | "mouseout" | "contextmenu"; type JCanvasTouchEventName = "touchstart" | "touchmove" | "touchend"; type JCanvasPointerEventName = "pointerdown" | "pointermove" | "pointerup"; type JCanvasDragEventName = "dragstart" | "drag" | "dragstop" | "dragcancel"; type JCanvasInteractionEventName = | JCanvasMouseEventName | JCanvasTouchEventName | JCanvasPointerEventName | JCanvasDragEventName; type JCanvasMechanicalEventName = | "add" | "remove" | "change" | "move" | "animatestart" | "animate" | "animateend" | "stop" | "delay"; type JCanvasImageEventName = "load"; type JCanvasEventName = | JCanvasInteractionEventName | JCanvasMechanicalEventName | JCanvasImageEventName; interface JCanvasMaps { drawings: Record; touchEvents: Partial< Record >; mouseEvents: Partial< Record >; } interface JCanvasCache { dataCache: { _canvas?: HTMLCanvasElement; _data?: JCanvasInternalData; }; propCache: Partial; imageCache: Record; pathCache: Record; } interface JCanvasBaseTransforms { rotate: number; scaleX: number; scaleY: number; translateX: number; translateY: number; masks: JCanvasObject[]; } interface JCanvasCss { props: (keyof JCanvasObject)[]; propsObj: Record; } interface JCanvasPx { r: number; g: number; b: number; a: number; } type JCanvasLayerCallbackWithProps = ( layer: JCanvasLayer, props?: Partial ) => void; type JCanvasEventHooks = Record; interface JCanvas { defaults: JCanvasDefaults; events: Record void>; eventHooks: JCanvasEventHooks; future: Record; extend(plugin: JCanvasPluginParams): void; clearCache(): void; transformShape( canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, params: jCanvasObject, width?: number | null, height?: number | null ): void; detectEvents( canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, params: jCanvasObject ): void; closePath( canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, params: jCanvasObject ): void; } interface JQueryEventWithFix extends JQuery.EventExtensions { fix: (event: Event) => Event; } type JCanvasLayerId = JCanvasLayer | string | number | RegExp | undefined; type jCanvasLayerGroupId = JCanvasLayer[] | string | RegExp; type JCanvasLayerCallback = (layer: JCanvasLayer) => void; type JCanvasGetLayersCallback = (layer: JCanvasLayer) => any; type JCanvasStyleFunction = ( layer: JCanvasLayer ) => string | CanvasGradient | CanvasPattern; type JCanvasObjectFunction = { new (this: JCanvasObject, args?: Partial): JCanvasObject; (this: JCanvasObject, args?: Partial): JCanvasObject; }; type JCanvasLayerFunction = { new ( this: JCanvasLayer, canvas: HTMLCanvasElement, params: JCanvasObject ): JCanvasLayer; ( this: JCanvasLayer, canvas: HTMLCanvasElement, params: JCanvasObject ): JCanvasLayer; }; interface JQueryStatic { jCanvas: JCanvas; jCanvasObject: JCanvasObjectFunction; } interface JQuery { getEventHooks(): JCanvasEventHooks; setEventHooks(eventHooks: JCanvasEventHooks): JQuery; getLayers(callback?: JCanvasGetLayersCallback): JCanvasLayer[]; getLayer(layerId: JCanvasLayerId): JCanvasLayer | undefined; getLayerGroup(groupId: jCanvasLayerGroupId): JCanvasLayer[] | undefined; getLayerIndex(layerId: JCanvasLayerId): number; setLayer(layerId: JCanvasLayerId, props: Partial): JQuery; setLayers( props: Partial, callback: JCanvasGetLayersCallback ): JQuery; setLayerGroup( groupId: jCanvasLayerGroupId, props: Partial ): JQuery; moveLayer(layerId: JCanvasLayerId, index: number): JQuery; removeLayer(layerId: JCanvasLayerId): JQuery; removeLayers(callback?: JCanvasLayerCallback): JQuery; removeLayerGroup(groupId: jCanvasLayerGroupId): JQuery; addLayerToGroup(layerId: JCanvasLayerId, groupName: string): JQuery; removeLayerFromGroup(layerId: JCanvasLayerId, groupName: string): JQuery; triggerLayerEvent(layerId: JCanvasLayerId, eventType: string): JQuery; drawLayer(layerId: JCanvasLayerId, groupName: string): JQuery; drawLayers(args?: { clear?: boolean; resetFire?: boolean; index?: number; complete?: () => void; }): JQuery; addLayer(args: Partial): JQuery; animateLayer( layerId: JCanvasLayerId, props: Partial, ...args: any[] ): JQuery; animateLayerGroup( groupId: jCanvasLayerGroupId, props: Partial, ...args: any[] ): JQuery; delayLayer(layerId: JCanvasLayerId, duration: number): JQuery; delayLayerGroup(groupId: jCanvasLayerGroupId, duration: number): JQuery; stopLayer(layerId: JCanvasLayerId, clearQueue?: boolean): JQuery; stopLayerGroup(groupId: jCanvasLayerGroupId, clearQueue?: boolean): JQuery; draw(args: Partial): JQuery; clearCanvas(args?: Partial): JQuery; saveCanvas(args?: Partial): JQuery; restoreCanvas(args?: Partial): JQuery; rotateCanvas(args?: Partial): JQuery; scaleCanvas(args?: Partial): JQuery; translateCanvas(args?: Partial): JQuery; drawRect(args: Partial): JQuery; drawArc(args: Partial): JQuery; drawEllipse(args: Partial): JQuery; drawPolygon(args: Partial): JQuery; drawSlice(args: Partial): JQuery; drawLine(args: Partial): JQuery; drawQuadratic(args: Partial): JQuery; drawBezier(args: Partial): JQuery; drawVector(args: Partial): JQuery; drawPath(args: Partial): JQuery; drawText(args: Partial): JQuery; measureText(args: JCanvasLayerId): JCanvasObject; drawImage(args: Partial): JQuery; createPattern(args: Partial): CanvasPattern | null; createGradient(args: Partial): CanvasGradient | null; setPixels(args: Partial): JQuery; getCanvasImage(type: string, quality?: number): string | null; detectPixelRatio(callback?: (ratio: number) => void): JQuery; } interface JCanvasDefaults { align: CanvasRenderingContext2D["textAlign"]; arrowAngle: number; arrowRadius: number; autosave: boolean; baseline: CanvasRenderingContext2D["textBaseline"]; bringToFront: boolean; canvas: HTMLCanvasElement | null; ccw: boolean; closed: boolean; compositing: CanvasRenderingContext2D["globalCompositeOperation"]; concavity: number; cornerRadius: number; count: number; cropFromCenter: boolean; crossOrigin: HTMLImageElement["crossOrigin"]; cursors: Record | null; disableEvents: boolean; draggable: boolean; dragging: boolean; dragGroups: string[] | null; groups: string[] | null; d: string | null; data: object | null; dx: number; dy: number; end: number; endArrow: boolean; eventX: number | null; eventY: number | null; fillRule: CanvasFillRule; fillStyle: string | CanvasGradient | CanvasPattern | JCanvasStyleFunction; flipArcText: boolean; fontStyle: string; fontSize: string; fontFamily: string; fromCenter: boolean; height: number | null; imageSmoothing: boolean; inDegrees: boolean; intangible: boolean; index: number | null; intersects: boolean; letterSpacing: number | null; lineHeight: number; layer: boolean; mask: boolean; maxWidth: number | null; method: keyof JQuery | null; miterLimit: number; name: string | null; opacity: number; r1: number | null; r2: number | null; radius: number; repeat: Parameters[1]; respectAlign: boolean; restrictDragToAxis: "x" | "y" | null; rotate: number; rounded: boolean; scale: number; scaleX: number; scaleY: number; shadowBlur: number; shadowColor: string; shadowStroke: boolean; shadowX: number; shadowY: number; sHeight: number | null; sides: number; source: string | HTMLImageElement | HTMLCanvasElement; spread: number; start: number; startArrow: boolean; strokeCap: CanvasRenderingContext2D["lineCap"]; strokeDash: number[] | null; strokeDashOffset: CanvasRenderingContext2D["lineDashOffset"]; strokeJoin: CanvasRenderingContext2D["lineJoin"]; strokeStyle: string | CanvasGradient | CanvasPattern | JCanvasStyleFunction; strokeWidth: number; style: Record; sWidth: number | null; sx: number | null; sy: number | null; text: string; translate: number; translateX: number; translateY: number; type: string | null; visible: boolean; width: number | null; willReadFrequently: boolean; x: number; y: number; each?: ( this: HTMLCanvasElement, px: JCanvasPx, params: JCanvasObject ) => void; load?: ( this: HTMLCanvasElement, arg: JCanvasObject | CanvasPattern | null ) => void; fn?: ( this: HTMLCanvasElement, ctx: CanvasRenderingContext2D, params: JCanvasObject ) => void; click?: JCanvasLayerCallback; dblclick?: JCanvasLayerCallback; mousedown?: JCanvasLayerCallback; mouseup?: JCanvasLayerCallback; mousemove?: JCanvasLayerCallback; mouseover?: JCanvasLayerCallback; mouseout?: JCanvasLayerCallback; touchstart?: JCanvasLayerCallback; touchend?: JCanvasLayerCallback; touchmove?: JCanvasLayerCallback; dragstart?: JCanvasLayerCallback; dragstop?: JCanvasLayerCallback; drag?: JCanvasLayerCallback; dragcancel?: JCanvasLayerCallback; updateDragX?: (layer: JCanvasLayer, newX: number) => number; updateDragY?: (layer: JCanvasLayer, newY: number) => number; pointerdown?: JCanvasLayerCallback; pointerup?: JCanvasLayerCallback; pointermove?: JCanvasLayerCallback; contextmenu?: JCanvasLayerCallback; add?: JCanvasLayerCallback; remove?: JCanvasLayerCallback; change?: JCanvasLayerCallbackWithProps; move?: JCanvasLayerCallback; animatestart?: JCanvasLayerCallback; animate?: (layer: JCanvasLayer, fx: JQuery.Tween) => void; animateend?: JCanvasLayerCallback; stop?: JCanvasLayerCallback; delay?: JCanvasLayerCallback; [key: `x${number}`]: number; [key: `y${number}`]: number; [key: `cx${number}`]: number; [key: `cy${number}`]: number; [key: `a${number}`]: number; [key: `l${number}`]: number; [key: `p${number}`]: number; [key: `_${string}`]: any; } interface JCanvasObject extends JCanvasDefaults {} interface JCanvasLayer extends JCanvasObject { canvas: NonNullable; _layer?: true; } interface JCanvasPropHooks { [key: string]: JQuery.PropHook; } type JCanvasNumberParams = { [K in keyof JCanvasObject]: JCanvasObject[K] extends number ? K : never; }; type JCanvasAnimatableProps = { [K in keyof JCanvasNumberParams]: NumberProperties[K] | number | string; };