From 1d9279d11c43838014c12b412878b8d8f602a125 Mon Sep 17 00:00:00 2001 From: ShiboSoftwareDev Date: Wed, 24 Jun 2026 20:24:07 +0200 Subject: [PATCH 1/2] Flatten meter display props for probes and ammeters --- README.md | 10 ++++-- generated/COMPONENT_TYPES.md | 65 +++++++++++++--------------------- generated/PROPS_OVERVIEW.md | 26 +++++--------- lib/components/ammeter.ts | 24 +++++-------- lib/components/voltageprobe.ts | 24 +++++-------- tests/ammeter.test.ts | 22 +++++------- tests/voltageprobe.test.ts | 22 +++++------- 7 files changed, 75 insertions(+), 118 deletions(-) diff --git a/README.md b/README.md index 3dcd7613..7b62fd82 100644 --- a/README.md +++ b/README.md @@ -210,7 +210,10 @@ export interface AmmeterProps< > extends CommonComponentProps { connections: Connections; color?: string; - display?: AmmeterDisplayOptions; + displayLabel?: string; + displayCenter?: number; + displayOffsetDivs?: number; + displayUnitsPerDiv?: number; } ``` @@ -1958,7 +1961,10 @@ export interface VoltageProbeProps extends Omit { connectsTo: string; referenceTo?: string; color?: string; - display?: VoltageProbeDisplayOptions; + displayLabel?: string; + displayCenter?: number; + displayOffsetDivs?: number; + displayUnitsPerDiv?: number; } ``` diff --git a/generated/COMPONENT_TYPES.md b/generated/COMPONENT_TYPES.md index ae554b4b..c003e89b 100644 --- a/generated/COMPONENT_TYPES.md +++ b/generated/COMPONENT_TYPES.md @@ -868,31 +868,25 @@ export const url = z.preprocess((value) => { ### ammeter ```typescript -export interface AmmeterDisplayOptions { - label?: string - center?: number - offsetDivs?: number - unitsPerDiv?: number -} export interface AmmeterProps extends CommonComponentProps { connections: Connections color?: string - display?: AmmeterDisplayOptions + displayLabel?: string + displayCenter?: number + displayOffsetDivs?: number + displayUnitsPerDiv?: number } -export const ammeterDisplayOptions = z.object({ - label: z.string().optional(), - center: z.number().optional(), - offsetDivs: z.number().optional(), - unitsPerDiv: z.number().optional(), -}) export const ammeterProps = commonComponentProps.extend({ connections: createConnectionsProp(ammeterPinLabels).refine( hasAmmeterConnectionPair, "Ammeter connections must include either pos/neg or pin1/pin2", ), color: z.string().optional(), - display: ammeterDisplayOptions.optional(), + displayLabel: z.string().optional(), + displayCenter: z.number().optional(), + displayOffsetDivs: z.number().optional(), + displayUnitsPerDiv: z.number().optional(), }) ``` @@ -1436,17 +1430,15 @@ export const courtyardPillProps = pcbLayoutProps ### courtyard-rect ```typescript -export const courtyardRectProps = pcbLayoutProps - .omit({ pcbRotation: true }) - .extend({ - width: distance, - height: distance, - strokeWidth: distance.optional(), - isFilled: z.boolean().optional(), - hasStroke: z.boolean().optional(), - isStrokeDashed: z.boolean().optional(), - color: z.string().optional(), - }) +export const courtyardRectProps = pcbLayoutProps.extend({ + width: distance, + height: distance, + strokeWidth: distance.optional(), + isFilled: z.boolean().optional(), + hasStroke: z.boolean().optional(), + isStrokeDashed: z.boolean().optional(), + color: z.string().optional(), +}) ``` ### crystal @@ -4185,13 +4177,10 @@ export interface VoltageProbeProps extends Omit { connectsTo: string referenceTo?: string color?: string - display?: VoltageProbeDisplayOptions -} -export interface VoltageProbeDisplayOptions { - label?: string - center?: number - offsetDivs?: number - unitsPerDiv?: number + displayLabel?: string + displayCenter?: number + displayOffsetDivs?: number + displayUnitsPerDiv?: number } export const voltageProbeProps = commonComponentProps .omit({ name: true }) @@ -4200,14 +4189,10 @@ export const voltageProbeProps = commonComponentProps connectsTo: z.string(), referenceTo: z.string().optional(), color: z.string().optional(), - display: z - .object({ - label: z.string().optional(), - center: z.number().optional(), - offsetDivs: z.number().optional(), - unitsPerDiv: z.number().optional(), - }) - .optional(), + displayLabel: z.string().optional(), + displayCenter: z.number().optional(), + displayOffsetDivs: z.number().optional(), + displayUnitsPerDiv: z.number().optional(), }) ``` diff --git a/generated/PROPS_OVERVIEW.md b/generated/PROPS_OVERVIEW.md index a0340bab..399e8f5f 100644 --- a/generated/PROPS_OVERVIEW.md +++ b/generated/PROPS_OVERVIEW.md @@ -18,19 +18,14 @@ const validatedProps = chipProps.parse(unknownProps) ## Available Props ```ts -export interface AmmeterDisplayOptions { - label?: string - center?: number - offsetDivs?: number - unitsPerDiv?: number -} - - export interface AmmeterProps extends CommonComponentProps { connections: Connections color?: string - display?: AmmeterDisplayOptions + displayLabel?: string + displayCenter?: number + displayOffsetDivs?: number + displayUnitsPerDiv?: number } @@ -2270,20 +2265,15 @@ export interface ViaProps extends CommonLayoutProps { } -export interface VoltageProbeDisplayOptions { - label?: string - center?: number - offsetDivs?: number - unitsPerDiv?: number -} - - export interface VoltageProbeProps extends Omit { name?: string connectsTo: string referenceTo?: string color?: string - display?: VoltageProbeDisplayOptions + displayLabel?: string + displayCenter?: number + displayOffsetDivs?: number + displayUnitsPerDiv?: number } diff --git a/lib/components/ammeter.ts b/lib/components/ammeter.ts index 1fee8452..5cf3a76e 100644 --- a/lib/components/ammeter.ts +++ b/lib/components/ammeter.ts @@ -10,18 +10,14 @@ import { z } from "zod" export const ammeterPinLabels = ["pin1", "pin2", "pos", "neg"] as const export type AmmeterPinLabels = (typeof ammeterPinLabels)[number] -export interface AmmeterDisplayOptions { - label?: string - center?: number - offsetDivs?: number - unitsPerDiv?: number -} - export interface AmmeterProps extends CommonComponentProps { connections: Connections color?: string - display?: AmmeterDisplayOptions + displayLabel?: string + displayCenter?: number + displayOffsetDivs?: number + displayUnitsPerDiv?: number } const hasAmmeterConnectionPair = ( @@ -33,20 +29,16 @@ const hasAmmeterConnectionPair = ( ) } -export const ammeterDisplayOptions = z.object({ - label: z.string().optional(), - center: z.number().optional(), - offsetDivs: z.number().optional(), - unitsPerDiv: z.number().optional(), -}) - export const ammeterProps = commonComponentProps.extend({ connections: createConnectionsProp(ammeterPinLabels).refine( hasAmmeterConnectionPair, "Ammeter connections must include either pos/neg or pin1/pin2", ), color: z.string().optional(), - display: ammeterDisplayOptions.optional(), + displayLabel: z.string().optional(), + displayCenter: z.number().optional(), + displayOffsetDivs: z.number().optional(), + displayUnitsPerDiv: z.number().optional(), }) export const ammeterPins = ammeterPinLabels diff --git a/lib/components/voltageprobe.ts b/lib/components/voltageprobe.ts index 96c5706b..884b79e1 100644 --- a/lib/components/voltageprobe.ts +++ b/lib/components/voltageprobe.ts @@ -10,14 +10,10 @@ export interface VoltageProbeProps extends Omit { connectsTo: string referenceTo?: string color?: string - display?: VoltageProbeDisplayOptions -} - -export interface VoltageProbeDisplayOptions { - label?: string - center?: number - offsetDivs?: number - unitsPerDiv?: number + displayLabel?: string + displayCenter?: number + displayOffsetDivs?: number + displayUnitsPerDiv?: number } export const voltageProbeProps = commonComponentProps @@ -27,14 +23,10 @@ export const voltageProbeProps = commonComponentProps connectsTo: z.string(), referenceTo: z.string().optional(), color: z.string().optional(), - display: z - .object({ - label: z.string().optional(), - center: z.number().optional(), - offsetDivs: z.number().optional(), - unitsPerDiv: z.number().optional(), - }) - .optional(), + displayLabel: z.string().optional(), + displayCenter: z.number().optional(), + displayOffsetDivs: z.number().optional(), + displayUnitsPerDiv: z.number().optional(), }) expectTypesMatch>(true) diff --git a/tests/ammeter.test.ts b/tests/ammeter.test.ts index 13883507..dd5a10dd 100644 --- a/tests/ammeter.test.ts +++ b/tests/ammeter.test.ts @@ -35,7 +35,7 @@ test("should parse ammeter with pin1 and pin2 connections", () => { }) }) -test("should parse ammeter with color and display options", () => { +test("should parse ammeter with color and display props", () => { const raw: AmmeterProps = { name: "A3", color: "green", @@ -43,22 +43,18 @@ test("should parse ammeter with color and display options", () => { pos: "net.IN", neg: "net.OUT", }, - display: { - label: "I_LOAD", - center: 0, - offsetDivs: 2, - unitsPerDiv: 0.01, - }, + displayLabel: "I_LOAD", + displayCenter: 0, + displayOffsetDivs: 2, + displayUnitsPerDiv: 0.01, } const parsed = ammeterProps.parse(raw) expect(parsed.color).toBe("green") - expect(parsed.display).toEqual({ - label: "I_LOAD", - center: 0, - offsetDivs: 2, - unitsPerDiv: 0.01, - }) + expect(parsed.displayLabel).toBe("I_LOAD") + expect(parsed.displayCenter).toBe(0) + expect(parsed.displayOffsetDivs).toBe(2) + expect(parsed.displayUnitsPerDiv).toBe(0.01) }) test("should reject missing ammeter connections", () => { diff --git a/tests/voltageprobe.test.ts b/tests/voltageprobe.test.ts index 0f74cfc4..d55042cd 100644 --- a/tests/voltageprobe.test.ts +++ b/tests/voltageprobe.test.ts @@ -43,25 +43,21 @@ test("should parse voltageprobe with referenceTo", () => { expect(parsed.referenceTo).toBe(".R1 > .p2") }) -test("should parse voltageprobe with display options", () => { +test("should parse voltageprobe with display props", () => { const raw: VoltageProbeProps = { connectsTo: ".DUT .U1 .VOUT", referenceTo: "net.GND", name: "VOUT_PROBE", - display: { - label: "VO", - center: 3.3, - offsetDivs: 3, - unitsPerDiv: 0.05, - }, + displayLabel: "VO", + displayCenter: 3.3, + displayOffsetDivs: 3, + displayUnitsPerDiv: 0.05, } const parsed = voltageProbeProps.parse(raw) - expect(parsed.display).toEqual({ - label: "VO", - center: 3.3, - offsetDivs: 3, - unitsPerDiv: 0.05, - }) + expect(parsed.displayLabel).toBe("VO") + expect(parsed.displayCenter).toBe(3.3) + expect(parsed.displayOffsetDivs).toBe(3) + expect(parsed.displayUnitsPerDiv).toBe(0.05) }) test("should not parse voltageprobe with array connectsTo", () => { From 4eb3f91ec29c6960eb05bd826ca5f846911afa2c Mon Sep 17 00:00:00 2001 From: ShiboSoftwareDev Date: Thu, 25 Jun 2026 00:13:22 +0200 Subject: [PATCH 2/2] rewrite --- README.md | 16 ++++++++-------- generated/COMPONENT_TYPES.md | 32 ++++++++++++++++---------------- generated/PROPS_OVERVIEW.md | 16 ++++++++-------- lib/components/ammeter.ts | 16 ++++++++-------- lib/components/voltageprobe.ts | 16 ++++++++-------- tests/ammeter.test.ts | 16 ++++++++-------- tests/voltageprobe.test.ts | 16 ++++++++-------- 7 files changed, 64 insertions(+), 64 deletions(-) diff --git a/README.md b/README.md index 7b62fd82..ec029ea5 100644 --- a/README.md +++ b/README.md @@ -210,10 +210,10 @@ export interface AmmeterProps< > extends CommonComponentProps { connections: Connections; color?: string; - displayLabel?: string; - displayCenter?: number; - displayOffsetDivs?: number; - displayUnitsPerDiv?: number; + graphDisplayName?: string; + graphCenter?: number; + graphOffsetDivs?: number; + graphUnitsPerDiv?: number; } ``` @@ -1961,10 +1961,10 @@ export interface VoltageProbeProps extends Omit { connectsTo: string; referenceTo?: string; color?: string; - displayLabel?: string; - displayCenter?: number; - displayOffsetDivs?: number; - displayUnitsPerDiv?: number; + graphDisplayName?: string; + graphCenter?: number; + graphOffsetDivs?: number; + graphUnitsPerDiv?: number; } ``` diff --git a/generated/COMPONENT_TYPES.md b/generated/COMPONENT_TYPES.md index c003e89b..8f57de72 100644 --- a/generated/COMPONENT_TYPES.md +++ b/generated/COMPONENT_TYPES.md @@ -872,10 +872,10 @@ export interface AmmeterProps extends CommonComponentProps { connections: Connections color?: string - displayLabel?: string - displayCenter?: number - displayOffsetDivs?: number - displayUnitsPerDiv?: number + graphDisplayName?: string + graphCenter?: number + graphOffsetDivs?: number + graphUnitsPerDiv?: number } export const ammeterProps = commonComponentProps.extend({ connections: createConnectionsProp(ammeterPinLabels).refine( @@ -883,10 +883,10 @@ export const ammeterProps = commonComponentProps.extend({ "Ammeter connections must include either pos/neg or pin1/pin2", ), color: z.string().optional(), - displayLabel: z.string().optional(), - displayCenter: z.number().optional(), - displayOffsetDivs: z.number().optional(), - displayUnitsPerDiv: z.number().optional(), + graphDisplayName: z.string().optional(), + graphCenter: z.number().optional(), + graphOffsetDivs: z.number().optional(), + graphUnitsPerDiv: z.number().optional(), }) ``` @@ -4177,10 +4177,10 @@ export interface VoltageProbeProps extends Omit { connectsTo: string referenceTo?: string color?: string - displayLabel?: string - displayCenter?: number - displayOffsetDivs?: number - displayUnitsPerDiv?: number + graphDisplayName?: string + graphCenter?: number + graphOffsetDivs?: number + graphUnitsPerDiv?: number } export const voltageProbeProps = commonComponentProps .omit({ name: true }) @@ -4189,10 +4189,10 @@ export const voltageProbeProps = commonComponentProps connectsTo: z.string(), referenceTo: z.string().optional(), color: z.string().optional(), - displayLabel: z.string().optional(), - displayCenter: z.number().optional(), - displayOffsetDivs: z.number().optional(), - displayUnitsPerDiv: z.number().optional(), + graphDisplayName: z.string().optional(), + graphCenter: z.number().optional(), + graphOffsetDivs: z.number().optional(), + graphUnitsPerDiv: z.number().optional(), }) ``` diff --git a/generated/PROPS_OVERVIEW.md b/generated/PROPS_OVERVIEW.md index 399e8f5f..57959ede 100644 --- a/generated/PROPS_OVERVIEW.md +++ b/generated/PROPS_OVERVIEW.md @@ -22,10 +22,10 @@ export interface AmmeterProps extends CommonComponentProps { connections: Connections color?: string - displayLabel?: string - displayCenter?: number - displayOffsetDivs?: number - displayUnitsPerDiv?: number + graphDisplayName?: string + graphCenter?: number + graphOffsetDivs?: number + graphUnitsPerDiv?: number } @@ -2270,10 +2270,10 @@ export interface VoltageProbeProps extends Omit { connectsTo: string referenceTo?: string color?: string - displayLabel?: string - displayCenter?: number - displayOffsetDivs?: number - displayUnitsPerDiv?: number + graphDisplayName?: string + graphCenter?: number + graphOffsetDivs?: number + graphUnitsPerDiv?: number } diff --git a/lib/components/ammeter.ts b/lib/components/ammeter.ts index 5cf3a76e..f61b8fc2 100644 --- a/lib/components/ammeter.ts +++ b/lib/components/ammeter.ts @@ -14,10 +14,10 @@ export interface AmmeterProps extends CommonComponentProps { connections: Connections color?: string - displayLabel?: string - displayCenter?: number - displayOffsetDivs?: number - displayUnitsPerDiv?: number + graphDisplayName?: string + graphCenter?: number + graphOffsetDivs?: number + graphUnitsPerDiv?: number } const hasAmmeterConnectionPair = ( @@ -35,10 +35,10 @@ export const ammeterProps = commonComponentProps.extend({ "Ammeter connections must include either pos/neg or pin1/pin2", ), color: z.string().optional(), - displayLabel: z.string().optional(), - displayCenter: z.number().optional(), - displayOffsetDivs: z.number().optional(), - displayUnitsPerDiv: z.number().optional(), + graphDisplayName: z.string().optional(), + graphCenter: z.number().optional(), + graphOffsetDivs: z.number().optional(), + graphUnitsPerDiv: z.number().optional(), }) export const ammeterPins = ammeterPinLabels diff --git a/lib/components/voltageprobe.ts b/lib/components/voltageprobe.ts index 884b79e1..68e904db 100644 --- a/lib/components/voltageprobe.ts +++ b/lib/components/voltageprobe.ts @@ -10,10 +10,10 @@ export interface VoltageProbeProps extends Omit { connectsTo: string referenceTo?: string color?: string - displayLabel?: string - displayCenter?: number - displayOffsetDivs?: number - displayUnitsPerDiv?: number + graphDisplayName?: string + graphCenter?: number + graphOffsetDivs?: number + graphUnitsPerDiv?: number } export const voltageProbeProps = commonComponentProps @@ -23,10 +23,10 @@ export const voltageProbeProps = commonComponentProps connectsTo: z.string(), referenceTo: z.string().optional(), color: z.string().optional(), - displayLabel: z.string().optional(), - displayCenter: z.number().optional(), - displayOffsetDivs: z.number().optional(), - displayUnitsPerDiv: z.number().optional(), + graphDisplayName: z.string().optional(), + graphCenter: z.number().optional(), + graphOffsetDivs: z.number().optional(), + graphUnitsPerDiv: z.number().optional(), }) expectTypesMatch>(true) diff --git a/tests/ammeter.test.ts b/tests/ammeter.test.ts index dd5a10dd..7909364d 100644 --- a/tests/ammeter.test.ts +++ b/tests/ammeter.test.ts @@ -43,18 +43,18 @@ test("should parse ammeter with color and display props", () => { pos: "net.IN", neg: "net.OUT", }, - displayLabel: "I_LOAD", - displayCenter: 0, - displayOffsetDivs: 2, - displayUnitsPerDiv: 0.01, + graphDisplayName: "I_LOAD", + graphCenter: 0, + graphOffsetDivs: 2, + graphUnitsPerDiv: 0.01, } const parsed = ammeterProps.parse(raw) expect(parsed.color).toBe("green") - expect(parsed.displayLabel).toBe("I_LOAD") - expect(parsed.displayCenter).toBe(0) - expect(parsed.displayOffsetDivs).toBe(2) - expect(parsed.displayUnitsPerDiv).toBe(0.01) + expect(parsed.graphDisplayName).toBe("I_LOAD") + expect(parsed.graphCenter).toBe(0) + expect(parsed.graphOffsetDivs).toBe(2) + expect(parsed.graphUnitsPerDiv).toBe(0.01) }) test("should reject missing ammeter connections", () => { diff --git a/tests/voltageprobe.test.ts b/tests/voltageprobe.test.ts index d55042cd..0586d10f 100644 --- a/tests/voltageprobe.test.ts +++ b/tests/voltageprobe.test.ts @@ -48,16 +48,16 @@ test("should parse voltageprobe with display props", () => { connectsTo: ".DUT .U1 .VOUT", referenceTo: "net.GND", name: "VOUT_PROBE", - displayLabel: "VO", - displayCenter: 3.3, - displayOffsetDivs: 3, - displayUnitsPerDiv: 0.05, + graphDisplayName: "VO", + graphCenter: 3.3, + graphOffsetDivs: 3, + graphUnitsPerDiv: 0.05, } const parsed = voltageProbeProps.parse(raw) - expect(parsed.displayLabel).toBe("VO") - expect(parsed.displayCenter).toBe(3.3) - expect(parsed.displayOffsetDivs).toBe(3) - expect(parsed.displayUnitsPerDiv).toBe(0.05) + expect(parsed.graphDisplayName).toBe("VO") + expect(parsed.graphCenter).toBe(3.3) + expect(parsed.graphOffsetDivs).toBe(3) + expect(parsed.graphUnitsPerDiv).toBe(0.05) }) test("should not parse voltageprobe with array connectsTo", () => {