@tscircuit/props 0.0.33 → 0.0.35
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/lib/index.ts +429 -0
- package/package.json +5 -3
- package/dist/index.d.ts +0 -6275
package/dist/index.js
CHANGED
|
@@ -56,6 +56,7 @@ __export(lib_exports, {
|
|
|
56
56
|
platedHoleProps: () => platedHoleProps,
|
|
57
57
|
portHints: () => portHints,
|
|
58
58
|
portProps: () => portProps,
|
|
59
|
+
portRef: () => portRef,
|
|
59
60
|
powerSourceProps: () => powerSourceProps,
|
|
60
61
|
relativeDirection: () => relativeDirection,
|
|
61
62
|
resistorPins: () => resistorPins,
|
|
@@ -217,15 +218,19 @@ var viaProps = commonLayoutProps.extend({
|
|
|
217
218
|
var netAliasProps = commonLayoutProps.extend({
|
|
218
219
|
net: import_zod.z.string().optional()
|
|
219
220
|
});
|
|
221
|
+
var portRef = import_zod.z.union([
|
|
222
|
+
import_zod.z.string(),
|
|
223
|
+
import_zod.z.object({ getPortSelector: import_zod.z.function(import_zod.z.tuple([]), import_zod.z.string()) })
|
|
224
|
+
]);
|
|
220
225
|
var traceProps = import_zod.z.object({
|
|
221
|
-
path: import_zod.z.array(
|
|
226
|
+
path: import_zod.z.array(portRef),
|
|
222
227
|
thickness: import_soup.distance.optional(),
|
|
223
228
|
schematicRouteHints: import_zod.z.array(import_soup.point).optional(),
|
|
224
229
|
pcbRouteHints: import_zod.z.array(import_soup.route_hint_point).optional()
|
|
225
230
|
}).or(
|
|
226
231
|
import_zod.z.object({
|
|
227
|
-
from:
|
|
228
|
-
to:
|
|
232
|
+
from: portRef,
|
|
233
|
+
to: portRef,
|
|
229
234
|
thickness: import_soup.distance.optional(),
|
|
230
235
|
schematicRouteHints: import_zod.z.array(import_soup.point).optional(),
|
|
231
236
|
pcbRouteHints: import_zod.z.array(import_soup.route_hint_point).optional()
|
|
@@ -407,6 +412,7 @@ var fabricationNotePathProps = pcbLayoutProps.omit({ pcbX: true, pcbY: true, pcb
|
|
|
407
412
|
platedHoleProps,
|
|
408
413
|
portHints,
|
|
409
414
|
portProps,
|
|
415
|
+
portRef,
|
|
410
416
|
powerSourceProps,
|
|
411
417
|
relativeDirection,
|
|
412
418
|
resistorPins,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../lib/index.ts"],"sourcesContent":["import type { LayoutBuilder } from \"@tscircuit/layout\"\nimport {\n type AnySoupElementInput,\n capacitance,\n distance,\n inductance,\n layer_ref,\n length,\n point,\n resistance,\n rotation,\n route_hint_point,\n supplier_name,\n voltage,\n} from \"@tscircuit/soup\"\nimport type { ReactElement } from \"react\"\nimport { z } from \"zod\"\n\nexport const portHints = z.array(z.string().or(z.number()))\n\nexport const direction = z.enum([\"up\", \"down\", \"left\", \"right\"])\n\nexport const relativeDirection = z.enum([\n \"top-to-bottom\",\n \"left-to-right\",\n \"bottom-to-top\",\n \"right-to-left\",\n])\n\nexport const explicitPinSideDefinition = z.object({\n pins: z.array(z.number()),\n direction: z.union([\n z.literal(\"top-to-bottom\"),\n z.literal(\"left-to-right\"),\n z.literal(\"bottom-to-top\"),\n z.literal(\"right-to-left\"),\n ]),\n})\n\nexport type Footprint = string | ReactElement | AnySoupElementInput[]\nexport const pcbLayoutProps = z.object({\n pcbX: distance,\n pcbY: distance,\n pcbRotation: rotation.optional(),\n layer: layer_ref.optional(),\n})\nexport const commonLayoutProps = z.object({\n pcbX: distance.optional(),\n pcbY: distance.optional(),\n pcbRotation: rotation.optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n layer: layer_ref.optional(),\n\n // TODO pull in literals from @tscircuit/footprint\n // TODO footprint can be a string or react child\n footprint: z.custom<Footprint>((v) => true).optional(),\n})\nexport type CommonLayoutProps = z.input<typeof commonLayoutProps>\n\nexport const supplierProps = z.object({\n supplierPartNumbers: z.record(supplier_name, z.array(z.string())).optional(),\n})\nexport type SupplierProps = z.input<typeof supplierProps>\n\nconst point3 = z.object({\n x: z.union([z.number(), z.string()]),\n y: z.union([z.number(), z.string()]),\n z: z.union([z.number(), z.string()]),\n})\n\nexport const cadModelBase = z.object({\n rotationOffset: z.number().or(point3).optional(),\n positionOffset: point3.optional(),\n size: point3.optional(),\n})\n\nexport const cadModelStl = cadModelBase.extend({\n stlUrl: z.string(),\n})\n\nexport const cadModelObj = cadModelBase.extend({\n objUrl: z.string(),\n mtlUrl: z.string().optional(),\n})\n\nexport const cadModelJscad = cadModelBase.extend({\n jscad: z.any(),\n})\n\nexport const commonComponentProps = commonLayoutProps\n .merge(supplierProps)\n .extend({\n name: z.string(),\n cadModel: z.union([cadModelStl, cadModelObj, cadModelJscad]).optional(),\n children: z.any().optional(),\n })\nexport type CommonComponentProps = z.input<typeof commonComponentProps>\n\nexport const lrPins = [\"pin1\", \"left\", \"pin2\", \"right\"] as const\nexport const lrPolarPins = [\n \"pin1\",\n \"left\",\n \"anode\",\n \"pos\",\n \"pin2\",\n \"right\",\n \"cathode\",\n \"neg\",\n] as const\n\nexport const resistorProps = commonComponentProps.extend({\n resistance,\n})\nexport const resistorPins = lrPins\nexport type ResistorProps = z.input<typeof resistorProps>\n\nexport const capacitorProps = commonComponentProps.extend({\n capacitance,\n})\nexport const capacitorPins = lrPolarPins\nexport type CapacitorProps = z.input<typeof capacitorProps>\n\nexport const inductorProps = commonComponentProps.extend({\n inductance,\n})\nexport const inductorPins = lrPins\nexport type InductorProps = z.input<typeof inductorProps>\n\nexport const diodeProps = commonComponentProps.extend({})\nexport const diodePins = lrPolarPins\nexport type DiodeProps = z.input<typeof diodeProps>\n\nexport const ledProps = commonComponentProps.extend({\n color: z.string().optional(),\n})\nexport const ledPins = lrPolarPins\nexport type LedProps = z.input<typeof ledProps>\n\nexport const switchProps = commonComponentProps.extend({\n ftype: z.literal(\"switch\"),\n switchType: z.enum([\"spst\"]).default(\"spst\"),\n isNormallyClosed: z.boolean().default(false),\n})\nexport type SwitchProps = z.input<typeof switchProps>\n\nexport const boardProps = z.object({\n width: distance,\n height: distance,\n pcbX: distance.optional().default(0),\n pcbY: distance.optional().default(0),\n layout: z.any().optional(),\n routingDisabled: z.boolean().optional(),\n children: z.any(),\n})\nexport type BoardProps = z.input<typeof boardProps>\n\nexport const distanceOrMultiplier = distance.or(z.enum([\"2x\", \"3x\", \"4x\"]))\n\nexport const schematicPortArrangement = z\n .object({\n leftSize: z.number().optional(),\n topSize: z.number().optional(),\n rightSize: z.number().optional(),\n bottomSize: z.number().optional(),\n })\n .or(\n z.object({\n leftSide: explicitPinSideDefinition.optional(),\n rightSide: explicitPinSideDefinition.optional(),\n topSide: explicitPinSideDefinition.optional(),\n bottomSide: explicitPinSideDefinition.optional(),\n }),\n )\n\nexport const chipProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z.record(z.number(), z.string()).optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n schPinSpacing: distanceOrMultiplier\n .or(z.literal(\"auto\"))\n .optional()\n .default(\"auto\"),\n schWidth: distanceOrMultiplier\n .or(z.literal(\"auto\"))\n .optional()\n .default(\"auto\"),\n})\n/**\n * @deprecated Use ChipProps instead.\n */\nexport const bugProps = chipProps\nexport type ChipProps = z.input<typeof chipProps>\n\nexport const viaProps = commonLayoutProps.extend({\n fromLayer: layer_ref,\n toLayer: layer_ref,\n holeDiameter: distance,\n outerDiameter: distance,\n})\nexport type ViaProps = z.input<typeof viaProps>\n\nexport const netAliasProps = commonLayoutProps.extend({\n net: z.string().optional(),\n})\nexport type NetAliasProps = z.input<typeof netAliasProps>\n\nexport const traceProps = z\n .object({\n path: z.array(z.string()),\n thickness: distance.optional(),\n schematicRouteHints: z.array(point).optional(),\n pcbRouteHints: z.array(route_hint_point).optional(),\n })\n .or(\n z.object({\n from: z.string(),\n to: z.string(),\n thickness: distance.optional(),\n schematicRouteHints: z.array(point).optional(),\n pcbRouteHints: z.array(route_hint_point).optional(),\n }),\n )\nexport type TraceProps = z.input<typeof traceProps>\n\nexport const smtPadProps = z.union([\n pcbLayoutProps.omit({ pcbRotation: true }).extend({\n shape: z.literal(\"circle\"),\n radius: distance.optional(),\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true }).extend({\n shape: z.literal(\"rect\"),\n width: distance.optional(),\n height: distance.optional(),\n portHints: portHints.optional(),\n }),\n])\nexport type SmtPadProps = z.input<typeof smtPadProps>\n\nexport const platedHoleProps = z.union([\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n shape: z.literal(\"circle\"),\n holeDiameter: distance,\n outerDiameter: distance,\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n shape: z.literal(\"oval\"),\n outerWidth: distance,\n outerHeight: distance,\n innerWidth: distance,\n innerHeight: distance,\n portHints: portHints.optional(),\n }),\n])\nexport type PlatedHoleProps = z.input<typeof platedHoleProps>\n\nexport const holeProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({\n holeDiameter: distance,\n})\nexport type HoleProps = z.input<typeof holeProps>\n\nexport const schematicBoxProps = z.object({\n schX: distance,\n schY: distance,\n width: distance,\n height: distance,\n})\nexport type SchematicBoxProps = z.input<typeof schematicBoxProps>\n\nexport const schematicTextProps = z.object({\n schX: distance,\n schY: distance,\n text: z.string(),\n})\nexport type SchematicTextProps = z.input<typeof schematicTextProps>\n\nexport const schematicLineProps = z.object({\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n})\nexport type SchematicLineProps = z.input<typeof schematicLineProps>\n\nexport const schematicPathProps = z.object({\n points: z.array(point),\n isFilled: z.boolean().optional().default(false),\n fillColor: z.enum([\"red\", \"blue\"]).optional(),\n})\nexport type SchematicPathProps = z.input<typeof schematicPathProps>\n\nexport const constraintProps = z.union([\n z.object({\n type: z.literal(\"xdist\"),\n dist: distance,\n left: z.string(),\n right: z.string(),\n }),\n z.object({\n type: z.literal(\"ydist\"),\n dist: distance,\n top: z.string(),\n bottom: z.string(),\n }),\n])\nexport type ConstraintProps = z.input<typeof constraintProps>\n\nexport const constrainedLayoutProps = z.object({})\nexport type ConstrainedLayoutProps = z.input<typeof constrainedLayoutProps>\n\nexport const footprintProps = z.object({})\nexport type FootprintProps = z.input<typeof footprintProps>\n\nexport const componentProps = commonComponentProps\nexport type ComponentProps = z.input<typeof componentProps>\n\nexport const groupProps = commonLayoutProps.extend({\n name: z.string().optional(),\n layout: z.custom<LayoutBuilder>((v) => true).optional(),\n children: z.any().optional(),\n routingDisabled: z.boolean().optional(),\n})\nexport type GroupProps = z.input<typeof groupProps>\n\nexport const powerSourceProps = commonComponentProps.extend({\n voltage,\n})\nexport type PowerSourceProps = z.input<typeof powerSourceProps>\n\nexport const portProps = commonLayoutProps.extend({\n name: z.string(),\n pinNumber: z.number().optional(),\n aliases: z.array(z.string()).optional(),\n direction: direction,\n})\nexport type PortProps = z.input<typeof portProps>\n\nexport const silkscreenTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n})\nexport type SilkscreenTextProps = z.input<typeof silkscreenTextProps>\n\nexport const silkscreenPathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n })\nexport type SilkscreenPathProps = z.input<typeof silkscreenPathProps>\n\nexport const silkscreenLineProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n strokeWidth: distance,\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n })\nexport type SilkscreenLineProps = z.input<typeof silkscreenLineProps>\n\nexport const silkscreenRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n width: distance,\n height: distance,\n })\nexport type SilkscreenRectProps = z.input<typeof silkscreenRectProps>\n\nexport const silkscreenCircleProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n radius: distance,\n })\nexport type SilkscreenCircleProps = z.input<typeof silkscreenCircleProps>\n\nexport const traceHintProps = z.object({\n for: z.string(),\n order: z.number().optional(),\n offset: route_hint_point.optional(),\n offsets: z.array(route_hint_point).optional(),\n traceWidth: z.number().optional(),\n})\n\nexport type TraceHintProps = z.input<typeof traceHintProps>\n\nexport const pcbTraceProps = z.object({\n layer: z.string().optional(),\n thickness: distance.optional(),\n route: z.array(route_hint_point),\n})\nexport type PcbTraceProps = z.input<typeof pcbTraceProps>\n\nexport const fabricationNoteTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n})\nexport type FabricationNoteTextProps = z.input<typeof fabricationNoteTextProps>\n\nexport const fabricationNotePathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n })\nexport type FabricationNotePathProps = z.input<typeof fabricationNotePathProps>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAaO;AAEP,iBAAkB;AAEX,IAAM,YAAY,aAAE,MAAM,aAAE,OAAO,EAAE,GAAG,aAAE,OAAO,CAAC,CAAC;AAEnD,IAAM,YAAY,aAAE,KAAK,CAAC,MAAM,QAAQ,QAAQ,OAAO,CAAC;AAExD,IAAM,oBAAoB,aAAE,KAAK;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,4BAA4B,aAAE,OAAO;AAAA,EAChD,MAAM,aAAE,MAAM,aAAE,OAAO,CAAC;AAAA,EACxB,WAAW,aAAE,MAAM;AAAA,IACjB,aAAE,QAAQ,eAAe;AAAA,IACzB,aAAE,QAAQ,eAAe;AAAA,IACzB,aAAE,QAAQ,eAAe;AAAA,IACzB,aAAE,QAAQ,eAAe;AAAA,EAC3B,CAAC;AACH,CAAC;AAGM,IAAM,iBAAiB,aAAE,OAAO;AAAA,EACrC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa,qBAAS,SAAS;AAAA,EAC/B,OAAO,sBAAU,SAAS;AAC5B,CAAC;AACM,IAAM,oBAAoB,aAAE,OAAO;AAAA,EACxC,MAAM,qBAAS,SAAS;AAAA,EACxB,MAAM,qBAAS,SAAS;AAAA,EACxB,aAAa,qBAAS,SAAS;AAAA,EAC/B,MAAM,qBAAS,SAAS;AAAA,EACxB,MAAM,qBAAS,SAAS;AAAA,EACxB,aAAa,qBAAS,SAAS;AAAA,EAC/B,OAAO,sBAAU,SAAS;AAAA;AAAA;AAAA,EAI1B,WAAW,aAAE,OAAkB,CAAC,MAAM,IAAI,EAAE,SAAS;AACvD,CAAC;AAGM,IAAM,gBAAgB,aAAE,OAAO;AAAA,EACpC,qBAAqB,aAAE,OAAO,2BAAe,aAAE,MAAM,aAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAC7E,CAAC;AAGD,IAAM,SAAS,aAAE,OAAO;AAAA,EACtB,GAAG,aAAE,MAAM,CAAC,aAAE,OAAO,GAAG,aAAE,OAAO,CAAC,CAAC;AAAA,EACnC,GAAG,aAAE,MAAM,CAAC,aAAE,OAAO,GAAG,aAAE,OAAO,CAAC,CAAC;AAAA,EACnC,GAAG,aAAE,MAAM,CAAC,aAAE,OAAO,GAAG,aAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAEM,IAAM,eAAe,aAAE,OAAO;AAAA,EACnC,gBAAgB,aAAE,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS;AAAA,EAC/C,gBAAgB,OAAO,SAAS;AAAA,EAChC,MAAM,OAAO,SAAS;AACxB,CAAC;AAEM,IAAM,cAAc,aAAa,OAAO;AAAA,EAC7C,QAAQ,aAAE,OAAO;AACnB,CAAC;AAEM,IAAM,cAAc,aAAa,OAAO;AAAA,EAC7C,QAAQ,aAAE,OAAO;AAAA,EACjB,QAAQ,aAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;AAEM,IAAM,gBAAgB,aAAa,OAAO;AAAA,EAC/C,OAAO,aAAE,IAAI;AACf,CAAC;AAEM,IAAM,uBAAuB,kBACjC,MAAM,aAAa,EACnB,OAAO;AAAA,EACN,MAAM,aAAE,OAAO;AAAA,EACf,UAAU,aAAE,MAAM,CAAC,aAAa,aAAa,aAAa,CAAC,EAAE,SAAS;AAAA,EACtE,UAAU,aAAE,IAAI,EAAE,SAAS;AAC7B,CAAC;AAGI,IAAM,SAAS,CAAC,QAAQ,QAAQ,QAAQ,OAAO;AAC/C,IAAM,cAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,gBAAgB,qBAAqB,OAAO;AAAA,EACvD;AACF,CAAC;AACM,IAAM,eAAe;AAGrB,IAAM,iBAAiB,qBAAqB,OAAO;AAAA,EACxD;AACF,CAAC;AACM,IAAM,gBAAgB;AAGtB,IAAM,gBAAgB,qBAAqB,OAAO;AAAA,EACvD;AACF,CAAC;AACM,IAAM,eAAe;AAGrB,IAAM,aAAa,qBAAqB,OAAO,CAAC,CAAC;AACjD,IAAM,YAAY;AAGlB,IAAM,WAAW,qBAAqB,OAAO;AAAA,EAClD,OAAO,aAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AACM,IAAM,UAAU;AAGhB,IAAM,cAAc,qBAAqB,OAAO;AAAA,EACrD,OAAO,aAAE,QAAQ,QAAQ;AAAA,EACzB,YAAY,aAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,MAAM;AAAA,EAC3C,kBAAkB,aAAE,QAAQ,EAAE,QAAQ,KAAK;AAC7C,CAAC;AAGM,IAAM,aAAa,aAAE,OAAO;AAAA,EACjC,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM,qBAAS,SAAS,EAAE,QAAQ,CAAC;AAAA,EACnC,MAAM,qBAAS,SAAS,EAAE,QAAQ,CAAC;AAAA,EACnC,QAAQ,aAAE,IAAI,EAAE,SAAS;AAAA,EACzB,iBAAiB,aAAE,QAAQ,EAAE,SAAS;AAAA,EACtC,UAAU,aAAE,IAAI;AAClB,CAAC;AAGM,IAAM,uBAAuB,qBAAS,GAAG,aAAE,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,CAAC;AAEnE,IAAM,2BAA2B,aACrC,OAAO;AAAA,EACN,UAAU,aAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,YAAY,aAAE,OAAO,EAAE,SAAS;AAClC,CAAC,EACA;AAAA,EACC,aAAE,OAAO;AAAA,IACP,UAAU,0BAA0B,SAAS;AAAA,IAC7C,WAAW,0BAA0B,SAAS;AAAA,IAC9C,SAAS,0BAA0B,SAAS;AAAA,IAC5C,YAAY,0BAA0B,SAAS;AAAA,EACjD,CAAC;AACH;AAEK,IAAM,YAAY,qBAAqB,OAAO;AAAA,EACnD,wBAAwB,aAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,WAAW,aAAE,OAAO,aAAE,OAAO,GAAG,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACrD,oBAAoB,yBAAyB,SAAS;AAAA,EACtD,eAAe,qBACZ,GAAG,aAAE,QAAQ,MAAM,CAAC,EACpB,SAAS,EACT,QAAQ,MAAM;AAAA,EACjB,UAAU,qBACP,GAAG,aAAE,QAAQ,MAAM,CAAC,EACpB,SAAS,EACT,QAAQ,MAAM;AACnB,CAAC;AAIM,IAAM,WAAW;AAGjB,IAAM,WAAW,kBAAkB,OAAO;AAAA,EAC/C,WAAW;AAAA,EACX,SAAS;AAAA,EACT,cAAc;AAAA,EACd,eAAe;AACjB,CAAC;AAGM,IAAM,gBAAgB,kBAAkB,OAAO;AAAA,EACpD,KAAK,aAAE,OAAO,EAAE,SAAS;AAC3B,CAAC;AAGM,IAAM,aAAa,aACvB,OAAO;AAAA,EACN,MAAM,aAAE,MAAM,aAAE,OAAO,CAAC;AAAA,EACxB,WAAW,qBAAS,SAAS;AAAA,EAC7B,qBAAqB,aAAE,MAAM,iBAAK,EAAE,SAAS;AAAA,EAC7C,eAAe,aAAE,MAAM,4BAAgB,EAAE,SAAS;AACpD,CAAC,EACA;AAAA,EACC,aAAE,OAAO;AAAA,IACP,MAAM,aAAE,OAAO;AAAA,IACf,IAAI,aAAE,OAAO;AAAA,IACb,WAAW,qBAAS,SAAS;AAAA,IAC7B,qBAAqB,aAAE,MAAM,iBAAK,EAAE,SAAS;AAAA,IAC7C,eAAe,aAAE,MAAM,4BAAgB,EAAE,SAAS;AAAA,EACpD,CAAC;AACH;AAGK,IAAM,cAAc,aAAE,MAAM;AAAA,EACjC,eAAe,KAAK,EAAE,aAAa,KAAK,CAAC,EAAE,OAAO;AAAA,IAChD,OAAO,aAAE,QAAQ,QAAQ;AAAA,IACzB,QAAQ,qBAAS,SAAS;AAAA,IAC1B,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AAAA,EACD,eAAe,KAAK,EAAE,aAAa,KAAK,CAAC,EAAE,OAAO;AAAA,IAChD,OAAO,aAAE,QAAQ,MAAM;AAAA,IACvB,OAAO,qBAAS,SAAS;AAAA,IACzB,QAAQ,qBAAS,SAAS;AAAA,IAC1B,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AACH,CAAC;AAGM,IAAM,kBAAkB,aAAE,MAAM;AAAA,EACrC,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,OAAO,aAAE,QAAQ,QAAQ;AAAA,IACzB,cAAc;AAAA,IACd,eAAe;AAAA,IACf,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AAAA,EACD,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,OAAO,aAAE,QAAQ,MAAM;AAAA,IACvB,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AACH,CAAC;AAGM,IAAM,YAAY,eAAe,KAAK,EAAE,aAAa,KAAK,CAAC,EAAE,OAAO;AAAA,EACzE,cAAc;AAChB,CAAC;AAGM,IAAM,oBAAoB,aAAE,OAAO;AAAA,EACxC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACV,CAAC;AAGM,IAAM,qBAAqB,aAAE,OAAO;AAAA,EACzC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM,aAAE,OAAO;AACjB,CAAC;AAGM,IAAM,qBAAqB,aAAE,OAAO;AAAA,EACzC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,CAAC;AAGM,IAAM,qBAAqB,aAAE,OAAO;AAAA,EACzC,QAAQ,aAAE,MAAM,iBAAK;AAAA,EACrB,UAAU,aAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC9C,WAAW,aAAE,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS;AAC9C,CAAC;AAGM,IAAM,kBAAkB,aAAE,MAAM;AAAA,EACrC,aAAE,OAAO;AAAA,IACP,MAAM,aAAE,QAAQ,OAAO;AAAA,IACvB,MAAM;AAAA,IACN,MAAM,aAAE,OAAO;AAAA,IACf,OAAO,aAAE,OAAO;AAAA,EAClB,CAAC;AAAA,EACD,aAAE,OAAO;AAAA,IACP,MAAM,aAAE,QAAQ,OAAO;AAAA,IACvB,MAAM;AAAA,IACN,KAAK,aAAE,OAAO;AAAA,IACd,QAAQ,aAAE,OAAO;AAAA,EACnB,CAAC;AACH,CAAC;AAGM,IAAM,yBAAyB,aAAE,OAAO,CAAC,CAAC;AAG1C,IAAM,iBAAiB,aAAE,OAAO,CAAC,CAAC;AAGlC,IAAM,iBAAiB;AAGvB,IAAM,aAAa,kBAAkB,OAAO;AAAA,EACjD,MAAM,aAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,QAAQ,aAAE,OAAsB,CAAC,MAAM,IAAI,EAAE,SAAS;AAAA,EACtD,UAAU,aAAE,IAAI,EAAE,SAAS;AAAA,EAC3B,iBAAiB,aAAE,QAAQ,EAAE,SAAS;AACxC,CAAC;AAGM,IAAM,mBAAmB,qBAAqB,OAAO;AAAA,EAC1D;AACF,CAAC;AAGM,IAAM,YAAY,kBAAkB,OAAO;AAAA,EAChD,MAAM,aAAE,OAAO;AAAA,EACf,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,SAAS,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACtC;AACF,CAAC;AAGM,IAAM,sBAAsB,eAAe,OAAO;AAAA,EACvD,MAAM,aAAE,OAAO;AAAA,EACf,iBAAiB,aACd,KAAK,CAAC,UAAU,YAAY,aAAa,eAAe,cAAc,CAAC,EACvE,QAAQ,QAAQ;AAAA,EACnB,MAAM,aAAE,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS;AAAA,EACzC,UAAU,mBAAO,SAAS;AAC5B,CAAC;AAGM,IAAM,sBAAsB,eAChC,KAAK,EAAE,MAAM,MAAM,MAAM,MAAM,aAAa,KAAK,CAAC,EAClD,OAAO;AAAA,EACN,OAAO,aAAE,MAAM,4BAAgB;AAAA,EAC/B,aAAa,mBAAO,SAAS;AAC/B,CAAC;AAGI,IAAM,sBAAsB,eAChC,KAAK,EAAE,MAAM,MAAM,MAAM,MAAM,aAAa,KAAK,CAAC,EAClD,OAAO;AAAA,EACN,aAAa;AAAA,EACb,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,CAAC;AAGI,IAAM,sBAAsB,eAChC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,UAAU,aAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,WAAW,aAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,aAAa,qBAAS,SAAS;AAAA,EAC/B,OAAO;AAAA,EACP,QAAQ;AACV,CAAC;AAGI,IAAM,wBAAwB,eAClC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,UAAU,aAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,WAAW,aAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,aAAa,qBAAS,SAAS;AAAA,EAC/B,QAAQ;AACV,CAAC;AAGI,IAAM,iBAAiB,aAAE,OAAO;AAAA,EACrC,KAAK,aAAE,OAAO;AAAA,EACd,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,QAAQ,6BAAiB,SAAS;AAAA,EAClC,SAAS,aAAE,MAAM,4BAAgB,EAAE,SAAS;AAAA,EAC5C,YAAY,aAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAIM,IAAM,gBAAgB,aAAE,OAAO;AAAA,EACpC,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAW,qBAAS,SAAS;AAAA,EAC7B,OAAO,aAAE,MAAM,4BAAgB;AACjC,CAAC;AAGM,IAAM,2BAA2B,eAAe,OAAO;AAAA,EAC5D,MAAM,aAAE,OAAO;AAAA,EACf,iBAAiB,aACd,KAAK,CAAC,UAAU,YAAY,aAAa,eAAe,cAAc,CAAC,EACvE,QAAQ,QAAQ;AAAA,EACnB,MAAM,aAAE,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS;AAAA,EACzC,UAAU,mBAAO,SAAS;AAC5B,CAAC;AAGM,IAAM,2BAA2B,eACrC,KAAK,EAAE,MAAM,MAAM,MAAM,MAAM,aAAa,KAAK,CAAC,EAClD,OAAO;AAAA,EACN,OAAO,aAAE,MAAM,4BAAgB;AAAA,EAC/B,aAAa,mBAAO,SAAS;AAC/B,CAAC;","names":[]}
|
|
1
|
+
{"version":3,"sources":["../lib/index.ts"],"sourcesContent":["import type { LayoutBuilder } from \"@tscircuit/layout\"\nimport {\n type AnySoupElementInput,\n capacitance,\n distance,\n inductance,\n layer_ref,\n length,\n point,\n resistance,\n rotation,\n route_hint_point,\n supplier_name,\n voltage,\n} from \"@tscircuit/soup\"\nimport type { ReactElement } from \"react\"\nimport { z } from \"zod\"\n\nexport const portHints = z.array(z.string().or(z.number()))\n\nexport const direction = z.enum([\"up\", \"down\", \"left\", \"right\"])\n\nexport const relativeDirection = z.enum([\n \"top-to-bottom\",\n \"left-to-right\",\n \"bottom-to-top\",\n \"right-to-left\",\n])\n\nexport const explicitPinSideDefinition = z.object({\n pins: z.array(z.number()),\n direction: z.union([\n z.literal(\"top-to-bottom\"),\n z.literal(\"left-to-right\"),\n z.literal(\"bottom-to-top\"),\n z.literal(\"right-to-left\"),\n ]),\n})\n\nexport type Footprint = string | ReactElement | AnySoupElementInput[]\nexport const pcbLayoutProps = z.object({\n pcbX: distance,\n pcbY: distance,\n pcbRotation: rotation.optional(),\n layer: layer_ref.optional(),\n})\nexport const commonLayoutProps = z.object({\n pcbX: distance.optional(),\n pcbY: distance.optional(),\n pcbRotation: rotation.optional(),\n schX: distance.optional(),\n schY: distance.optional(),\n schRotation: rotation.optional(),\n layer: layer_ref.optional(),\n\n // TODO pull in literals from @tscircuit/footprint\n // TODO footprint can be a string or react child\n footprint: z.custom<Footprint>((v) => true).optional(),\n})\nexport type CommonLayoutProps = z.input<typeof commonLayoutProps>\n\nexport const supplierProps = z.object({\n supplierPartNumbers: z.record(supplier_name, z.array(z.string())).optional(),\n})\nexport type SupplierProps = z.input<typeof supplierProps>\n\nconst point3 = z.object({\n x: z.union([z.number(), z.string()]),\n y: z.union([z.number(), z.string()]),\n z: z.union([z.number(), z.string()]),\n})\n\nexport const cadModelBase = z.object({\n rotationOffset: z.number().or(point3).optional(),\n positionOffset: point3.optional(),\n size: point3.optional(),\n})\n\nexport const cadModelStl = cadModelBase.extend({\n stlUrl: z.string(),\n})\n\nexport const cadModelObj = cadModelBase.extend({\n objUrl: z.string(),\n mtlUrl: z.string().optional(),\n})\n\nexport const cadModelJscad = cadModelBase.extend({\n jscad: z.any(),\n})\n\nexport const commonComponentProps = commonLayoutProps\n .merge(supplierProps)\n .extend({\n name: z.string(),\n cadModel: z.union([cadModelStl, cadModelObj, cadModelJscad]).optional(),\n children: z.any().optional(),\n })\nexport type CommonComponentProps = z.input<typeof commonComponentProps>\n\nexport const lrPins = [\"pin1\", \"left\", \"pin2\", \"right\"] as const\nexport const lrPolarPins = [\n \"pin1\",\n \"left\",\n \"anode\",\n \"pos\",\n \"pin2\",\n \"right\",\n \"cathode\",\n \"neg\",\n] as const\n\nexport const resistorProps = commonComponentProps.extend({\n resistance,\n})\nexport const resistorPins = lrPins\nexport type ResistorProps = z.input<typeof resistorProps>\n\nexport const capacitorProps = commonComponentProps.extend({\n capacitance,\n})\nexport const capacitorPins = lrPolarPins\nexport type CapacitorProps = z.input<typeof capacitorProps>\n\nexport const inductorProps = commonComponentProps.extend({\n inductance,\n})\nexport const inductorPins = lrPins\nexport type InductorProps = z.input<typeof inductorProps>\n\nexport const diodeProps = commonComponentProps.extend({})\nexport const diodePins = lrPolarPins\nexport type DiodeProps = z.input<typeof diodeProps>\n\nexport const ledProps = commonComponentProps.extend({\n color: z.string().optional(),\n})\nexport const ledPins = lrPolarPins\nexport type LedProps = z.input<typeof ledProps>\n\nexport const switchProps = commonComponentProps.extend({\n ftype: z.literal(\"switch\"),\n switchType: z.enum([\"spst\"]).default(\"spst\"),\n isNormallyClosed: z.boolean().default(false),\n})\nexport type SwitchProps = z.input<typeof switchProps>\n\nexport const boardProps = z.object({\n width: distance,\n height: distance,\n pcbX: distance.optional().default(0),\n pcbY: distance.optional().default(0),\n layout: z.any().optional(),\n routingDisabled: z.boolean().optional(),\n children: z.any(),\n})\nexport type BoardProps = z.input<typeof boardProps>\n\nexport const distanceOrMultiplier = distance.or(z.enum([\"2x\", \"3x\", \"4x\"]))\n\nexport const schematicPortArrangement = z\n .object({\n leftSize: z.number().optional(),\n topSize: z.number().optional(),\n rightSize: z.number().optional(),\n bottomSize: z.number().optional(),\n })\n .or(\n z.object({\n leftSide: explicitPinSideDefinition.optional(),\n rightSide: explicitPinSideDefinition.optional(),\n topSide: explicitPinSideDefinition.optional(),\n bottomSide: explicitPinSideDefinition.optional(),\n }),\n )\n\nexport const chipProps = commonComponentProps.extend({\n manufacturerPartNumber: z.string().optional(),\n pinLabels: z.record(z.number(), z.string()).optional(),\n schPortArrangement: schematicPortArrangement.optional(),\n schPinSpacing: distanceOrMultiplier\n .or(z.literal(\"auto\"))\n .optional()\n .default(\"auto\"),\n schWidth: distanceOrMultiplier\n .or(z.literal(\"auto\"))\n .optional()\n .default(\"auto\"),\n})\n/**\n * @deprecated Use ChipProps instead.\n */\nexport const bugProps = chipProps\nexport type ChipProps = z.input<typeof chipProps>\n\nexport const viaProps = commonLayoutProps.extend({\n fromLayer: layer_ref,\n toLayer: layer_ref,\n holeDiameter: distance,\n outerDiameter: distance,\n})\nexport type ViaProps = z.input<typeof viaProps>\n\nexport const netAliasProps = commonLayoutProps.extend({\n net: z.string().optional(),\n})\nexport type NetAliasProps = z.input<typeof netAliasProps>\n\nexport const portRef = z.union([\n z.string(),\n z.object({ getPortSelector: z.function(z.tuple([]), z.string()) }),\n])\n\nexport const traceProps = z\n .object({\n path: z.array(portRef),\n thickness: distance.optional(),\n schematicRouteHints: z.array(point).optional(),\n pcbRouteHints: z.array(route_hint_point).optional(),\n })\n .or(\n z.object({\n from: portRef,\n to: portRef,\n thickness: distance.optional(),\n schematicRouteHints: z.array(point).optional(),\n pcbRouteHints: z.array(route_hint_point).optional(),\n }),\n )\nexport type TraceProps = z.input<typeof traceProps>\n\nexport const smtPadProps = z.union([\n pcbLayoutProps.omit({ pcbRotation: true }).extend({\n shape: z.literal(\"circle\"),\n radius: distance.optional(),\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true }).extend({\n shape: z.literal(\"rect\"),\n width: distance.optional(),\n height: distance.optional(),\n portHints: portHints.optional(),\n }),\n])\nexport type SmtPadProps = z.input<typeof smtPadProps>\n\nexport const platedHoleProps = z.union([\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n shape: z.literal(\"circle\"),\n holeDiameter: distance,\n outerDiameter: distance,\n portHints: portHints.optional(),\n }),\n pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({\n shape: z.literal(\"oval\"),\n outerWidth: distance,\n outerHeight: distance,\n innerWidth: distance,\n innerHeight: distance,\n portHints: portHints.optional(),\n }),\n])\nexport type PlatedHoleProps = z.input<typeof platedHoleProps>\n\nexport const holeProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({\n holeDiameter: distance,\n})\nexport type HoleProps = z.input<typeof holeProps>\n\nexport const schematicBoxProps = z.object({\n schX: distance,\n schY: distance,\n width: distance,\n height: distance,\n})\nexport type SchematicBoxProps = z.input<typeof schematicBoxProps>\n\nexport const schematicTextProps = z.object({\n schX: distance,\n schY: distance,\n text: z.string(),\n})\nexport type SchematicTextProps = z.input<typeof schematicTextProps>\n\nexport const schematicLineProps = z.object({\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n})\nexport type SchematicLineProps = z.input<typeof schematicLineProps>\n\nexport const schematicPathProps = z.object({\n points: z.array(point),\n isFilled: z.boolean().optional().default(false),\n fillColor: z.enum([\"red\", \"blue\"]).optional(),\n})\nexport type SchematicPathProps = z.input<typeof schematicPathProps>\n\nexport const constraintProps = z.union([\n z.object({\n type: z.literal(\"xdist\"),\n dist: distance,\n left: z.string(),\n right: z.string(),\n }),\n z.object({\n type: z.literal(\"ydist\"),\n dist: distance,\n top: z.string(),\n bottom: z.string(),\n }),\n])\nexport type ConstraintProps = z.input<typeof constraintProps>\n\nexport const constrainedLayoutProps = z.object({})\nexport type ConstrainedLayoutProps = z.input<typeof constrainedLayoutProps>\n\nexport const footprintProps = z.object({})\nexport type FootprintProps = z.input<typeof footprintProps>\n\nexport const componentProps = commonComponentProps\nexport type ComponentProps = z.input<typeof componentProps>\n\nexport const groupProps = commonLayoutProps.extend({\n name: z.string().optional(),\n layout: z.custom<LayoutBuilder>((v) => true).optional(),\n children: z.any().optional(),\n routingDisabled: z.boolean().optional(),\n})\nexport type GroupProps = z.input<typeof groupProps>\n\nexport const powerSourceProps = commonComponentProps.extend({\n voltage,\n})\nexport type PowerSourceProps = z.input<typeof powerSourceProps>\n\nexport const portProps = commonLayoutProps.extend({\n name: z.string(),\n pinNumber: z.number().optional(),\n aliases: z.array(z.string()).optional(),\n direction: direction,\n})\nexport type PortProps = z.input<typeof portProps>\n\nexport const silkscreenTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n})\nexport type SilkscreenTextProps = z.input<typeof silkscreenTextProps>\n\nexport const silkscreenPathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n })\nexport type SilkscreenPathProps = z.input<typeof silkscreenPathProps>\n\nexport const silkscreenLineProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n strokeWidth: distance,\n x1: distance,\n y1: distance,\n x2: distance,\n y2: distance,\n })\nexport type SilkscreenLineProps = z.input<typeof silkscreenLineProps>\n\nexport const silkscreenRectProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n width: distance,\n height: distance,\n })\nexport type SilkscreenRectProps = z.input<typeof silkscreenRectProps>\n\nexport const silkscreenCircleProps = pcbLayoutProps\n .omit({ pcbRotation: true })\n .extend({\n isFilled: z.boolean().optional(),\n isOutline: z.boolean().optional(),\n strokeWidth: distance.optional(),\n radius: distance,\n })\nexport type SilkscreenCircleProps = z.input<typeof silkscreenCircleProps>\n\nexport const traceHintProps = z.object({\n for: z.string(),\n order: z.number().optional(),\n offset: route_hint_point.optional(),\n offsets: z.array(route_hint_point).optional(),\n traceWidth: z.number().optional(),\n})\n\nexport type TraceHintProps = z.input<typeof traceHintProps>\n\nexport const pcbTraceProps = z.object({\n layer: z.string().optional(),\n thickness: distance.optional(),\n route: z.array(route_hint_point),\n})\nexport type PcbTraceProps = z.input<typeof pcbTraceProps>\n\nexport const fabricationNoteTextProps = pcbLayoutProps.extend({\n text: z.string(),\n anchorAlignment: z\n .enum([\"center\", \"top_left\", \"top_right\", \"bottom_left\", \"bottom_right\"])\n .default(\"center\"),\n font: z.enum([\"tscircuit2024\"]).optional(),\n fontSize: length.optional(),\n})\nexport type FabricationNoteTextProps = z.input<typeof fabricationNoteTextProps>\n\nexport const fabricationNotePathProps = pcbLayoutProps\n .omit({ pcbX: true, pcbY: true, pcbRotation: true })\n .extend({\n route: z.array(route_hint_point),\n strokeWidth: length.optional(),\n })\nexport type FabricationNotePathProps = z.input<typeof fabricationNotePathProps>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAaO;AAEP,iBAAkB;AAEX,IAAM,YAAY,aAAE,MAAM,aAAE,OAAO,EAAE,GAAG,aAAE,OAAO,CAAC,CAAC;AAEnD,IAAM,YAAY,aAAE,KAAK,CAAC,MAAM,QAAQ,QAAQ,OAAO,CAAC;AAExD,IAAM,oBAAoB,aAAE,KAAK;AAAA,EACtC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,CAAC;AAEM,IAAM,4BAA4B,aAAE,OAAO;AAAA,EAChD,MAAM,aAAE,MAAM,aAAE,OAAO,CAAC;AAAA,EACxB,WAAW,aAAE,MAAM;AAAA,IACjB,aAAE,QAAQ,eAAe;AAAA,IACzB,aAAE,QAAQ,eAAe;AAAA,IACzB,aAAE,QAAQ,eAAe;AAAA,IACzB,aAAE,QAAQ,eAAe;AAAA,EAC3B,CAAC;AACH,CAAC;AAGM,IAAM,iBAAiB,aAAE,OAAO;AAAA,EACrC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,aAAa,qBAAS,SAAS;AAAA,EAC/B,OAAO,sBAAU,SAAS;AAC5B,CAAC;AACM,IAAM,oBAAoB,aAAE,OAAO;AAAA,EACxC,MAAM,qBAAS,SAAS;AAAA,EACxB,MAAM,qBAAS,SAAS;AAAA,EACxB,aAAa,qBAAS,SAAS;AAAA,EAC/B,MAAM,qBAAS,SAAS;AAAA,EACxB,MAAM,qBAAS,SAAS;AAAA,EACxB,aAAa,qBAAS,SAAS;AAAA,EAC/B,OAAO,sBAAU,SAAS;AAAA;AAAA;AAAA,EAI1B,WAAW,aAAE,OAAkB,CAAC,MAAM,IAAI,EAAE,SAAS;AACvD,CAAC;AAGM,IAAM,gBAAgB,aAAE,OAAO;AAAA,EACpC,qBAAqB,aAAE,OAAO,2BAAe,aAAE,MAAM,aAAE,OAAO,CAAC,CAAC,EAAE,SAAS;AAC7E,CAAC;AAGD,IAAM,SAAS,aAAE,OAAO;AAAA,EACtB,GAAG,aAAE,MAAM,CAAC,aAAE,OAAO,GAAG,aAAE,OAAO,CAAC,CAAC;AAAA,EACnC,GAAG,aAAE,MAAM,CAAC,aAAE,OAAO,GAAG,aAAE,OAAO,CAAC,CAAC;AAAA,EACnC,GAAG,aAAE,MAAM,CAAC,aAAE,OAAO,GAAG,aAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAEM,IAAM,eAAe,aAAE,OAAO;AAAA,EACnC,gBAAgB,aAAE,OAAO,EAAE,GAAG,MAAM,EAAE,SAAS;AAAA,EAC/C,gBAAgB,OAAO,SAAS;AAAA,EAChC,MAAM,OAAO,SAAS;AACxB,CAAC;AAEM,IAAM,cAAc,aAAa,OAAO;AAAA,EAC7C,QAAQ,aAAE,OAAO;AACnB,CAAC;AAEM,IAAM,cAAc,aAAa,OAAO;AAAA,EAC7C,QAAQ,aAAE,OAAO;AAAA,EACjB,QAAQ,aAAE,OAAO,EAAE,SAAS;AAC9B,CAAC;AAEM,IAAM,gBAAgB,aAAa,OAAO;AAAA,EAC/C,OAAO,aAAE,IAAI;AACf,CAAC;AAEM,IAAM,uBAAuB,kBACjC,MAAM,aAAa,EACnB,OAAO;AAAA,EACN,MAAM,aAAE,OAAO;AAAA,EACf,UAAU,aAAE,MAAM,CAAC,aAAa,aAAa,aAAa,CAAC,EAAE,SAAS;AAAA,EACtE,UAAU,aAAE,IAAI,EAAE,SAAS;AAC7B,CAAC;AAGI,IAAM,SAAS,CAAC,QAAQ,QAAQ,QAAQ,OAAO;AAC/C,IAAM,cAAc;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,gBAAgB,qBAAqB,OAAO;AAAA,EACvD;AACF,CAAC;AACM,IAAM,eAAe;AAGrB,IAAM,iBAAiB,qBAAqB,OAAO;AAAA,EACxD;AACF,CAAC;AACM,IAAM,gBAAgB;AAGtB,IAAM,gBAAgB,qBAAqB,OAAO;AAAA,EACvD;AACF,CAAC;AACM,IAAM,eAAe;AAGrB,IAAM,aAAa,qBAAqB,OAAO,CAAC,CAAC;AACjD,IAAM,YAAY;AAGlB,IAAM,WAAW,qBAAqB,OAAO;AAAA,EAClD,OAAO,aAAE,OAAO,EAAE,SAAS;AAC7B,CAAC;AACM,IAAM,UAAU;AAGhB,IAAM,cAAc,qBAAqB,OAAO;AAAA,EACrD,OAAO,aAAE,QAAQ,QAAQ;AAAA,EACzB,YAAY,aAAE,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,MAAM;AAAA,EAC3C,kBAAkB,aAAE,QAAQ,EAAE,QAAQ,KAAK;AAC7C,CAAC;AAGM,IAAM,aAAa,aAAE,OAAO;AAAA,EACjC,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,MAAM,qBAAS,SAAS,EAAE,QAAQ,CAAC;AAAA,EACnC,MAAM,qBAAS,SAAS,EAAE,QAAQ,CAAC;AAAA,EACnC,QAAQ,aAAE,IAAI,EAAE,SAAS;AAAA,EACzB,iBAAiB,aAAE,QAAQ,EAAE,SAAS;AAAA,EACtC,UAAU,aAAE,IAAI;AAClB,CAAC;AAGM,IAAM,uBAAuB,qBAAS,GAAG,aAAE,KAAK,CAAC,MAAM,MAAM,IAAI,CAAC,CAAC;AAEnE,IAAM,2BAA2B,aACrC,OAAO;AAAA,EACN,UAAU,aAAE,OAAO,EAAE,SAAS;AAAA,EAC9B,SAAS,aAAE,OAAO,EAAE,SAAS;AAAA,EAC7B,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,YAAY,aAAE,OAAO,EAAE,SAAS;AAClC,CAAC,EACA;AAAA,EACC,aAAE,OAAO;AAAA,IACP,UAAU,0BAA0B,SAAS;AAAA,IAC7C,WAAW,0BAA0B,SAAS;AAAA,IAC9C,SAAS,0BAA0B,SAAS;AAAA,IAC5C,YAAY,0BAA0B,SAAS;AAAA,EACjD,CAAC;AACH;AAEK,IAAM,YAAY,qBAAqB,OAAO;AAAA,EACnD,wBAAwB,aAAE,OAAO,EAAE,SAAS;AAAA,EAC5C,WAAW,aAAE,OAAO,aAAE,OAAO,GAAG,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACrD,oBAAoB,yBAAyB,SAAS;AAAA,EACtD,eAAe,qBACZ,GAAG,aAAE,QAAQ,MAAM,CAAC,EACpB,SAAS,EACT,QAAQ,MAAM;AAAA,EACjB,UAAU,qBACP,GAAG,aAAE,QAAQ,MAAM,CAAC,EACpB,SAAS,EACT,QAAQ,MAAM;AACnB,CAAC;AAIM,IAAM,WAAW;AAGjB,IAAM,WAAW,kBAAkB,OAAO;AAAA,EAC/C,WAAW;AAAA,EACX,SAAS;AAAA,EACT,cAAc;AAAA,EACd,eAAe;AACjB,CAAC;AAGM,IAAM,gBAAgB,kBAAkB,OAAO;AAAA,EACpD,KAAK,aAAE,OAAO,EAAE,SAAS;AAC3B,CAAC;AAGM,IAAM,UAAU,aAAE,MAAM;AAAA,EAC7B,aAAE,OAAO;AAAA,EACT,aAAE,OAAO,EAAE,iBAAiB,aAAE,SAAS,aAAE,MAAM,CAAC,CAAC,GAAG,aAAE,OAAO,CAAC,EAAE,CAAC;AACnE,CAAC;AAEM,IAAM,aAAa,aACvB,OAAO;AAAA,EACN,MAAM,aAAE,MAAM,OAAO;AAAA,EACrB,WAAW,qBAAS,SAAS;AAAA,EAC7B,qBAAqB,aAAE,MAAM,iBAAK,EAAE,SAAS;AAAA,EAC7C,eAAe,aAAE,MAAM,4BAAgB,EAAE,SAAS;AACpD,CAAC,EACA;AAAA,EACC,aAAE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,IAAI;AAAA,IACJ,WAAW,qBAAS,SAAS;AAAA,IAC7B,qBAAqB,aAAE,MAAM,iBAAK,EAAE,SAAS;AAAA,IAC7C,eAAe,aAAE,MAAM,4BAAgB,EAAE,SAAS;AAAA,EACpD,CAAC;AACH;AAGK,IAAM,cAAc,aAAE,MAAM;AAAA,EACjC,eAAe,KAAK,EAAE,aAAa,KAAK,CAAC,EAAE,OAAO;AAAA,IAChD,OAAO,aAAE,QAAQ,QAAQ;AAAA,IACzB,QAAQ,qBAAS,SAAS;AAAA,IAC1B,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AAAA,EACD,eAAe,KAAK,EAAE,aAAa,KAAK,CAAC,EAAE,OAAO;AAAA,IAChD,OAAO,aAAE,QAAQ,MAAM;AAAA,IACvB,OAAO,qBAAS,SAAS;AAAA,IACzB,QAAQ,qBAAS,SAAS;AAAA,IAC1B,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AACH,CAAC;AAGM,IAAM,kBAAkB,aAAE,MAAM;AAAA,EACrC,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,OAAO,aAAE,QAAQ,QAAQ;AAAA,IACzB,cAAc;AAAA,IACd,eAAe;AAAA,IACf,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AAAA,EACD,eAAe,KAAK,EAAE,aAAa,MAAM,OAAO,KAAK,CAAC,EAAE,OAAO;AAAA,IAC7D,OAAO,aAAE,QAAQ,MAAM;AAAA,IACvB,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,WAAW,UAAU,SAAS;AAAA,EAChC,CAAC;AACH,CAAC;AAGM,IAAM,YAAY,eAAe,KAAK,EAAE,aAAa,KAAK,CAAC,EAAE,OAAO;AAAA,EACzE,cAAc;AAChB,CAAC;AAGM,IAAM,oBAAoB,aAAE,OAAO;AAAA,EACxC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,OAAO;AAAA,EACP,QAAQ;AACV,CAAC;AAGM,IAAM,qBAAqB,aAAE,OAAO;AAAA,EACzC,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM,aAAE,OAAO;AACjB,CAAC;AAGM,IAAM,qBAAqB,aAAE,OAAO;AAAA,EACzC,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,CAAC;AAGM,IAAM,qBAAqB,aAAE,OAAO;AAAA,EACzC,QAAQ,aAAE,MAAM,iBAAK;AAAA,EACrB,UAAU,aAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,KAAK;AAAA,EAC9C,WAAW,aAAE,KAAK,CAAC,OAAO,MAAM,CAAC,EAAE,SAAS;AAC9C,CAAC;AAGM,IAAM,kBAAkB,aAAE,MAAM;AAAA,EACrC,aAAE,OAAO;AAAA,IACP,MAAM,aAAE,QAAQ,OAAO;AAAA,IACvB,MAAM;AAAA,IACN,MAAM,aAAE,OAAO;AAAA,IACf,OAAO,aAAE,OAAO;AAAA,EAClB,CAAC;AAAA,EACD,aAAE,OAAO;AAAA,IACP,MAAM,aAAE,QAAQ,OAAO;AAAA,IACvB,MAAM;AAAA,IACN,KAAK,aAAE,OAAO;AAAA,IACd,QAAQ,aAAE,OAAO;AAAA,EACnB,CAAC;AACH,CAAC;AAGM,IAAM,yBAAyB,aAAE,OAAO,CAAC,CAAC;AAG1C,IAAM,iBAAiB,aAAE,OAAO,CAAC,CAAC;AAGlC,IAAM,iBAAiB;AAGvB,IAAM,aAAa,kBAAkB,OAAO;AAAA,EACjD,MAAM,aAAE,OAAO,EAAE,SAAS;AAAA,EAC1B,QAAQ,aAAE,OAAsB,CAAC,MAAM,IAAI,EAAE,SAAS;AAAA,EACtD,UAAU,aAAE,IAAI,EAAE,SAAS;AAAA,EAC3B,iBAAiB,aAAE,QAAQ,EAAE,SAAS;AACxC,CAAC;AAGM,IAAM,mBAAmB,qBAAqB,OAAO;AAAA,EAC1D;AACF,CAAC;AAGM,IAAM,YAAY,kBAAkB,OAAO;AAAA,EAChD,MAAM,aAAE,OAAO;AAAA,EACf,WAAW,aAAE,OAAO,EAAE,SAAS;AAAA,EAC/B,SAAS,aAAE,MAAM,aAAE,OAAO,CAAC,EAAE,SAAS;AAAA,EACtC;AACF,CAAC;AAGM,IAAM,sBAAsB,eAAe,OAAO;AAAA,EACvD,MAAM,aAAE,OAAO;AAAA,EACf,iBAAiB,aACd,KAAK,CAAC,UAAU,YAAY,aAAa,eAAe,cAAc,CAAC,EACvE,QAAQ,QAAQ;AAAA,EACnB,MAAM,aAAE,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS;AAAA,EACzC,UAAU,mBAAO,SAAS;AAC5B,CAAC;AAGM,IAAM,sBAAsB,eAChC,KAAK,EAAE,MAAM,MAAM,MAAM,MAAM,aAAa,KAAK,CAAC,EAClD,OAAO;AAAA,EACN,OAAO,aAAE,MAAM,4BAAgB;AAAA,EAC/B,aAAa,mBAAO,SAAS;AAC/B,CAAC;AAGI,IAAM,sBAAsB,eAChC,KAAK,EAAE,MAAM,MAAM,MAAM,MAAM,aAAa,KAAK,CAAC,EAClD,OAAO;AAAA,EACN,aAAa;AAAA,EACb,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AACN,CAAC;AAGI,IAAM,sBAAsB,eAChC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,UAAU,aAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,WAAW,aAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,aAAa,qBAAS,SAAS;AAAA,EAC/B,OAAO;AAAA,EACP,QAAQ;AACV,CAAC;AAGI,IAAM,wBAAwB,eAClC,KAAK,EAAE,aAAa,KAAK,CAAC,EAC1B,OAAO;AAAA,EACN,UAAU,aAAE,QAAQ,EAAE,SAAS;AAAA,EAC/B,WAAW,aAAE,QAAQ,EAAE,SAAS;AAAA,EAChC,aAAa,qBAAS,SAAS;AAAA,EAC/B,QAAQ;AACV,CAAC;AAGI,IAAM,iBAAiB,aAAE,OAAO;AAAA,EACrC,KAAK,aAAE,OAAO;AAAA,EACd,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,QAAQ,6BAAiB,SAAS;AAAA,EAClC,SAAS,aAAE,MAAM,4BAAgB,EAAE,SAAS;AAAA,EAC5C,YAAY,aAAE,OAAO,EAAE,SAAS;AAClC,CAAC;AAIM,IAAM,gBAAgB,aAAE,OAAO;AAAA,EACpC,OAAO,aAAE,OAAO,EAAE,SAAS;AAAA,EAC3B,WAAW,qBAAS,SAAS;AAAA,EAC7B,OAAO,aAAE,MAAM,4BAAgB;AACjC,CAAC;AAGM,IAAM,2BAA2B,eAAe,OAAO;AAAA,EAC5D,MAAM,aAAE,OAAO;AAAA,EACf,iBAAiB,aACd,KAAK,CAAC,UAAU,YAAY,aAAa,eAAe,cAAc,CAAC,EACvE,QAAQ,QAAQ;AAAA,EACnB,MAAM,aAAE,KAAK,CAAC,eAAe,CAAC,EAAE,SAAS;AAAA,EACzC,UAAU,mBAAO,SAAS;AAC5B,CAAC;AAGM,IAAM,2BAA2B,eACrC,KAAK,EAAE,MAAM,MAAM,MAAM,MAAM,aAAa,KAAK,CAAC,EAClD,OAAO;AAAA,EACN,OAAO,aAAE,MAAM,4BAAgB;AAAA,EAC/B,aAAa,mBAAO,SAAS;AAC/B,CAAC;","names":[]}
|
package/lib/index.ts
ADDED
|
@@ -0,0 +1,429 @@
|
|
|
1
|
+
import type { LayoutBuilder } from "@tscircuit/layout"
|
|
2
|
+
import {
|
|
3
|
+
type AnySoupElementInput,
|
|
4
|
+
capacitance,
|
|
5
|
+
distance,
|
|
6
|
+
inductance,
|
|
7
|
+
layer_ref,
|
|
8
|
+
length,
|
|
9
|
+
point,
|
|
10
|
+
resistance,
|
|
11
|
+
rotation,
|
|
12
|
+
route_hint_point,
|
|
13
|
+
supplier_name,
|
|
14
|
+
voltage,
|
|
15
|
+
} from "@tscircuit/soup"
|
|
16
|
+
import type { ReactElement } from "react"
|
|
17
|
+
import { z } from "zod"
|
|
18
|
+
|
|
19
|
+
export const portHints = z.array(z.string().or(z.number()))
|
|
20
|
+
|
|
21
|
+
export const direction = z.enum(["up", "down", "left", "right"])
|
|
22
|
+
|
|
23
|
+
export const relativeDirection = z.enum([
|
|
24
|
+
"top-to-bottom",
|
|
25
|
+
"left-to-right",
|
|
26
|
+
"bottom-to-top",
|
|
27
|
+
"right-to-left",
|
|
28
|
+
])
|
|
29
|
+
|
|
30
|
+
export const explicitPinSideDefinition = z.object({
|
|
31
|
+
pins: z.array(z.number()),
|
|
32
|
+
direction: z.union([
|
|
33
|
+
z.literal("top-to-bottom"),
|
|
34
|
+
z.literal("left-to-right"),
|
|
35
|
+
z.literal("bottom-to-top"),
|
|
36
|
+
z.literal("right-to-left"),
|
|
37
|
+
]),
|
|
38
|
+
})
|
|
39
|
+
|
|
40
|
+
export type Footprint = string | ReactElement | AnySoupElementInput[]
|
|
41
|
+
export const pcbLayoutProps = z.object({
|
|
42
|
+
pcbX: distance,
|
|
43
|
+
pcbY: distance,
|
|
44
|
+
pcbRotation: rotation.optional(),
|
|
45
|
+
layer: layer_ref.optional(),
|
|
46
|
+
})
|
|
47
|
+
export const commonLayoutProps = z.object({
|
|
48
|
+
pcbX: distance.optional(),
|
|
49
|
+
pcbY: distance.optional(),
|
|
50
|
+
pcbRotation: rotation.optional(),
|
|
51
|
+
schX: distance.optional(),
|
|
52
|
+
schY: distance.optional(),
|
|
53
|
+
schRotation: rotation.optional(),
|
|
54
|
+
layer: layer_ref.optional(),
|
|
55
|
+
|
|
56
|
+
// TODO pull in literals from @tscircuit/footprint
|
|
57
|
+
// TODO footprint can be a string or react child
|
|
58
|
+
footprint: z.custom<Footprint>((v) => true).optional(),
|
|
59
|
+
})
|
|
60
|
+
export type CommonLayoutProps = z.input<typeof commonLayoutProps>
|
|
61
|
+
|
|
62
|
+
export const supplierProps = z.object({
|
|
63
|
+
supplierPartNumbers: z.record(supplier_name, z.array(z.string())).optional(),
|
|
64
|
+
})
|
|
65
|
+
export type SupplierProps = z.input<typeof supplierProps>
|
|
66
|
+
|
|
67
|
+
const point3 = z.object({
|
|
68
|
+
x: z.union([z.number(), z.string()]),
|
|
69
|
+
y: z.union([z.number(), z.string()]),
|
|
70
|
+
z: z.union([z.number(), z.string()]),
|
|
71
|
+
})
|
|
72
|
+
|
|
73
|
+
export const cadModelBase = z.object({
|
|
74
|
+
rotationOffset: z.number().or(point3).optional(),
|
|
75
|
+
positionOffset: point3.optional(),
|
|
76
|
+
size: point3.optional(),
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
export const cadModelStl = cadModelBase.extend({
|
|
80
|
+
stlUrl: z.string(),
|
|
81
|
+
})
|
|
82
|
+
|
|
83
|
+
export const cadModelObj = cadModelBase.extend({
|
|
84
|
+
objUrl: z.string(),
|
|
85
|
+
mtlUrl: z.string().optional(),
|
|
86
|
+
})
|
|
87
|
+
|
|
88
|
+
export const cadModelJscad = cadModelBase.extend({
|
|
89
|
+
jscad: z.any(),
|
|
90
|
+
})
|
|
91
|
+
|
|
92
|
+
export const commonComponentProps = commonLayoutProps
|
|
93
|
+
.merge(supplierProps)
|
|
94
|
+
.extend({
|
|
95
|
+
name: z.string(),
|
|
96
|
+
cadModel: z.union([cadModelStl, cadModelObj, cadModelJscad]).optional(),
|
|
97
|
+
children: z.any().optional(),
|
|
98
|
+
})
|
|
99
|
+
export type CommonComponentProps = z.input<typeof commonComponentProps>
|
|
100
|
+
|
|
101
|
+
export const lrPins = ["pin1", "left", "pin2", "right"] as const
|
|
102
|
+
export const lrPolarPins = [
|
|
103
|
+
"pin1",
|
|
104
|
+
"left",
|
|
105
|
+
"anode",
|
|
106
|
+
"pos",
|
|
107
|
+
"pin2",
|
|
108
|
+
"right",
|
|
109
|
+
"cathode",
|
|
110
|
+
"neg",
|
|
111
|
+
] as const
|
|
112
|
+
|
|
113
|
+
export const resistorProps = commonComponentProps.extend({
|
|
114
|
+
resistance,
|
|
115
|
+
})
|
|
116
|
+
export const resistorPins = lrPins
|
|
117
|
+
export type ResistorProps = z.input<typeof resistorProps>
|
|
118
|
+
|
|
119
|
+
export const capacitorProps = commonComponentProps.extend({
|
|
120
|
+
capacitance,
|
|
121
|
+
})
|
|
122
|
+
export const capacitorPins = lrPolarPins
|
|
123
|
+
export type CapacitorProps = z.input<typeof capacitorProps>
|
|
124
|
+
|
|
125
|
+
export const inductorProps = commonComponentProps.extend({
|
|
126
|
+
inductance,
|
|
127
|
+
})
|
|
128
|
+
export const inductorPins = lrPins
|
|
129
|
+
export type InductorProps = z.input<typeof inductorProps>
|
|
130
|
+
|
|
131
|
+
export const diodeProps = commonComponentProps.extend({})
|
|
132
|
+
export const diodePins = lrPolarPins
|
|
133
|
+
export type DiodeProps = z.input<typeof diodeProps>
|
|
134
|
+
|
|
135
|
+
export const ledProps = commonComponentProps.extend({
|
|
136
|
+
color: z.string().optional(),
|
|
137
|
+
})
|
|
138
|
+
export const ledPins = lrPolarPins
|
|
139
|
+
export type LedProps = z.input<typeof ledProps>
|
|
140
|
+
|
|
141
|
+
export const switchProps = commonComponentProps.extend({
|
|
142
|
+
ftype: z.literal("switch"),
|
|
143
|
+
switchType: z.enum(["spst"]).default("spst"),
|
|
144
|
+
isNormallyClosed: z.boolean().default(false),
|
|
145
|
+
})
|
|
146
|
+
export type SwitchProps = z.input<typeof switchProps>
|
|
147
|
+
|
|
148
|
+
export const boardProps = z.object({
|
|
149
|
+
width: distance,
|
|
150
|
+
height: distance,
|
|
151
|
+
pcbX: distance.optional().default(0),
|
|
152
|
+
pcbY: distance.optional().default(0),
|
|
153
|
+
layout: z.any().optional(),
|
|
154
|
+
routingDisabled: z.boolean().optional(),
|
|
155
|
+
children: z.any(),
|
|
156
|
+
})
|
|
157
|
+
export type BoardProps = z.input<typeof boardProps>
|
|
158
|
+
|
|
159
|
+
export const distanceOrMultiplier = distance.or(z.enum(["2x", "3x", "4x"]))
|
|
160
|
+
|
|
161
|
+
export const schematicPortArrangement = z
|
|
162
|
+
.object({
|
|
163
|
+
leftSize: z.number().optional(),
|
|
164
|
+
topSize: z.number().optional(),
|
|
165
|
+
rightSize: z.number().optional(),
|
|
166
|
+
bottomSize: z.number().optional(),
|
|
167
|
+
})
|
|
168
|
+
.or(
|
|
169
|
+
z.object({
|
|
170
|
+
leftSide: explicitPinSideDefinition.optional(),
|
|
171
|
+
rightSide: explicitPinSideDefinition.optional(),
|
|
172
|
+
topSide: explicitPinSideDefinition.optional(),
|
|
173
|
+
bottomSide: explicitPinSideDefinition.optional(),
|
|
174
|
+
}),
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
export const chipProps = commonComponentProps.extend({
|
|
178
|
+
manufacturerPartNumber: z.string().optional(),
|
|
179
|
+
pinLabels: z.record(z.number(), z.string()).optional(),
|
|
180
|
+
schPortArrangement: schematicPortArrangement.optional(),
|
|
181
|
+
schPinSpacing: distanceOrMultiplier
|
|
182
|
+
.or(z.literal("auto"))
|
|
183
|
+
.optional()
|
|
184
|
+
.default("auto"),
|
|
185
|
+
schWidth: distanceOrMultiplier
|
|
186
|
+
.or(z.literal("auto"))
|
|
187
|
+
.optional()
|
|
188
|
+
.default("auto"),
|
|
189
|
+
})
|
|
190
|
+
/**
|
|
191
|
+
* @deprecated Use ChipProps instead.
|
|
192
|
+
*/
|
|
193
|
+
export const bugProps = chipProps
|
|
194
|
+
export type ChipProps = z.input<typeof chipProps>
|
|
195
|
+
|
|
196
|
+
export const viaProps = commonLayoutProps.extend({
|
|
197
|
+
fromLayer: layer_ref,
|
|
198
|
+
toLayer: layer_ref,
|
|
199
|
+
holeDiameter: distance,
|
|
200
|
+
outerDiameter: distance,
|
|
201
|
+
})
|
|
202
|
+
export type ViaProps = z.input<typeof viaProps>
|
|
203
|
+
|
|
204
|
+
export const netAliasProps = commonLayoutProps.extend({
|
|
205
|
+
net: z.string().optional(),
|
|
206
|
+
})
|
|
207
|
+
export type NetAliasProps = z.input<typeof netAliasProps>
|
|
208
|
+
|
|
209
|
+
export const portRef = z.union([
|
|
210
|
+
z.string(),
|
|
211
|
+
z.object({ getPortSelector: z.function(z.tuple([]), z.string()) }),
|
|
212
|
+
])
|
|
213
|
+
|
|
214
|
+
export const traceProps = z
|
|
215
|
+
.object({
|
|
216
|
+
path: z.array(portRef),
|
|
217
|
+
thickness: distance.optional(),
|
|
218
|
+
schematicRouteHints: z.array(point).optional(),
|
|
219
|
+
pcbRouteHints: z.array(route_hint_point).optional(),
|
|
220
|
+
})
|
|
221
|
+
.or(
|
|
222
|
+
z.object({
|
|
223
|
+
from: portRef,
|
|
224
|
+
to: portRef,
|
|
225
|
+
thickness: distance.optional(),
|
|
226
|
+
schematicRouteHints: z.array(point).optional(),
|
|
227
|
+
pcbRouteHints: z.array(route_hint_point).optional(),
|
|
228
|
+
}),
|
|
229
|
+
)
|
|
230
|
+
export type TraceProps = z.input<typeof traceProps>
|
|
231
|
+
|
|
232
|
+
export const smtPadProps = z.union([
|
|
233
|
+
pcbLayoutProps.omit({ pcbRotation: true }).extend({
|
|
234
|
+
shape: z.literal("circle"),
|
|
235
|
+
radius: distance.optional(),
|
|
236
|
+
portHints: portHints.optional(),
|
|
237
|
+
}),
|
|
238
|
+
pcbLayoutProps.omit({ pcbRotation: true }).extend({
|
|
239
|
+
shape: z.literal("rect"),
|
|
240
|
+
width: distance.optional(),
|
|
241
|
+
height: distance.optional(),
|
|
242
|
+
portHints: portHints.optional(),
|
|
243
|
+
}),
|
|
244
|
+
])
|
|
245
|
+
export type SmtPadProps = z.input<typeof smtPadProps>
|
|
246
|
+
|
|
247
|
+
export const platedHoleProps = z.union([
|
|
248
|
+
pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
|
|
249
|
+
shape: z.literal("circle"),
|
|
250
|
+
holeDiameter: distance,
|
|
251
|
+
outerDiameter: distance,
|
|
252
|
+
portHints: portHints.optional(),
|
|
253
|
+
}),
|
|
254
|
+
pcbLayoutProps.omit({ pcbRotation: true, layer: true }).extend({
|
|
255
|
+
shape: z.literal("oval"),
|
|
256
|
+
outerWidth: distance,
|
|
257
|
+
outerHeight: distance,
|
|
258
|
+
innerWidth: distance,
|
|
259
|
+
innerHeight: distance,
|
|
260
|
+
portHints: portHints.optional(),
|
|
261
|
+
}),
|
|
262
|
+
])
|
|
263
|
+
export type PlatedHoleProps = z.input<typeof platedHoleProps>
|
|
264
|
+
|
|
265
|
+
export const holeProps = pcbLayoutProps.omit({ pcbRotation: true }).extend({
|
|
266
|
+
holeDiameter: distance,
|
|
267
|
+
})
|
|
268
|
+
export type HoleProps = z.input<typeof holeProps>
|
|
269
|
+
|
|
270
|
+
export const schematicBoxProps = z.object({
|
|
271
|
+
schX: distance,
|
|
272
|
+
schY: distance,
|
|
273
|
+
width: distance,
|
|
274
|
+
height: distance,
|
|
275
|
+
})
|
|
276
|
+
export type SchematicBoxProps = z.input<typeof schematicBoxProps>
|
|
277
|
+
|
|
278
|
+
export const schematicTextProps = z.object({
|
|
279
|
+
schX: distance,
|
|
280
|
+
schY: distance,
|
|
281
|
+
text: z.string(),
|
|
282
|
+
})
|
|
283
|
+
export type SchematicTextProps = z.input<typeof schematicTextProps>
|
|
284
|
+
|
|
285
|
+
export const schematicLineProps = z.object({
|
|
286
|
+
x1: distance,
|
|
287
|
+
y1: distance,
|
|
288
|
+
x2: distance,
|
|
289
|
+
y2: distance,
|
|
290
|
+
})
|
|
291
|
+
export type SchematicLineProps = z.input<typeof schematicLineProps>
|
|
292
|
+
|
|
293
|
+
export const schematicPathProps = z.object({
|
|
294
|
+
points: z.array(point),
|
|
295
|
+
isFilled: z.boolean().optional().default(false),
|
|
296
|
+
fillColor: z.enum(["red", "blue"]).optional(),
|
|
297
|
+
})
|
|
298
|
+
export type SchematicPathProps = z.input<typeof schematicPathProps>
|
|
299
|
+
|
|
300
|
+
export const constraintProps = z.union([
|
|
301
|
+
z.object({
|
|
302
|
+
type: z.literal("xdist"),
|
|
303
|
+
dist: distance,
|
|
304
|
+
left: z.string(),
|
|
305
|
+
right: z.string(),
|
|
306
|
+
}),
|
|
307
|
+
z.object({
|
|
308
|
+
type: z.literal("ydist"),
|
|
309
|
+
dist: distance,
|
|
310
|
+
top: z.string(),
|
|
311
|
+
bottom: z.string(),
|
|
312
|
+
}),
|
|
313
|
+
])
|
|
314
|
+
export type ConstraintProps = z.input<typeof constraintProps>
|
|
315
|
+
|
|
316
|
+
export const constrainedLayoutProps = z.object({})
|
|
317
|
+
export type ConstrainedLayoutProps = z.input<typeof constrainedLayoutProps>
|
|
318
|
+
|
|
319
|
+
export const footprintProps = z.object({})
|
|
320
|
+
export type FootprintProps = z.input<typeof footprintProps>
|
|
321
|
+
|
|
322
|
+
export const componentProps = commonComponentProps
|
|
323
|
+
export type ComponentProps = z.input<typeof componentProps>
|
|
324
|
+
|
|
325
|
+
export const groupProps = commonLayoutProps.extend({
|
|
326
|
+
name: z.string().optional(),
|
|
327
|
+
layout: z.custom<LayoutBuilder>((v) => true).optional(),
|
|
328
|
+
children: z.any().optional(),
|
|
329
|
+
routingDisabled: z.boolean().optional(),
|
|
330
|
+
})
|
|
331
|
+
export type GroupProps = z.input<typeof groupProps>
|
|
332
|
+
|
|
333
|
+
export const powerSourceProps = commonComponentProps.extend({
|
|
334
|
+
voltage,
|
|
335
|
+
})
|
|
336
|
+
export type PowerSourceProps = z.input<typeof powerSourceProps>
|
|
337
|
+
|
|
338
|
+
export const portProps = commonLayoutProps.extend({
|
|
339
|
+
name: z.string(),
|
|
340
|
+
pinNumber: z.number().optional(),
|
|
341
|
+
aliases: z.array(z.string()).optional(),
|
|
342
|
+
direction: direction,
|
|
343
|
+
})
|
|
344
|
+
export type PortProps = z.input<typeof portProps>
|
|
345
|
+
|
|
346
|
+
export const silkscreenTextProps = pcbLayoutProps.extend({
|
|
347
|
+
text: z.string(),
|
|
348
|
+
anchorAlignment: z
|
|
349
|
+
.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"])
|
|
350
|
+
.default("center"),
|
|
351
|
+
font: z.enum(["tscircuit2024"]).optional(),
|
|
352
|
+
fontSize: length.optional(),
|
|
353
|
+
})
|
|
354
|
+
export type SilkscreenTextProps = z.input<typeof silkscreenTextProps>
|
|
355
|
+
|
|
356
|
+
export const silkscreenPathProps = pcbLayoutProps
|
|
357
|
+
.omit({ pcbX: true, pcbY: true, pcbRotation: true })
|
|
358
|
+
.extend({
|
|
359
|
+
route: z.array(route_hint_point),
|
|
360
|
+
strokeWidth: length.optional(),
|
|
361
|
+
})
|
|
362
|
+
export type SilkscreenPathProps = z.input<typeof silkscreenPathProps>
|
|
363
|
+
|
|
364
|
+
export const silkscreenLineProps = pcbLayoutProps
|
|
365
|
+
.omit({ pcbX: true, pcbY: true, pcbRotation: true })
|
|
366
|
+
.extend({
|
|
367
|
+
strokeWidth: distance,
|
|
368
|
+
x1: distance,
|
|
369
|
+
y1: distance,
|
|
370
|
+
x2: distance,
|
|
371
|
+
y2: distance,
|
|
372
|
+
})
|
|
373
|
+
export type SilkscreenLineProps = z.input<typeof silkscreenLineProps>
|
|
374
|
+
|
|
375
|
+
export const silkscreenRectProps = pcbLayoutProps
|
|
376
|
+
.omit({ pcbRotation: true })
|
|
377
|
+
.extend({
|
|
378
|
+
isFilled: z.boolean().optional(),
|
|
379
|
+
isOutline: z.boolean().optional(),
|
|
380
|
+
strokeWidth: distance.optional(),
|
|
381
|
+
width: distance,
|
|
382
|
+
height: distance,
|
|
383
|
+
})
|
|
384
|
+
export type SilkscreenRectProps = z.input<typeof silkscreenRectProps>
|
|
385
|
+
|
|
386
|
+
export const silkscreenCircleProps = pcbLayoutProps
|
|
387
|
+
.omit({ pcbRotation: true })
|
|
388
|
+
.extend({
|
|
389
|
+
isFilled: z.boolean().optional(),
|
|
390
|
+
isOutline: z.boolean().optional(),
|
|
391
|
+
strokeWidth: distance.optional(),
|
|
392
|
+
radius: distance,
|
|
393
|
+
})
|
|
394
|
+
export type SilkscreenCircleProps = z.input<typeof silkscreenCircleProps>
|
|
395
|
+
|
|
396
|
+
export const traceHintProps = z.object({
|
|
397
|
+
for: z.string(),
|
|
398
|
+
order: z.number().optional(),
|
|
399
|
+
offset: route_hint_point.optional(),
|
|
400
|
+
offsets: z.array(route_hint_point).optional(),
|
|
401
|
+
traceWidth: z.number().optional(),
|
|
402
|
+
})
|
|
403
|
+
|
|
404
|
+
export type TraceHintProps = z.input<typeof traceHintProps>
|
|
405
|
+
|
|
406
|
+
export const pcbTraceProps = z.object({
|
|
407
|
+
layer: z.string().optional(),
|
|
408
|
+
thickness: distance.optional(),
|
|
409
|
+
route: z.array(route_hint_point),
|
|
410
|
+
})
|
|
411
|
+
export type PcbTraceProps = z.input<typeof pcbTraceProps>
|
|
412
|
+
|
|
413
|
+
export const fabricationNoteTextProps = pcbLayoutProps.extend({
|
|
414
|
+
text: z.string(),
|
|
415
|
+
anchorAlignment: z
|
|
416
|
+
.enum(["center", "top_left", "top_right", "bottom_left", "bottom_right"])
|
|
417
|
+
.default("center"),
|
|
418
|
+
font: z.enum(["tscircuit2024"]).optional(),
|
|
419
|
+
fontSize: length.optional(),
|
|
420
|
+
})
|
|
421
|
+
export type FabricationNoteTextProps = z.input<typeof fabricationNoteTextProps>
|
|
422
|
+
|
|
423
|
+
export const fabricationNotePathProps = pcbLayoutProps
|
|
424
|
+
.omit({ pcbX: true, pcbY: true, pcbRotation: true })
|
|
425
|
+
.extend({
|
|
426
|
+
route: z.array(route_hint_point),
|
|
427
|
+
strokeWidth: length.optional(),
|
|
428
|
+
})
|
|
429
|
+
export type FabricationNotePathProps = z.input<typeof fabricationNotePathProps>
|
package/package.json
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tscircuit/props",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.35",
|
|
4
4
|
"description": "Props for tscircuit builtin component types",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
|
+
"types": "./lib/index.ts",
|
|
6
7
|
"scripts": {
|
|
7
|
-
"build": "tsup lib/index.ts --
|
|
8
|
+
"build": "tsup lib/index.ts --sourcemap",
|
|
8
9
|
"format": "biome format . --write",
|
|
9
10
|
"format:check": "biome format ."
|
|
10
11
|
},
|
|
11
12
|
"keywords": [],
|
|
12
13
|
"files": [
|
|
13
|
-
"dist"
|
|
14
|
+
"dist",
|
|
15
|
+
"lib"
|
|
14
16
|
],
|
|
15
17
|
"author": "",
|
|
16
18
|
"license": "ISC",
|