UNPKG

@skillpet/circuit

Version:

Circuit diagram library — render electrical schematics from JSON, with interactive SVG, themes, and Vue/React components

223 lines (222 loc) 7.44 kB
/** * Arcs and labels — aligned with Python `elements/lines.py` (`Arc2`–`EncircleBox`). */ import { Element } from "../element.js"; import type { Arcdirection } from "../types.js"; import { Point, type XY } from "../geometry/point.js"; /** Quadratic Bezier arc between `at` and `to` (or `delta`). */ export declare class Arc2 extends Element { constructor(userParams?: Record<string, unknown> & { k?: number; arrow?: string; to?: XY; delta?: XY; }); to(target: XY, dx?: number, dy?: number): this; delta(dx: number, dy: number): this; k(k: number): this; arrow(arrow: string | undefined): this; _place(dwgxy: XY, dwgtheta: number, dwgparams: Record<string, unknown>): { point: Point; theta: number; }; } /** Cubic Bezier arc (`th1`/`th2` in degrees). */ export declare class Arc3 extends Element { constructor(userParams?: Record<string, unknown> & { k?: number; th1?: number; th2?: number; arrow?: string; to?: XY; delta?: XY; arrowlength?: number; arrowwidth?: number; }); to(target: XY, dx?: number, dy?: number): this; delta(dx: number, dy: number): this; k(k: number): this; th1(deg: number): this; th2(deg: number): this; arrow(arrow: string | undefined): this; arrowlength(len: number): this; arrowwidth(w: number): this; protected setLabelAlign(dx: number, dy: number): void; _place(dwgxy: XY, dwgtheta: number, dwgparams: Record<string, unknown>): { point: Point; theta: number; }; } /** Curved annotation arrow (label near tail). */ export declare class Annotate extends Arc3 { constructor(userParams?: Record<string, unknown> & { k?: number; th1?: number; th2?: number; arrow?: string; to?: XY; delta?: XY; arrowlength?: number; arrowwidth?: number; }); protected setLabelAlign(_dx: number, dy: number): void; } /** Arc3 with horizontal tangents at endpoints (Z-shaped). */ export declare class ArcZ extends Arc3 { constructor(userParams?: Record<string, unknown> & { k?: number; arrow?: string; to?: XY; delta?: XY; arrowlength?: number; arrowwidth?: number; }); } /** Arc3 with vertical tangents at endpoints (N-shaped). */ export declare class ArcN extends Arc3 { constructor(userParams?: Record<string, unknown> & { k?: number; arrow?: string; to?: XY; delta?: XY; arrowlength?: number; arrowwidth?: number; }); } /** Circular arc through `at` and `to`. */ export declare class ArcLoop extends Element { constructor(userParams?: Record<string, unknown> & { radius?: number; arrow?: string; to?: XY; delta?: XY; arrowlength?: number; arrowwidth?: number; }); to(target: XY, dx?: number, dy?: number): this; delta(dx: number, dy: number): this; radius(r: number): this; arrow(arrow: string | undefined): this; arrowlength(len: number): this; arrowwidth(w: number): this; _place(dwgxy: XY, dwgtheta: number, dwgparams: Record<string, unknown>): { point: Point; theta: number; }; } /** Current arrow above/below a line (use `overElement` to mimic Python `.at(el)`). */ export declare class CurrentLabel extends Element { protected _side: "top" | "bottom" | "left" | "right"; constructor(userParams?: Record<string, unknown> & { length?: number; top?: boolean; reverse?: boolean; ofst?: number; headlength?: number; headwidth?: number; /** When set, position and θ are taken from this element (after it is placed). */ overElement?: Element; }); /** * When `xy` is an {@link Element}, behave like Python `CurrentLabel.at(el)`: * inherit placement from that element (stored as `overElement`). */ at(xy: XY | readonly [Element, string] | Element, dx?: number, dy?: number): this; /** Alias for `at(otherElement)` (Python-style name). */ over(el: Element): this; protected placeArrowSegment(_loc: string): void; /** * Python `CurrentLabel.at(Element)` — `ilabel`, host `flip`/`reverse`, bbox in **local** coords then `transform`. */ protected placeFromOverElement(over: Element): void; _place(dwgxy: XY, dwgtheta: number, dwgparams: Record<string, unknown>): { point: Point; theta: number; }; } /** Voltage label as a quadratic arc. */ export declare class VoltageLabelArc extends CurrentLabel { constructor(userParams?: Record<string, unknown> & { length?: number; ofst?: number; bend?: number; top?: boolean; reverse?: boolean; headlength?: number; headwidth?: number; overElement?: Element; }); protected placeArrowSegment(_loc: string): void; } /** Inline current arrow on a lead (`overElement` mimics `.at(el)`). */ export declare class CurrentLabelInline extends Element { constructor(direction?: "in" | "out", ofst?: number, start?: boolean, userParams?: Record<string, unknown> & { headlength?: number; headwidth?: number; overElement?: Element; }); at(xy: XY | readonly [Element, string] | Element, dx?: number, dy?: number): this; over(el: Element): this; _place(dwgxy: XY, dwgtheta: number, dwgparams: Record<string, unknown>): { point: Point; theta: number; }; } /** Right-angle impedance-style arrow. */ export declare class ZLabel extends Element { constructor(userParams?: Record<string, unknown> & { ofst?: number; hofst?: number; length?: number; lengthtip?: number; headlength?: number; headwidth?: number; flip?: boolean; overElement?: Element; }); at(xy: XY | readonly [Element, string] | Element, dx?: number, dy?: number): this; over(el: Element): this; _place(dwgxy: XY, dwgtheta: number, dwgparams: Record<string, unknown>): { point: Point; theta: number; }; } /** Elliptical loop arrow (mesh notation). */ export declare class LoopArrow extends Element { constructor(userParams?: Record<string, unknown> & { direction?: Arcdirection; theta1?: number; theta2?: number; width?: number; height?: number; }); } /** Loop current inside a quad of placed elements (order: top, right, bottom, left). */ export declare class LoopCurrent extends LoopArrow { constructor(userParams: Record<string, unknown> & { elm_list: [Element, Element, Element, Element]; direction?: Arcdirection; theta1?: number; theta2?: number; pad?: number; }); } /** Ellipse around a list of elements. */ export declare class Encircle extends Element { constructor(userParams: Record<string, unknown> & { elm_list: Element[]; padx?: number; pady?: number; includelabels?: boolean; }); } /** Rounded rectangle around a list of elements. */ export declare class EncircleBox extends Element { constructor(userParams: Record<string, unknown> & { elm_list: Element[]; cornerradius?: number; padx?: number; pady?: number; includelabels?: boolean; }); }