@vessel-dsp/core 0.6.0 → 0.6.2

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.
Files changed (238) hide show
  1. package/dist/editor/commands.d.ts +48 -0
  2. package/dist/editor/commands.d.ts.map +1 -0
  3. package/{src/editor/commands.ts → dist/editor/commands.js} +44 -91
  4. package/dist/editor/commands.js.map +1 -0
  5. package/dist/editor/factory.d.ts +10 -0
  6. package/dist/editor/factory.d.ts.map +1 -0
  7. package/{src/editor/factory.ts → dist/editor/factory.js} +11 -27
  8. package/dist/editor/factory.js.map +1 -0
  9. package/dist/editor/history.d.ts +29 -0
  10. package/dist/editor/history.d.ts.map +1 -0
  11. package/{src/editor/history.ts → dist/editor/history.js} +12 -42
  12. package/dist/editor/history.js.map +1 -0
  13. package/{src/editor/index.ts → dist/editor/index.d.ts} +1 -3
  14. package/dist/editor/index.d.ts.map +1 -0
  15. package/dist/editor/index.js +5 -0
  16. package/dist/editor/index.js.map +1 -0
  17. package/dist/editor/layout.d.ts +8 -0
  18. package/dist/editor/layout.d.ts.map +1 -0
  19. package/{src/editor/layout.ts → dist/editor/layout.js} +36 -90
  20. package/dist/editor/layout.js.map +1 -0
  21. package/dist/formats/circuit-json/serializer.d.ts +101 -0
  22. package/dist/formats/circuit-json/serializer.d.ts.map +1 -0
  23. package/{src/formats/circuit-json/serializer.ts → dist/formats/circuit-json/serializer.js} +352 -418
  24. package/dist/formats/circuit-json/serializer.js.map +1 -0
  25. package/dist/formats/document.d.ts +64 -0
  26. package/dist/formats/document.d.ts.map +1 -0
  27. package/{src/formats/document.ts → dist/formats/document.js} +43 -159
  28. package/dist/formats/document.js.map +1 -0
  29. package/dist/formats/interchange/parser.d.ts +3 -0
  30. package/dist/formats/interchange/parser.d.ts.map +1 -0
  31. package/{src/formats/interchange/parser.ts → dist/formats/interchange/parser.js} +157 -463
  32. package/dist/formats/interchange/parser.js.map +1 -0
  33. package/dist/formats/interchange/serializer.d.ts +9 -0
  34. package/dist/formats/interchange/serializer.d.ts.map +1 -0
  35. package/{src/formats/interchange/serializer.ts → dist/formats/interchange/serializer.js} +84 -186
  36. package/dist/formats/interchange/serializer.js.map +1 -0
  37. package/dist/formats/ltspice/catalog.d.ts +19 -0
  38. package/dist/formats/ltspice/catalog.d.ts.map +1 -0
  39. package/{src/formats/ltspice/catalog.ts → dist/formats/ltspice/catalog.js} +18 -52
  40. package/dist/formats/ltspice/catalog.js.map +1 -0
  41. package/dist/formats/ltspice/encoding.d.ts +2 -0
  42. package/dist/formats/ltspice/encoding.d.ts.map +1 -0
  43. package/{src/formats/ltspice/encoding.ts → dist/formats/ltspice/encoding.js} +17 -41
  44. package/dist/formats/ltspice/encoding.js.map +1 -0
  45. package/dist/formats/ltspice/parser.d.ts +3 -0
  46. package/dist/formats/ltspice/parser.d.ts.map +1 -0
  47. package/{src/formats/ltspice/parser.ts → dist/formats/ltspice/parser.js} +39 -141
  48. package/dist/formats/ltspice/parser.js.map +1 -0
  49. package/dist/formats/ltspice/serializer.d.ts +7 -0
  50. package/dist/formats/ltspice/serializer.d.ts.map +1 -0
  51. package/{src/formats/ltspice/serializer.ts → dist/formats/ltspice/serializer.js} +18 -45
  52. package/dist/formats/ltspice/serializer.js.map +1 -0
  53. package/dist/formats/schx/catalog.d.ts +19 -0
  54. package/dist/formats/schx/catalog.d.ts.map +1 -0
  55. package/{src/formats/schx/catalog.ts → dist/formats/schx/catalog.js} +48 -101
  56. package/dist/formats/schx/catalog.js.map +1 -0
  57. package/dist/formats/schx/parser.d.ts +3 -0
  58. package/dist/formats/schx/parser.d.ts.map +1 -0
  59. package/{src/formats/schx/parser.ts → dist/formats/schx/parser.js} +31 -86
  60. package/dist/formats/schx/parser.js.map +1 -0
  61. package/dist/formats/schx/runtime-descriptors.d.ts +3 -0
  62. package/dist/formats/schx/runtime-descriptors.d.ts.map +1 -0
  63. package/{src/formats/schx/runtime-descriptors.ts → dist/formats/schx/runtime-descriptors.js} +36 -123
  64. package/dist/formats/schx/runtime-descriptors.js.map +1 -0
  65. package/dist/formats/schx/serializer.d.ts +5 -0
  66. package/dist/formats/schx/serializer.d.ts.map +1 -0
  67. package/{src/formats/schx/serializer.ts → dist/formats/schx/serializer.js} +17 -42
  68. package/dist/formats/schx/serializer.js.map +1 -0
  69. package/dist/formats/schx/transforms.d.ts +4 -0
  70. package/dist/formats/schx/transforms.d.ts.map +1 -0
  71. package/{src/formats/schx/transforms.ts → dist/formats/schx/transforms.js} +6 -10
  72. package/dist/formats/schx/transforms.js.map +1 -0
  73. package/dist/formats/spice/parser.d.ts +3 -0
  74. package/dist/formats/spice/parser.d.ts.map +1 -0
  75. package/{src/formats/spice/parser.ts → dist/formats/spice/parser.js} +50 -96
  76. package/dist/formats/spice/parser.js.map +1 -0
  77. package/dist/formats/spice/serializer.d.ts +3 -0
  78. package/dist/formats/spice/serializer.d.ts.map +1 -0
  79. package/{src/formats/spice/serializer.ts → dist/formats/spice/serializer.js} +20 -16
  80. package/dist/formats/spice/serializer.js.map +1 -0
  81. package/dist/index.d.ts +47 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +32 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/model/connectivity.d.ts +16 -0
  86. package/dist/model/connectivity.d.ts.map +1 -0
  87. package/{src/model/connectivity.ts → dist/model/connectivity.js} +28 -63
  88. package/dist/model/connectivity.js.map +1 -0
  89. package/dist/model/netlist.d.ts +24 -0
  90. package/dist/model/netlist.d.ts.map +1 -0
  91. package/{src/model/netlist.ts → dist/model/netlist.js} +42 -110
  92. package/dist/model/netlist.js.map +1 -0
  93. package/dist/model/properties.d.ts +9 -0
  94. package/dist/model/properties.d.ts.map +1 -0
  95. package/{src/model/properties.ts → dist/model/properties.js} +10 -18
  96. package/dist/model/properties.js.map +1 -0
  97. package/dist/model/quantity.d.ts +3 -0
  98. package/dist/model/quantity.d.ts.map +1 -0
  99. package/{src/model/quantity.ts → dist/model/quantity.js} +7 -30
  100. package/dist/model/quantity.js.map +1 -0
  101. package/{src/model/types.ts → dist/model/types.d.ts} +17 -196
  102. package/dist/model/types.d.ts.map +1 -0
  103. package/dist/model/types.js +10 -0
  104. package/dist/model/types.js.map +1 -0
  105. package/dist/model/validation.d.ts +32 -0
  106. package/dist/model/validation.d.ts.map +1 -0
  107. package/{src/model/validation.ts → dist/model/validation.js} +172 -653
  108. package/dist/model/validation.js.map +1 -0
  109. package/dist/model/wires.d.ts +3 -0
  110. package/dist/model/wires.d.ts.map +1 -0
  111. package/{src/model/wires.ts → dist/model/wires.js} +10 -16
  112. package/dist/model/wires.js.map +1 -0
  113. package/dist/panel/extract.d.ts +5 -0
  114. package/dist/panel/extract.d.ts.map +1 -0
  115. package/{src/panel/extract.ts → dist/panel/extract.js} +146 -235
  116. package/dist/panel/extract.js.map +1 -0
  117. package/dist/panel/index.d.ts +6 -0
  118. package/dist/panel/index.d.ts.map +1 -0
  119. package/dist/panel/index.js +5 -0
  120. package/dist/panel/index.js.map +1 -0
  121. package/dist/panel/knobs.d.ts +7 -0
  122. package/dist/panel/knobs.d.ts.map +1 -0
  123. package/{src/panel/knobs.ts → dist/panel/knobs.js} +7 -18
  124. package/dist/panel/knobs.js.map +1 -0
  125. package/dist/panel/protocol.d.ts +9 -0
  126. package/dist/panel/protocol.d.ts.map +1 -0
  127. package/{src/panel/protocol.ts → dist/panel/protocol.js} +10 -26
  128. package/dist/panel/protocol.js.map +1 -0
  129. package/{src/panel/types.ts → dist/panel/types.d.ts} +50 -89
  130. package/dist/panel/types.d.ts.map +1 -0
  131. package/dist/panel/types.js +2 -0
  132. package/dist/panel/types.js.map +1 -0
  133. package/dist/preview/bounds.d.ts +12 -0
  134. package/dist/preview/bounds.d.ts.map +1 -0
  135. package/{src/preview/bounds.ts → dist/preview/bounds.js} +15 -29
  136. package/dist/preview/bounds.js.map +1 -0
  137. package/dist/preview/box-layout.d.ts +4 -0
  138. package/dist/preview/box-layout.d.ts.map +1 -0
  139. package/{src/preview/box-layout.ts → dist/preview/box-layout.js} +2 -6
  140. package/dist/preview/box-layout.js.map +1 -0
  141. package/dist/preview/colors.d.ts +3 -0
  142. package/dist/preview/colors.d.ts.map +1 -0
  143. package/{src/preview/colors.ts → dist/preview/colors.js} +3 -5
  144. package/dist/preview/colors.js.map +1 -0
  145. package/dist/preview/hanging.d.ts +8 -0
  146. package/dist/preview/hanging.d.ts.map +1 -0
  147. package/{src/preview/hanging.ts → dist/preview/hanging.js} +9 -28
  148. package/dist/preview/hanging.js.map +1 -0
  149. package/dist/preview/junctions.d.ts +3 -0
  150. package/dist/preview/junctions.d.ts.map +1 -0
  151. package/{src/preview/junctions.ts → dist/preview/junctions.js} +9 -24
  152. package/dist/preview/junctions.js.map +1 -0
  153. package/dist/preview/label-layout.d.ts +12 -0
  154. package/dist/preview/label-layout.d.ts.map +1 -0
  155. package/{src/preview/label-layout.ts → dist/preview/label-layout.js} +15 -36
  156. package/dist/preview/label-layout.js.map +1 -0
  157. package/dist/preview/ports.d.ts +17 -0
  158. package/dist/preview/ports.d.ts.map +1 -0
  159. package/{src/preview/ports.ts → dist/preview/ports.js} +10 -37
  160. package/dist/preview/ports.js.map +1 -0
  161. package/dist/preview/renderable-wires.d.ts +3 -0
  162. package/dist/preview/renderable-wires.d.ts.map +1 -0
  163. package/{src/preview/renderable-wires.ts → dist/preview/renderable-wires.js} +12 -29
  164. package/dist/preview/renderable-wires.js.map +1 -0
  165. package/dist/preview/routing.d.ts +4 -0
  166. package/dist/preview/routing.d.ts.map +1 -0
  167. package/dist/preview/routing.js +13 -0
  168. package/dist/preview/routing.js.map +1 -0
  169. package/dist/preview/snap.d.ts +9 -0
  170. package/dist/preview/snap.d.ts.map +1 -0
  171. package/{src/preview/snap.ts → dist/preview/snap.js} +9 -31
  172. package/dist/preview/snap.js.map +1 -0
  173. package/dist/preview/symbols/svg-content.d.ts +7 -0
  174. package/dist/preview/symbols/svg-content.d.ts.map +1 -0
  175. package/{src/preview/symbols/svg-content.ts → dist/preview/symbols/svg-content.js} +3 -6
  176. package/dist/preview/symbols/svg-content.js.map +1 -0
  177. package/dist/preview/symbols.d.ts +7 -0
  178. package/dist/preview/symbols.d.ts.map +1 -0
  179. package/{src/preview/symbols.ts → dist/preview/symbols.js} +18 -43
  180. package/dist/preview/symbols.js.map +1 -0
  181. package/dist/preview/wire-chains.d.ts +4 -0
  182. package/dist/preview/wire-chains.d.ts.map +1 -0
  183. package/{src/preview/wire-chains.ts → dist/preview/wire-chains.js} +37 -37
  184. package/dist/preview/wire-chains.js.map +1 -0
  185. package/package.json +3 -3
  186. package/src/index.ts +0 -255
  187. package/src/panel/index.ts +0 -39
  188. package/src/preview/routing.ts +0 -15
  189. package/src/preview/symbols/analog-switch.svg +0 -17
  190. package/src/preview/symbols/battery.svg +0 -16
  191. package/src/preview/symbols/bbd.svg +0 -21
  192. package/src/preview/symbols/bjt-npn.svg +0 -16
  193. package/src/preview/symbols/bjt-pnp.svg +0 -17
  194. package/src/preview/symbols/capacitor-electrolytic.svg +0 -13
  195. package/src/preview/symbols/capacitor.svg +0 -12
  196. package/src/preview/symbols/current-source.svg +0 -14
  197. package/src/preview/symbols/delay-ic.svg +0 -22
  198. package/src/preview/symbols/diode-schottky.svg +0 -12
  199. package/src/preview/symbols/diode-zener.svg +0 -12
  200. package/src/preview/symbols/diode.svg +0 -13
  201. package/src/preview/symbols/flipflop.svg +0 -20
  202. package/src/preview/symbols/ground.svg +0 -12
  203. package/src/preview/symbols/ic-block.svg +0 -20
  204. package/src/preview/symbols/ic.svg +0 -19
  205. package/src/preview/symbols/inductor.svg +0 -11
  206. package/src/preview/symbols/jack-input.svg +0 -16
  207. package/src/preview/symbols/jack-output.svg +0 -16
  208. package/src/preview/symbols/jfet-junction-n.svg +0 -17
  209. package/src/preview/symbols/jfet-n.svg +0 -17
  210. package/src/preview/symbols/jfet-p.svg +0 -17
  211. package/src/preview/symbols/label.svg +0 -8
  212. package/src/preview/symbols/led.svg +0 -18
  213. package/src/preview/symbols/mosfet-n.svg +0 -21
  214. package/src/preview/symbols/mosfet-p.svg +0 -21
  215. package/src/preview/symbols/named-wire.svg +0 -11
  216. package/src/preview/symbols/opamp.svg +0 -21
  217. package/src/preview/symbols/optocoupler.svg +0 -30
  218. package/src/preview/symbols/ota.svg +0 -20
  219. package/src/preview/symbols/pentode.svg +0 -25
  220. package/src/preview/symbols/photoresistor.svg +0 -19
  221. package/src/preview/symbols/port.svg +0 -8
  222. package/src/preview/symbols/potentiometer.svg +0 -15
  223. package/src/preview/symbols/power-amp.svg +0 -20
  224. package/src/preview/symbols/rail.svg +0 -11
  225. package/src/preview/symbols/regulator.svg +0 -13
  226. package/src/preview/symbols/relay.svg +0 -20
  227. package/src/preview/symbols/resistor.svg +0 -11
  228. package/src/preview/symbols/switch-3pdt.svg +0 -32
  229. package/src/preview/symbols/switch-rotary.svg +0 -23
  230. package/src/preview/symbols/switch-spdt.svg +0 -16
  231. package/src/preview/symbols/switch-spst.svg +0 -14
  232. package/src/preview/symbols/switch-toggle.svg +0 -14
  233. package/src/preview/symbols/transformer.svg +0 -17
  234. package/src/preview/symbols/triode.svg +0 -17
  235. package/src/preview/symbols/tube-diode.svg +0 -13
  236. package/src/preview/symbols/unsupported.svg +0 -8
  237. package/src/preview/symbols/variable-resistor.svg +0 -13
  238. package/src/preview/symbols/voltage-source.svg +0 -15
package/src/index.ts DELETED
@@ -1,255 +0,0 @@
1
- export const VERSION = '0.6.0';
2
-
3
- export type {
4
- BoardApplicability,
5
- BoardEdgeTerminal,
6
- BoardFamily,
7
- BoardFootprint,
8
- BoardFootprintCatalog,
9
- BoardFootprintPlacement,
10
- BoardHole,
11
- BoardKind,
12
- BoardNet,
13
- BoardNetlist,
14
- BoardNetMember,
15
- BoardNetRef,
16
- BoardPlacedPad,
17
- BoardRealization,
18
- BoardReview,
19
- BoardRoute,
20
- BoardSourceCircuitHash,
21
- BoardSubtype,
22
- BuildBom,
23
- BuildBomItem,
24
- BuildBomRef,
25
- BuildBomRefKind,
26
- BuildCompleteness,
27
- BuildIntent,
28
- BuildPartProfile,
29
- BuildPartProfileCatalog,
30
- BuildScope,
31
- CanonicalCircuitNetRef,
32
- CircuitDocument,
33
- CircuitDocumentDevice,
34
- CircuitDocumentDeviceKind,
35
- Component,
36
- ComponentKind,
37
- ComponentTerminalRef,
38
- ControlApplicabilityPredicate,
39
- ControlContext,
40
- ControlGroup,
41
- ControlInterface,
42
- ControlInterfaceAssignmentHint,
43
- ControlInterfaceBinding,
44
- ControlInterfaceConnector,
45
- ControlInterfacePolarity,
46
- ControlInterfaceRole,
47
- ControlOutput,
48
- ControlOutputSwitchMode,
49
- DeviceInterface,
50
- DeviceInterfaceBinding,
51
- DeviceInterfaceControl,
52
- DeviceInterfaceControlKind,
53
- DocumentMetadata,
54
- DocumentSource,
55
- MechanicalBuildMetadata,
56
- MillimeterRect,
57
- OffBoardSignalRef,
58
- OffBoardWireAttributes,
59
- OffBoardWiringConnection,
60
- OffBoardWiringCoverage,
61
- OffBoardWiringEndpoint,
62
- OffBoardWiringEndpointKind,
63
- OffBoardWiringHarness,
64
- OffBoardWiringHarnessStatus,
65
- OffBoardWiringPlan,
66
- PanelColumnOrder,
67
- PanelControlKind,
68
- PanelControlPlacement,
69
- PanelElementBinding,
70
- PanelElementPhysicalPlacement,
71
- PanelElementPlacement,
72
- PanelFace,
73
- PanelFaceGeometry,
74
- PanelGridIndexing,
75
- PanelGridLayout,
76
- PanelGridPosition,
77
- PanelPlacementMetadata,
78
- PanelRowOrder,
79
- ParsedQuantity,
80
- Point,
81
- PropertyObject,
82
- PropertyValue,
83
- Rotation,
84
- Terminal,
85
- VdspBuildDataObject,
86
- VdspBuildDataScalar,
87
- VdspBuildDataValue,
88
- Warning,
89
- Wire,
90
- } from './model/types';
91
- export { EMPTY_DOCUMENT } from './model/types';
92
- export {
93
- isParsedQuantity,
94
- isPropertyObject,
95
- propertyBooleanValue,
96
- propertyNumericValue,
97
- propertyQuantityValue,
98
- propertyStringValue,
99
- propertyValueForSourceAttribute,
100
- } from './model/properties';
101
-
102
- export { parseQuantity } from './model/quantity';
103
-
104
- export type { Connectivity, NodeId, PinRef } from './model/connectivity';
105
- export { getPinNode, pinKey, resolveConnectivity } from './model/connectivity';
106
-
107
- export type { NetlistComponent, NetlistView, SpiceLetter } from './model/netlist';
108
- export { getSpiceLetter, getSpiceNodeOrder, kindForSpiceLetter, toNetlistView } from './model/netlist';
109
-
110
- export type {
111
- PropertyRule,
112
- QuantityRule,
113
- StringRule,
114
- ValidationCode,
115
- ValidationIssue,
116
- ValidationSeverity,
117
- } from './model/validation';
118
- export { getRulesForKind, hasErrors, validateComponent, validateDocument } from './model/validation';
119
-
120
- export { parseSchx } from './formats/schx/parser';
121
- export { serializeSchx } from './formats/schx/serializer';
122
- export { parseSpiceNetlist } from './formats/spice/parser';
123
- export { serializeSpiceNetlist } from './formats/spice/serializer';
124
- export type { InterchangeSourceFormat, SerializeInterchangeYamlOptions } from './formats/interchange/serializer';
125
- export { parseInterchangeYaml } from './formats/interchange/parser';
126
- export { serializeInterchangeYaml } from './formats/interchange/serializer';
127
- export type {
128
- CircuitFormat,
129
- CircuitDocumentFileFormat,
130
- ParseCircuitDocumentOptions,
131
- ParseCircuitDocumentFileOptions,
132
- SerializeCircuitDocumentFileOptions,
133
- SerializeVdspCircuitDocumentOptions,
134
- ConvertCircuitDocumentFileOptions,
135
- ConvertCircuitDocumentFileWithReportOptions,
136
- CircuitDocumentConversionDiagnostic,
137
- CircuitDocumentConversionLossPolicy,
138
- CircuitDocumentFileConversionReport,
139
- VdspSchemaValidationIssue,
140
- VdspSchemaValidationResult,
141
- } from './formats/document';
142
- export {
143
- detectCircuitFormat,
144
- parseCircuitDocument,
145
- vdspFileExtension,
146
- isVdspFilename,
147
- detectCircuitDocumentFileFormat,
148
- vdspFilenameFromName,
149
- parseVdspCircuitDocument,
150
- validateVdspCircuitDocumentSchema,
151
- parseCircuitDocumentFile,
152
- serializeCircuitDocumentFile,
153
- convertCircuitDocumentFile,
154
- convertCircuitDocumentFileWithReport,
155
- serializeVdspCircuitDocument,
156
- } from './formats/document';
157
- export { parseLtspiceAsc } from './formats/ltspice/parser';
158
- export type { SerializeLtspiceAscOptions } from './formats/ltspice/serializer';
159
- export { serializeLtspiceAsc } from './formats/ltspice/serializer';
160
-
161
- export type {
162
- AnyCircuitElement,
163
- AnyCircuitElementInput,
164
- CircuitJson,
165
- CircuitJsonElement,
166
- CircuitJsonExport,
167
- CircuitJsonExportOptions,
168
- CircuitJsonExportTarget,
169
- CircuitJsonSchemaValidationIssue,
170
- CircuitJsonSchemaValidationResult,
171
- ParseCircuitJsonDocumentOptions,
172
- CircuitJsonSourceComponent,
173
- CircuitJsonSourceNet,
174
- CircuitJsonSourcePort,
175
- CircuitJsonSourceTrace,
176
- } from './formats/circuit-json/serializer';
177
- export {
178
- parseCircuitJsonDocument,
179
- serializeCircuitJsonDocument,
180
- validateCircuitJsonDocument,
181
- } from './formats/circuit-json/serializer';
182
-
183
- export type { CreateComponentArgs, DocumentCommand, EditorCommand, EditorState } from './editor';
184
- export {
185
- applyDocumentCommand,
186
- applyEditorCommand,
187
- buildComponent,
188
- canRedo,
189
- canUndo,
190
- createEditorState,
191
- resetEditorState,
192
- tidyDocumentLayout,
193
- } from './editor';
194
- export type { TidyLayoutOptions } from './editor';
195
-
196
- export type { Bounds } from './preview/bounds';
197
- export { computeComponentBox } from './preview/box-layout';
198
- export { computeDocumentBounds, viewBoxString } from './preview/bounds';
199
- export { colorForKind } from './preview/colors';
200
- export type { SymbolDef } from './preview/symbols';
201
- export { symbolFor, COMPONENT_KINDS } from './preview/symbols';
202
- export type { HangingEndpoint } from './preview/hanging';
203
- export { findHangingEndpoints } from './preview/hanging';
204
- export { findJunctions } from './preview/junctions';
205
- export { computeLabelTextBoxLayout, shouldRenderLabelTextBox } from './preview/label-layout';
206
- export type { Port, WireBodyHit } from './preview/ports';
207
- export { collectPorts, findNearestPort, findNearestWireBodyHit } from './preview/ports';
208
- export { buildRenderableWires } from './preview/renderable-wires';
209
- export { orthogonalPath, pointsToSvg } from './preview/routing';
210
- export { findSnap } from './preview/snap';
211
- export { findChainCorners, findWireChain } from './preview/wire-chains';
212
-
213
- export type {
214
- ControlState,
215
- ControlValue,
216
- DeviceInterfaceProvenance,
217
- ExternalControlAssignmentHint,
218
- ExtractedDeviceInterface,
219
- ExtractedDeviceInterfaceControl,
220
- JackAudioRole,
221
- JackPort,
222
- JackRole,
223
- Knob,
224
- KnobControlMode,
225
- KnobStep,
226
- KnobTaper,
227
- KnobValue,
228
- LedIndicator,
229
- LedValue,
230
- Panel,
231
- PanelMessage,
232
- SliderControl,
233
- SliderOrientation,
234
- SliderRange,
235
- SliderValue,
236
- SwitchControl,
237
- SwitchKind,
238
- SwitchValue,
239
- } from './panel';
240
- export {
241
- applyControlMessage,
242
- defaultControlState,
243
- extractDeviceInterface,
244
- extractPanel,
245
- isKnobPositionOnStep,
246
- isKnob,
247
- isLed,
248
- isSlider,
249
- isSwitch,
250
- knobStepSize,
251
- nearestKnobStep,
252
- PANEL_PROTOCOL_VERSION,
253
- snapKnobPosition,
254
- validateMessage,
255
- } from './panel';
@@ -1,39 +0,0 @@
1
- export type {
2
- ControlState,
3
- ControlValue,
4
- DeviceInterfaceProvenance,
5
- ExternalControlAssignmentHint,
6
- ExtractedDeviceInterface,
7
- ExtractedDeviceInterfaceControl,
8
- JackAudioRole,
9
- JackPort,
10
- JackRole,
11
- Knob,
12
- KnobControlMode,
13
- KnobStep,
14
- KnobTaper,
15
- KnobValue,
16
- LedIndicator,
17
- LedValue,
18
- Panel,
19
- PanelMessage,
20
- SliderControl,
21
- SliderOrientation,
22
- SliderRange,
23
- SliderValue,
24
- SwitchControl,
25
- SwitchKind,
26
- SwitchValue,
27
- } from './types';
28
- export { PANEL_PROTOCOL_VERSION } from './types';
29
- export { extractDeviceInterface, extractPanel } from './extract';
30
- export { isKnobPositionOnStep, knobStepSize, nearestKnobStep, snapKnobPosition } from './knobs';
31
- export {
32
- applyControlMessage,
33
- defaultControlState,
34
- isKnob,
35
- isLed,
36
- isSlider,
37
- isSwitch,
38
- validateMessage,
39
- } from './protocol';
@@ -1,15 +0,0 @@
1
- import type { Point } from '../model/types';
2
-
3
- export function orthogonalPath(a: Point, b: Point): readonly Point[] {
4
- if (a.x === b.x || a.y === b.y) {
5
- return [a, b];
6
- }
7
- const dx = Math.abs(b.x - a.x);
8
- const dy = Math.abs(b.y - a.y);
9
- const corner: Point = dx >= dy ? { x: b.x, y: a.y } : { x: a.x, y: b.y };
10
- return [a, corner, b];
11
- }
12
-
13
- export function pointsToSvg(points: readonly Point[]): string {
14
- return points.map((p) => `${p.x},${p.y}`).join(' ');
15
- }
@@ -1,17 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: analog-switch (one element of a CD4066-style bilateral switch)
4
- terminals: a (SVG -20,-10), b (SVG 20,-10), ctrl (SVG 0,20)
5
- Two contacts with a control input on the bottom — like an SPST but with electronic control.
6
- -->
7
- <g stroke-width="0.95">
8
- <line x1="-20" y1="-10" x2="-7" y2="-10"/>
9
- <line x1="7" y1="-10" x2="20" y2="-10"/>
10
- <line x1="0" y1="6" x2="0" y2="20"/>
11
- </g>
12
- <circle cx="-5" cy="-10" r="1.5"/>
13
- <circle cx="5" cy="-10" r="1.5"/>
14
- <line x1="-5" y1="-10" x2="5" y2="-10" stroke-dasharray="2 2"/>
15
- <rect x="-6" y="0" width="12" height="6" rx="1"/>
16
- <text x="0" y="-13" font-size="3.5" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">SW</text>
17
- </svg>
@@ -1,16 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: battery / DC supply
4
- terminals: + (SVG 0,-20), - (SVG 0,20)
5
- Long plate = +, short plate = -. Top lead is the + terminal.
6
- -->
7
- <g stroke-width="0.95">
8
- <line x1="0" y1="-20" x2="0" y2="-5"/>
9
- <line x1="0" y1="5" x2="0" y2="20"/>
10
- </g>
11
- <line x1="-7" y1="-5" x2="7" y2="-5"/>
12
- <line x1="-3" y1="-2" x2="3" y2="-2"/>
13
- <line x1="-7" y1="2" x2="7" y2="2"/>
14
- <line x1="-3" y1="5" x2="3" y2="5"/>
15
- <text x="-12" y="-4" font-size="6" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none">+</text>
16
- </svg>
@@ -1,21 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-35 -25 70 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: bbd (bucket-brigade delay — MN3007 / MN3008 / MN3205 family)
4
- terminals: vdd (-30,-20), vgg (-30,0), vss (-30,20), cp1 (0,-20), cp2 (0,20), in (-30,10), out1 (30,-10), out2 (30,10)
5
- DIP-8 style rectangle, "BBD" label and small bucket icon on the face.
6
- -->
7
- <g stroke-width="0.95">
8
- <line x1="-30" y1="-20" x2="-20" y2="-20"/>
9
- <line x1="-30" y1="0" x2="-20" y2="0"/>
10
- <line x1="-30" y1="20" x2="-20" y2="20"/>
11
- <line x1="-30" y1="10" x2="-20" y2="10"/>
12
- <line x1="0" y1="-20" x2="0" y2="-15"/>
13
- <line x1="0" y1="15" x2="0" y2="20"/>
14
- <line x1="20" y1="-10" x2="30" y2="-10"/>
15
- <line x1="20" y1="10" x2="30" y2="10"/>
16
- </g>
17
- <rect x="-20" y="-15" width="40" height="30" rx="2"/>
18
- <circle cx="-17" cy="-12" r="1.2" fill="currentColor" stroke="none"/>
19
- <text x="0" y="-3" font-size="6" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">BBD</text>
20
- <text x="0" y="8" font-size="3.5" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">MN3007</text>
21
- </svg>
@@ -1,16 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: bjt (NPN variant)
4
- terminals: collector (SVG 0,-20), base (SVG -20,0), emitter (SVG 10,20)
5
- -->
6
- <g stroke-width="0.95">
7
- <line x1="-20" y1="0" x2="-6" y2="0"/>
8
- <line x1="4" y1="-7" x2="0" y2="-20"/>
9
- <line x1="4" y1="7" x2="10" y2="20"/>
10
- </g>
11
- <circle cx="0" cy="0" r="11"/>
12
- <line x1="-6" y1="-5" x2="-6" y2="5"/>
13
- <line x1="-6" y1="-3" x2="4" y2="-7"/>
14
- <line x1="-6" y1="3" x2="4" y2="7"/>
15
- <path d="M 4 7 L -0.3 6.9 L 1.2 4.1 Z" fill="currentColor" stroke="none"/>
16
- </svg>
@@ -1,17 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: bjt (PNP variant)
4
- terminals: collector (SVG 0,-20), base (SVG -20,0), emitter (SVG 10,20)
5
- Arrow points INWARD (emitter -> base) to distinguish PNP from NPN.
6
- -->
7
- <g stroke-width="0.95">
8
- <line x1="-20" y1="0" x2="-6" y2="0"/>
9
- <line x1="4" y1="-7" x2="0" y2="-20"/>
10
- <line x1="4" y1="7" x2="10" y2="20"/>
11
- </g>
12
- <circle cx="0" cy="0" r="11"/>
13
- <line x1="-6" y1="-5" x2="-6" y2="5"/>
14
- <line x1="-6" y1="-3" x2="4" y2="-7"/>
15
- <line x1="-6" y1="3" x2="4" y2="7"/>
16
- <path d="M -6 3 L -1.7 3.1 L -3.2 5.9 Z" fill="currentColor" stroke="none"/>
17
- </svg>
@@ -1,13 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: capacitor (electrolytic variant)
4
- terminals: a/+ (SVG 0,-20), b/- (SVG 0,20)
5
- -->
6
- <g stroke-width="0.95">
7
- <line x1="0" y1="-20" x2="0" y2="-3"/>
8
- <line x1="0" y1="5" x2="0" y2="20"/>
9
- </g>
10
- <line x1="-8" y1="-3" x2="8" y2="-3"/>
11
- <path d="M -8 3 Q 0 7 8 3"/>
12
- <text x="-9" y="-6" font-size="7" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none">+</text>
13
- </svg>
@@ -1,12 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: capacitor
4
- terminals: a (SVG 0,-20), b (SVG 0,20)
5
- -->
6
- <g stroke-width="0.95">
7
- <line x1="0" y1="-20" x2="0" y2="-3"/>
8
- <line x1="0" y1="3" x2="0" y2="20"/>
9
- </g>
10
- <line x1="-8" y1="-3" x2="8" y2="-3"/>
11
- <line x1="-8" y1="3" x2="8" y2="3"/>
12
- </svg>
@@ -1,14 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: current-source
4
- terminals: + (SVG 0,-20), - (SVG 0,20)
5
- Arrow points toward + terminal (top) — direction of conventional current flow.
6
- -->
7
- <g stroke-width="0.95">
8
- <line x1="0" y1="-20" x2="0" y2="-9"/>
9
- <line x1="0" y1="9" x2="0" y2="20"/>
10
- </g>
11
- <circle cx="0" cy="0" r="9"/>
12
- <line x1="0" y1="5" x2="0" y2="-2"/>
13
- <path d="M 0 -5 L -3 0 L 3 0 Z" fill="currentColor" stroke="none"/>
14
- </svg>
@@ -1,22 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-35 -25 70 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: delay-ic (PT2399 digital echo IC)
4
- terminals: vcc (-30,-20), gnd (-30,20), vref (-30,-10), vco (-30,0), in (-30,10), out (30,-10), fb (30,0), da1 (30,5), da2 (30,10)
5
- DIP-16 footprint, "PT2399" label centered.
6
- -->
7
- <g stroke-width="0.95">
8
- <line x1="-30" y1="-20" x2="-20" y2="-20"/>
9
- <line x1="-30" y1="-10" x2="-20" y2="-10"/>
10
- <line x1="-30" y1="0" x2="-20" y2="0"/>
11
- <line x1="-30" y1="10" x2="-20" y2="10"/>
12
- <line x1="-30" y1="20" x2="-20" y2="20"/>
13
- <line x1="20" y1="-10" x2="30" y2="-10"/>
14
- <line x1="20" y1="0" x2="30" y2="0"/>
15
- <line x1="20" y1="5" x2="30" y2="5"/>
16
- <line x1="20" y1="10" x2="30" y2="10"/>
17
- </g>
18
- <rect x="-20" y="-22" width="40" height="44" rx="2"/>
19
- <circle cx="-17" cy="-19" r="1.2" fill="currentColor" stroke="none"/>
20
- <text x="0" y="-2" font-size="6" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">PT2399</text>
21
- <text x="0" y="8" font-size="3.5" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">echo</text>
22
- </svg>
@@ -1,12 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: diode (Schottky variant)
4
- terminals: anode (SVG 0,-20), cathode (SVG 0,20)
5
- -->
6
- <g stroke-width="0.95">
7
- <line x1="0" y1="-20" x2="0" y2="-5"/>
8
- <line x1="0" y1="4" x2="0" y2="20"/>
9
- </g>
10
- <path d="M -6 -5 L 6 -5 L 0 4 Z" fill="currentColor" stroke="none"/>
11
- <polyline points="-9,1 -7,1 -7,4 7,4 7,7 9,7"/>
12
- </svg>
@@ -1,12 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: diode (Zener variant)
4
- terminals: anode (SVG 0,-20), cathode (SVG 0,20)
5
- -->
6
- <g stroke-width="0.95">
7
- <line x1="0" y1="-20" x2="0" y2="-5"/>
8
- <line x1="0" y1="4" x2="0" y2="20"/>
9
- </g>
10
- <path d="M -6 -5 L 6 -5 L 0 4 Z" fill="currentColor" stroke="none"/>
11
- <polyline points="-9,2 -7,4 7,4 9,6"/>
12
- </svg>
@@ -1,13 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: diode
4
- terminals: anode (SVG 0,-20), cathode (SVG 0,20)
5
- Arrow points anode (top) -> cathode (bottom).
6
- -->
7
- <g stroke-width="0.95">
8
- <line x1="0" y1="-20" x2="0" y2="-5"/>
9
- <line x1="0" y1="4" x2="0" y2="20"/>
10
- </g>
11
- <path d="M -6 -5 L 6 -5 L 0 4 Z" fill="currentColor" stroke="none"/>
12
- <line x1="-7" y1="4" x2="7" y2="4"/>
13
- </svg>
@@ -1,20 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: flipflop (one half of a CD4013 dual D flip-flop)
4
- terminals: d (-20,-10), clk (-20,10), s (0,-20), r (0,20), q (20,-10), qbar (20,10)
5
- Rectangular gate body with D/CK on left, Q/Q̄ on right, set/reset on top/bottom.
6
- -->
7
- <g stroke-width="0.95">
8
- <line x1="-20" y1="-10" x2="-12" y2="-10"/>
9
- <line x1="-20" y1="10" x2="-12" y2="10"/>
10
- <line x1="12" y1="-10" x2="20" y2="-10"/>
11
- <line x1="12" y1="10" x2="20" y2="10"/>
12
- <line x1="0" y1="-20" x2="0" y2="-15"/>
13
- <line x1="0" y1="15" x2="0" y2="20"/>
14
- </g>
15
- <rect x="-12" y="-15" width="24" height="30" rx="2"/>
16
- <text x="-7" y="-7" font-size="4" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none">D</text>
17
- <text x="-9" y="13" font-size="4" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none">CK</text>
18
- <text x="7" y="-7" font-size="4" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="end">Q</text>
19
- <text x="9" y="13" font-size="4" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="end">Q̄</text>
20
- </svg>
@@ -1,12 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: ground
4
- terminals: t (SVG 0,0)
5
- -->
6
- <g stroke-width="0.95">
7
- <line x1="0" y1="0" x2="0" y2="4"/>
8
- </g>
9
- <line x1="-8" y1="4" x2="8" y2="4"/>
10
- <line x1="-5" y1="8" x2="5" y2="8"/>
11
- <line x1="-2" y1="12" x2="2" y2="12"/>
12
- </svg>
@@ -1,20 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: ic (opaque block — BBD, PT2399, regulator, OTA, codec/DSP)
4
- terminals: generic DIP-8 layout (4 left, 4 right)
5
- NOTE: catalog has no terminal map yet for opaque ICs; this is a layout placeholder.
6
- -->
7
- <g stroke-width="0.95">
8
- <line x1="-20" y1="-9" x2="-13" y2="-9"/>
9
- <line x1="-20" y1="-3" x2="-13" y2="-3"/>
10
- <line x1="-20" y1="3" x2="-13" y2="3"/>
11
- <line x1="-20" y1="9" x2="-13" y2="9"/>
12
- <line x1="13" y1="-9" x2="20" y2="-9"/>
13
- <line x1="13" y1="-3" x2="20" y2="-3"/>
14
- <line x1="13" y1="3" x2="20" y2="3"/>
15
- <line x1="13" y1="9" x2="20" y2="9"/>
16
- </g>
17
- <rect x="-13" y="-13" width="26" height="26" rx="2"/>
18
- <!-- Pin-1 indicator -->
19
- <circle cx="-9" cy="-9" r="1.2" fill="currentColor" stroke="none"/>
20
- </svg>
@@ -1,19 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: ic (generic opaque IC — DIP-8 layout)
4
- terminals: p1..p4 left side (top→bottom), p5..p8 right side (bottom→top)
5
- -->
6
- <g stroke-width="0.95">
7
- <line x1="-20" y1="-15" x2="-13" y2="-15"/>
8
- <line x1="-20" y1="-5" x2="-13" y2="-5"/>
9
- <line x1="-20" y1="5" x2="-13" y2="5"/>
10
- <line x1="-20" y1="15" x2="-13" y2="15"/>
11
- <line x1="13" y1="-15" x2="20" y2="-15"/>
12
- <line x1="13" y1="-5" x2="20" y2="-5"/>
13
- <line x1="13" y1="5" x2="20" y2="5"/>
14
- <line x1="13" y1="15" x2="20" y2="15"/>
15
- </g>
16
- <rect x="-13" y="-18" width="26" height="36" rx="2"/>
17
- <circle cx="-9" cy="-15" r="1.2" fill="currentColor" stroke="none"/>
18
- <text x="0" y="2" font-size="5" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none" text-anchor="middle">IC</text>
19
- </svg>
@@ -1,11 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: inductor
4
- terminals: a (SVG 0,-20), b (SVG 0,20)
5
- -->
6
- <g stroke-width="0.95">
7
- <line x1="0" y1="-20" x2="0" y2="-10"/>
8
- <line x1="0" y1="10" x2="0" y2="20"/>
9
- </g>
10
- <path d="M 0 -10 A 3 2.5 0 0 1 0 -5 A 3 2.5 0 0 1 0 0 A 3 2.5 0 0 1 0 5 A 3 2.5 0 0 1 0 10"/>
11
- </svg>
@@ -1,16 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: jack (Input variant — TS phone jack)
4
- terminals: tip (SVG 0,-20), sleeve (SVG 0,20)
5
- -->
6
- <g stroke-width="0.95">
7
- <line x1="0" y1="-20" x2="0" y2="-3"/>
8
- <line x1="0" y1="3" x2="0" y2="20"/>
9
- </g>
10
- <!-- Plug barrel -->
11
- <rect x="-15" y="-7" width="6" height="14" rx="1"/>
12
- <!-- Tip and sleeve rods -->
13
- <line x1="-9" y1="-3" x2="0" y2="-3"/>
14
- <line x1="-9" y1="3" x2="0" y2="3"/>
15
- <text x="-12" y="-11" font-size="5" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none">INPUT</text>
16
- </svg>
@@ -1,16 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="-25 -25 50 50" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">
2
- <!--
3
- kind: jack (Output variant — TS phone jack / Speaker)
4
- terminals: tip (SVG 0,-20), sleeve (SVG 0,20)
5
- -->
6
- <g stroke-width="0.95">
7
- <line x1="0" y1="-20" x2="0" y2="-3"/>
8
- <line x1="0" y1="3" x2="0" y2="20"/>
9
- </g>
10
- <!-- Mirrored plug barrel -->
11
- <rect x="9" y="-7" width="6" height="14" rx="1"/>
12
- <!-- Tip and sleeve rods -->
13
- <line x1="0" y1="-3" x2="9" y2="-3"/>
14
- <line x1="0" y1="3" x2="9" y2="3"/>
15
- <text x="2" y="-11" font-size="5" font-family="ui-sans-serif, system-ui, sans-serif" fill="currentColor" stroke="none">OUTPUT</text>
16
- </svg>