Dotloom TypeScript API
    Preparing search index...

    Type Alias RuleSpec

    RuleSpec:
        | { kind: "fix"; param: ParamRef; value: number }
        | { a: ParamRef; b: ParamRef; kind: "equal" }
        | { kind: "allEqual"; params: ParamRef[] }
        | { kind: "linear"; op: Cmp; rhs: number; terms: Term[] }
        | { a: ParamRef; b: ParamRef; k: number; kind: "ratio" }
        | { kind: "equalSpacing"; params: ParamRef[] }
        | { a: AnchorRef; b: AnchorRef; kind: "coincident" }
        | { a: AnchorRef; b: AnchorRef; kind: "horizontal" }
        | { a: AnchorRef; b: AnchorRef; kind: "vertical" }
        | { a: AnchorRef; at: Point; kind: "fixPoint" }
        | { a: AnchorRef; b: AnchorRef; kind: "distance"; value: number }
        | {
            kind: "pointLineDistance";
            line: LineRef;
            point: AnchorRef;
            value: number;
        }
        | { kind: "pointOnLine"; line: LineRef; point: AnchorRef }
        | { circle: EntityId; kind: "pointOnCircle"; point: AnchorRef }
        | { kind: "length"; line: LineRef; value: number }
        | { a: LineRef; b: LineRef; kind: "equalLength" }
        | { a: LineRef; b: LineRef; kind: "parallel" }
        | { a: LineRef; b: LineRef; kind: "perpendicular" }
        | { a: LineRef; b: LineRef; kind: "angle"; value: number }
        | { a: EntityId; b: EntityId; kind: "concentric" }
        | { circle: EntityId; kind: "radius"; value: number }
        | { a: EntityId; b: EntityId; kind: "equalRadius" }
        | {
            circle: EntityId;
            kind: "tangentLineCircle";
            line: LineRef;
            side: 1 | -1;
        }
        | {
            a: EntityId;
            b: EntityId;
            internal?: boolean;
            kind: "tangentCircles";
            sign?: 1
            | -1;
        }
        | {
            entity: EntityId;
            kind: "expression";
            lhs: string;
            op: Cmp;
            rhs: string;
        }

    Constraint kinds.